Offline-first is the baseline
What it means in practice to build software that expects the connection to disappear, and why the pattern is worth the extra work.
Software written in places with reliable connectivity treats the network as present by default and handles its absence as an error state. Reverse that assumption and a lot of design decisions change.
Local first, server second
The device holds the truth until it can be reconciled. A user's action writes to local storage immediately and the interface responds without waiting for a round trip. Sync happens in the background, and the user is told where things stand rather than shown a spinner.
The hard part is conflict
Two people editing the same record while both offline is where naive implementations lose data silently. We keep a version on every record and, when two changes collide, we surface it to a human instead of picking a winner. Losing a customer's data quietly is far worse than asking someone a question.
- Every record carries a version and a last-modified timestamp.
- Queued actions are idempotent, so a retry cannot double-charge anyone.
- The interface always shows sync state: pending, synced, or needs attention.
- Conflicts go to a review queue, never to an automatic overwrite.
A spinner is a promise that something is happening. If the network is gone, it is a lie.
Is it worth the effort?
It adds real work to a build. It also removes the single largest category of support complaint we see, and it makes the product usable in places your competitors' software simply is not. For anything a person uses while moving around, the answer has been yes every time.
- #offline
- #mobile
- #architecture
Keep reading
Build for the phone people have, not the one on your desk
Most performance advice assumes a fast device on a fast network. Here is what changes when you design for a mid-range Android on patchy data.
ReadWorking togetherWhy software quotes double, and how to stop yours doing it
An honest account of what drives the cost of a build, written from the side of the table that produces the estimates.
Read