1 min read
What "offline-first" actually takes: lessons from shipping Android apps
"Works offline" is easy to promise and easy to get wrong. Cashly, my expense tracker, keeps transactions, budgets and recurring bills available with no connection: local persistence first, CSV export, recurring schedules that fire without a server, and analytics charts rendered from local data fast enough for low-end devices.
Zenify, my habit tracker, takes the same approach for streaks and goals: everything readable and writable locally, sync never required to use the app.
The lessons that transfer
None of this is exotic. It is an ordering decision: local first, network second, and no silent dependency on a connection the user may not have.
- Design the local schema before the UI. Screens come and go; the data model is what offline mode lives or dies on.
- Treat every screen as readable offline by default, not as a special case you bolt on later.
- Optimize chart and list rendering for low-end hardware, because that is where local data volume shows up first.
- Test the airplane-mode path as a first-class flow, not an edge case.