Local-first, finally

CRDTs grew up while we weren't looking. Notes on a working setup.

Placeholder draft — replace with the real essay.

For years “local-first” was a talk you watched, not an architecture you shipped. The tooling has quietly caught up: conflict-free replicated data types that don’t require a distributed-systems PhD to reason about, and sync layers that treat the network as an optimization instead of a dependency.

What the setup actually looks like

A local SQLite-backed store, a small sync daemon that reconciles changes opportunistically, and a UI that never once has to render a loading spinner for a write. Offline isn’t a fallback mode anymore; it’s just the default mode with networking as a bonus.

Where it still hurts

Schema migrations across replicas that haven’t synced in months. Debugging a merge that “shouldn’t” have happened. It’s not magic, it’s just a better trade-off than the one we were making before — and worth writing down while it’s still fresh.

← Previous · A week of Marcus Aurelius before emailNext · Things I overheard at the laundromat →