// the find
Dancode-188/synckit
🚀 Local-first collaboration SDK for React, Vue, and Svelte. Batteries-included: Rich text, undo/redo, cursors, and presence.
A local-first sync SDK for React, Vue, and Svelte with a Rust/WASM core. It ships text CRDTs (Fugue + Peritext), presence, cursors, and undo/redo out of the box, targeting the class of apps that currently reach for Firebase or Yjs. At v0.3.0 with 661 stars and 22 forks, it is ambitious and technically serious, but adoption is thin enough that 'production-ready' should be treated as a claim, not a fact.
The Rust core is the real story here — zero unsafe blocks, TLA+ formal verification across five spec files, and benches that back up the sub-millisecond local operation claims. Most SDKs in this space skip formal verification entirely; finding three bugs with TLA+ before shipping is worth something. The Vue 3 and Svelte 5 (runes) adapters are first-class, not ports of React code — the svelte integration uses rune-based stores, which matters for anyone not on React. Bundle tiering is sensible: the 46KB lite build strips CRDT machinery for apps that only need basic LWW sync. Academic CRDT sourcing (Fugue from Weidner and Kleppmann, Peritext from Ink and Switch) means the algorithms are at least based on peer-reviewed work, not invented in-house.
Document-level sync uses Last-Write-Wins, not CRDTs. That is buried in the README between two checkmarks but it means concurrent writes to the same field lose data — the very problem this library promises to solve. If two users update the same task title offline, one update silently vanishes. The WASM boundary makes debugging ugly: errors from the Rust core surface as opaque runtime failures with no stack trace that maps to your application code, and the debugging story gets no mention anywhere in the docs. The Rust server is still on the roadmap, so the 'self-hosted, no vendor lock-in' pitch requires running a Bun, Python, or Go process — all of which add a dependency you probably did not want. No end-to-end encryption in the protocol: JWT auth controls who can connect, but the server sees all plaintext, which matters for anything handling sensitive user data.