logoalt Hacker News

danbitengotoday at 2:55 PM2 repliesview on HN

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


Replies

mkltoday at 7:27 PM

The ReadMe says "Zero data loss with automatic conflict resolution (Last-Write-Wins)", bur doesn't LWW guarantee data loss?

show 1 reply
threatofraintoday at 5:15 PM

TLA+ checked! Whoa!

show 1 reply