There's a specific irony in field software that requires a live connection: the places field work actually happens — rural routes, basements, warehouses with metal shelving everywhere — are exactly where signal is weakest. An app that simply fails when it can't reach the server isn't a minor inconvenience out there. It's the app not working at the one moment it needed to.
What "offline-first" actually means in practice
It doesn't mean the app works identically with or without a connection — it means a specific set of actions (checking in, completing a task, logging a visit, submitting an expense, filling a form) don't simply fail when the network call can't complete. Instead, the action is queued locally on the device, the UI shows an honest "pending sync" state rather than pretending it already succeeded, and the queue drains automatically the moment connectivity comes back.
The queue, not the guess
The mechanism underneath is a local sync queue: each queued action is stored with everything needed to replay it later — the operation, the payload, the entity it belongs to. When the device detects it's back online, a background process drains that queue in order, calling the real API for each item exactly as if it had happened live. Nothing is silently dropped, and nothing is silently faked as successful before it actually is.
This isn't free — and it shouldn't pretend to be
Offline queuing adds real complexity: a check-in that queues offline needs a visibly different state from one that's confirmed, and the two need to reconcile cleanly once the real response comes back. The honest version of offline support shows that distinction to the user rather than hiding it — "pending sync" is a real, visible state, not an implementation detail swept under an optimistic UI that might turn out to be wrong.
Built well, a field employee never has to think about connectivity at all — they check in, the app confirms or queues it, and the data shows up correctly either way. That's the actual bar: not "works when there's signal," but "the field employee never notices the difference."
