Localfirst software has had a decade of manifestos and…

Local-first software has had a decade of manifestos and still no dominant stack

Ink & Switch's 2019 essay laid the pitch out cleanly: your data lives on your device first, sync is an add-on rather than a requirement, and multiple devices merge changes without a server arbitrating every write. CRDTs solved the theoretical merge-conflict problem years ago — Automerge and Yjs both work, and Figma's multiplayer engine proved the approach handles real production load. So why is almost nothing actually built this way. The honest answer is that CRDTs are great at text and structured documents and bad at anything resembling a relational schema. Foreign keys, uniqueness constraints, cascading deletes — none of that has a clean CRDT story, which rules out most line-of-business software, not just toy note-taking apps. The sync-engine startups trying to fix this (ElectricSQL, Zero, Replicache) each ship a different mental model for conflict resolution, and none of them has become the default the way Redux or GraphQL did in their categories yet. Meanwhile the actual shipping answer for "offline-capable app" is still the boring one: cache reads locally, queue writes, reconcile against a server that stays the real source of truth. That's offline-tolerant, not local-first in the Ink & Switch sense, but it ships product today instead of a research paper. Has anyone here actually shipped a real local-first app, not a demo, and what broke first once real users hit it?

0 replies