A developer spent four months building a React, Node, Postgres, Redis, GraphQL stack, then watched it fail in a Lisbon hotel room because the server was 3,000 miles away. That humiliation led him to local-first architecture. Not the blog-post kind. The kind you earn after shipping three production apps with it and ripping it out of two others where it was wrong.
The core argument is definitional and it matters: local-first is not offline-first, not a service worker, not a PWA. It is a data architecture where the client holds the primary copy, writes to a local database, and syncs in the background. The server becomes a sync peer, not a gatekeeper. The author traces this back to the 2019 Ink and Switch paper, which he dismissed at the time as impractical. He was right about the tooling. He was wrong about the idea. The Git analogy he uses to explain replicas versus requests is the clearest framing of this architecture you will find in a practitioner piece.
What makes this worth reading in full is not the conclusion but the counterarguments the author builds into the piece. He names the exact failure cases: analytics dashboards, payment processing, inventory systems, CRUD apps with five users and good Wi-Fi. He names a colleague, Sarah, who stopped him from wasting a seventh week on the wrong tool. He recommends starting with one feature, not a full rewrite. The spectrum-of-local-first framing, and the specific stack implications for React Query, Redux, and routing, are where the real engineering detail lives.
[READ ORIGINAL →]