| Hey HN, I built SyncKit after shipping two local-first projects (RestBolt and Graft) and realizing there's no simple way to add cross-device sync. 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 |