Before I was writing Flutter code, I spent years as a network administrator — dealing with connectivity issues, unreliable networks, and environments where "just call the API" was never a safe assumption. That background changed how I think about app development entirely.
When I moved into building apps, offline-first stopped being a nice-to-have and became my default mindset. If a network admin's whole job is planning for connections to fail, why would I build an app that falls apart the moment it does?
A few things I've picked up building offline-first apps in Flutter:
Treat local storage as the source of truth, not a cache. Design around "what does the app do with zero connection" first, then layer sync on top — not the other way around.
Don't assume a sync will ever happen. Some users may never reconnect for hours or days. The app has to be fully usable in that state, not just "gracefully degraded."
Bundle what you can. Content, assets, anything static — ship it with the app instead of fetching it, especially if your users are in low-connectivity regions.
It's a different kind of discipline than typical API-driven development, but coming from a sysadmin background, it honestly feels like the more honest way to build for how networks actually behave in the real world.
Curious how others here approach offline support in their own apps — happy to swap notes.