| ▲ | danbitengo 7 hours ago | ||||||||||||||||||||||||||||||||||||||||
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 | |||||||||||||||||||||||||||||||||||||||||
| ▲ | jmoggr 5 minutes ago | parent | next [-] | ||||||||||||||||||||||||||||||||||||||||
> Automerge/Yjs require learning CRDTs 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! | |||||||||||||||||||||||||||||||||||||||||
| ▲ | mkl 2 hours ago | parent | prev | next [-] | ||||||||||||||||||||||||||||||||||||||||
The ReadMe says "Zero data loss with automatic conflict resolution (Last-Write-Wins)", bur doesn't LWW guarantee data loss? | |||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||
| ▲ | threatofrain 4 hours ago | parent | prev [-] | ||||||||||||||||||||||||||||||||||||||||
TLA+ checked! Whoa! | |||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||