top | item 46326813

(no title)

danbitengo | 2 months ago

Hey HN, I'm Daniel, creator of SyncKit.

I've been obsessed with the Ink & Switch "Local-First Software" vision for some time now—apps that work offline, feel instant, and give users control of their data. But every time I tried to build a local-first app, I hit the same wall: integration complexity.

The existing CRDT libraries (Yjs, Automerge) are incredible—they pioneered the algorithms that make local-first work. Kevin's optimization work on Yjs is masterful, and Automerge changed how I think about distributed systems.

But they're designed as modular primitives. You compose networking, storage, and conflict resolution yourself. That flexibility is powerful for complex systems, but it creates what I call the "Day 1 problem" for local-first: you spend 3 days wiring infrastructure before writing features.

I built SyncKit to solve this.

Different philosophy: Where Yjs gives you powerful primitives (build your own local-first stack), SyncKit gives you a pre-wired local-first database. Persistence, sync, presence—built-in, not plugins.

The technical approach: - Rust core with zero unsafe blocks (you can grep the codebase)

- TLA+ verified (explored 6.5M states to prove correctness)

- 154KB bundle (everything compiled together)

- 1,081 tests, 80 chaos tests

Performance: Competitive within 1-2ms of Yjs for standard ops. The win is local-first DX - one package that handles offline, sync, and conflict resolution.

What's included: - Rich text editing (Fugue algorithm for non-interleaving edits)

- Live cursors & presence

- Undo/redo (CRDT-native)

- IndexedDB persistence

- React/Vue/Svelte adapters

Built this in Nairobi, 9pm-3am. v0.1.0 got 601 stars in 3 weeks which honestly shocked me.

Try it live: https://synckit-demo.netlify.app GitHub: https://github.com/Dancode-188/synckit

Happy to answer questions about the TLA+ verification or the local-first architecture choices.

discuss

order

No comments yet.