Most web apps follow the same pattern: user action → API call → server mutation → UI update. It works, but it comes with a cost: latency, offline brittleness, and a server that becomes the bottleneck for interactions that never needed to leave the device.
This talk makes the case for moving CRUD to the frontend through local-first architecture: keeping the primary data store in the browser (IndexedDB), making the UI instantly reactive, and treating server sync as a background concern rather than a hard dependency.
I'll walk through the real architecture behind prisma-idb, an open source Prisma-compatible IndexedDB client generator I've been building for over a year. It lets you run the same Prisma queries you'd write on a server directly in the browser, with full TypeScript type safety, a migration system, and an outbox-based sync layer for bidirectional server sync. The talk includes a live demo using the kanban board at kanban.prisma-idb.dev to explain the sync engine architecture step-by-step, built entirely on this stack, and draws from the real-world context of migrating MyFit, a fitness PWA with 500+ MAU, to this architecture.
We'll cover: how the generator works under the hood, how the migration system handles schema evolution without a server, how the outbox pattern enables conflict-tolerant sync, and crucially, the honest trade-offs. Local-first isn't a silver bullet. It's the right architecture for specific problems, and knowing when not to use it matters as much as knowing when to use it.
The local-first ecosystem has also matured in complicated ways. Replicache started under the Business Source License, moved to closed-source commercial licensing at GA, and is now in maintenance mode as the team shifts focus to a new product. RxDB has an open-source core, but the features most production apps actually need are behind a premium subscription. ElectricSQL was once positioned as a full bidirectional sync layer. The redesign turned it into a read-path-only engine, leaving developers who built on the original without the write-path guarantees they'd relied on.
This pattern matters. Infrastructure that sits between your users and their data shouldn't have a licensing expiry date. prisma-idb is MIT licensed and generates code that lives entirely in your project. No vendor lock-in, no pricing tier, no service dependency.