(no title)
danbitengo | 3 months ago
The problem: Existing solutions are either too complex (Automerge/Yjs require learning CRDTs) or too restrictive (Firebase isn't truly local-first, Supabase has no offline support - issue #357 has been open 4+ years with 350+ upvotes).
SyncKit is the middle ground: simple API, works offline-first, self-hostable.
Technical highlights: - TLA+ formal verification: 118,711 states checked, caught bugs before implementation - Rust → WASM core (48.9KB gzipped) - 700+ tests including 80 chaos tests (zero data loss) - Server: Bun/Hono WebSocket (SDK works in any JS runtime) - Production-ready: v0.1.0 on npm and Docker Hub
Known limitations (v0.1.0): - LWW only - advanced CRDTs (Text, Counter, Set) coming in v0.2.0 - React hooks only - Vue/Svelte adapters planned - Reference server is Bun (Node/Deno coming v0.3.0)
Happy to answer questions about the CRDT implementation, TLA+ modeling, or WebSocket architecture.
GitHub: https://github.com/Dancode-188/synckit npm: @synckit-js/sdk
mkl|3 months ago
danbitengo|3 months ago
jemmyw|3 months ago
I have one place where I'm thinking I might need a crdt due to the complexity of the data and how you collaborate with it.
People take my app offline for long periods of time then reconnect with 1000s of records to sync so my sync is backgrounded and built to deal with several mb of data in sqlite files.
Anyway I'm interested in taking a further look at your thing over the holidays to see if it's worth switching or making partial use of it.
jmoggr|3 months ago
I've been using Automerge for a while and haven't had to look at any CRDTs. To me this looks very similar to Automerge.
Neat project!
threatofrain|3 months ago
danbitengo|3 months ago
Happy to share more about the verification approach if you're interested!