Jazz – Apps with Distributed State
Overview & Concept
- Jazz is presented as a local-first, distributed state framework built on CRDT-backed “collaborative values” with end-to-end encrypted sync.
- Acts like a distributed database: clients mutate local state, sync via a mesh of servers or self-hosted nodes, and achieve eventual consistency.
- Aims to make offline-first, real-time collaborative apps easy, with React bindings as a thin wrapper over core TypeScript APIs.
Reliability, Demos & UX Issues
- The public chat demo briefly broke under usage; initially blamed on a large message, later on another bug. It was quickly patched, but raised concerns about robustness.
- The homepage’s embedded chat/iframe caused browser history to “hijack” the back button in Firefox/Safari; this was acknowledged and fixed.
- Some users see such issues as normal for an early-stage launch; others view them as undermining confidence.
Architecture, Features & Comparisons
- Sync is peer-to-peer at the protocol level but typically goes through a central mesh for persistence and offline device syncing.
- Compared with Firebase/Convex: similar “no-backend” goal, but local-first, CRDT-based, and cryptography-driven permissions.
- Compared with InstantDB/Meteor/PartyKit: positioned more as encrypted document/collaborative data sync than as a traditional queryable DB or room-based websocket layer.
- Some key features (cursors, DB interop, migrations, richer media/presence) are marked “coming soon,” which worries some as they are central for serious apps.
Security, Privacy & Data Location
- Data is end-to-end encrypted; the mesh sees only encrypted edits plus metadata.
- A simple sync server and parts of the mesh are open source; self-hosting is supported.
- European data routing is discussed (London cache, Prague main server), with plans to keep regions separable; metadata may still be sensitive.
- Third‑party security audits are planned but not yet completed; some see “open source” as insufficient without independent review.
Pricing & Self‑Hosting
- Hosted “Mesh Pro” charges primarily by “sync‑minutes,” which several find too expensive or misaligned with how they price apps.
- Running your own sync node is described as straightforward (
npx jazz-run sync), with thread participants debating whether DIY costs would actually be low.
Languages, Ecosystem & Use Cases
- Core is TypeScript; React, Node, and experimental React Native support exist.
- Svelte and Rust bindings are planned; Dart/Flutter, Vue, Python, Go, etc. are requested but not prioritized yet.
- Real-world apps (e.g., a Notion-like product and others) already use Jazz; this reassures some that it’s not just a toy.
Modeling, Validation & Migrations
- CoValues are intended to be small, linked units to support granular sync and pagination.
- Permissions rely on group roles and composition of CoValues with different access rules.
- Complex validation and schema evolution are acknowledged as hard and currently underdeveloped; guidance and guardrails are “coming soon,” which some find concerning.
- Deletion is typically tombstoned; full erasure for GDPR-like requirements is planned but not fully implemented.