Offline-First Mobile Apps, Explained
How sync, conflict resolution and local storage keep apps working without a signal.
Meera Pillai · · 5 min read
Connectivity is never guaranteed: lifts, basements, rural roads, crowded stadiums. An offline-first app treats the network as an optimisation, not a requirement. Here’s how we approach it.
Local data is the source of truth
The app reads and writes to a local database first, so the interface responds instantly whether or not there’s a connection. A sync engine moves changes to and from the server in the background.
Sync is a queue, not a request
Instead of calling the API directly, actions go into an outbox. When the device is online the queue drains in order, with retries and backoff. Each action carries an idempotency key so a retry never creates duplicates, which matters a lot for orders and payments.
Plan for conflicts up front
Two people editing the same record offline will happen. Decide the rule per field before you build:
- Last write wins for low-stakes fields like a display name
- Merge for lists such as tags or items in a basket
- Ask the user when money or legal data is involved
Tell people what’s happening
Small cues go a long way: a subtle “saved on this device” label, a pending badge on items waiting to sync, and a clear message if something fails after retries. Users stay calm when the app is honest about its state.
Test with the network off
We run every critical flow in airplane mode and on throttled networks before release. It’s the only way to find the edge cases that real users will hit.
Building something that needs to work anywhere? Talk to our mobile team.
