FROM THE EXCEED IT BLOG
Offline-First Mobile Apps: How to Plan Reliable Work Without a Connection
Published

An offline-first app lets people continue selected work when a network connection is unavailable or unreliable. It does not mean every feature works indefinitely without a server. The important question is which tasks must remain possible, which information can be trusted locally and how the system recovers when connectivity returns.
For technicians, inspectors, delivery teams and travelling salespeople, these decisions can determine whether an app is usable in practice. A screen that works perfectly on office Wi-Fi may fail at the moment a user needs it most. Offline behaviour should be part of the initial workflow design, not a final enhancement added after release.
Define the tasks that must work offline
List essential actions separately from convenient ones. A field worker may need to read assigned jobs, complete a checklist and capture photos offline. Confirming a new card payment or retrieving an account balance may require a current server response and should be labelled accordingly.
Define the period of disconnected work you expect. An app designed for short interruptions has different storage and operational needs from one expected to work for several days. Identify when users can prepare their devices and how much information they need to download before leaving a reliable connection.
The Android offline-first architecture guide describes separating local and network data sources. For a business owner, the practical task is to specify the required offline journeys and the meaning of the information shown to the user.
Decide what data lives on the device
Keep enough information to complete the agreed work, but avoid copying an entire organisation's records merely because it is convenient. An inspector may need today's assigned sites and relevant asset history, rather than every customer's documents.
Determine how local data is refreshed, how long it remains available and what happens when a user signs out or changes organisations. If a job is reassigned while a device is offline, the app cannot know immediately. Define how that situation is handled at reconnection and what the user is told.
Attachments require separate planning. A long video, a set of high-resolution photographs and a small checklist have very different storage and transfer costs. Show download and upload progress where the difference matters.
Make pending changes visible
Users need to distinguish data saved on their device from data confirmed by the server. A clear “saved on this device, waiting to sync” state helps them understand what remains outstanding. Avoid a generic success message that implies the office has received information when it has not.
Use a queue for work that needs transfer, with visible failure and retry behaviour. If a technician completes the same form twice after uncertainty about submission, the system should not create two independent jobs. Agree how the application identifies repeated actions and relates them to the intended record.
The office view should also acknowledge incomplete synchronisation where appropriate. A manager seeing no update should not automatically conclude that the technician has done no work.
Choose conflict rules for each type of data
A conflict occurs when more than one actor changes information before those changes are reconciled. There is no universally correct rule that the latest timestamp should always win. Overwriting an important approval or a stock movement can lose business meaning.
Consider a job description changed by a dispatcher while a technician edits completion details offline. Those changes may be compatible because they affect different fields. Two people changing the assigned technician may require a single authoritative decision. A completed inspection should usually preserve the submitted evidence rather than disappear because another device sent an older version.
For each important record, state whether changes merge, whether one system has authority or whether a person must resolve the conflict. Provide enough history for that person to understand both versions. A conflict policy that exists only in a developer's code is difficult for operations to support.
Protect local information
Device storage needs the same deliberate data decisions as the server. Consider lost devices, shared phones, account changes and access to attachments. Use the platform's appropriate storage and authentication capabilities, and decide what information should never be retained offline.
Some controls depend on connectivity. For example, a revoked account cannot necessarily receive a new server instruction while completely disconnected. Agree the acceptable offline access period and the conditions for requiring a fresh sign-in. Do not promise immediate remote control over a device that cannot communicate.
These are requirements to discuss with the business and its security advisers. “The app has a password” is not a complete answer to how locally stored customer information is protected.
Plan the return to connectivity
Reconnection should be understandable and resilient. Large attachments should not prevent smaller critical updates from progressing without an explicit reason. If the network repeatedly drops, work should resume safely instead of restarting a fragile all-or-nothing process.
Show meaningful error messages. “Unable to upload this photo; your checklist is saved” tells the user something they can act on. A technical exception code without context does not. Provide a support reference where staff need help investigating a persistent problem.
The backend also needs protection against repeated requests and older app versions. An offline device may reconnect after a new server release. Define how long old versions remain supported and how the app handles a required update without losing pending work.
Test using real interruption scenarios
- Start a task online, disable connectivity midway and complete the required offline steps.
- Close and reopen the app before changes have synchronised.
- Reconnect through an unstable network during an attachment upload.
- Edit the same record on two devices and verify the agreed conflict behaviour.
- Reassign or cancel a job while one device remains offline.
- Change a user's access and test the documented offline-access boundary.
Repeat critical scenarios on representative devices, including those with limited free storage. The goal is not merely that the app avoids crashing; it must preserve a coherent record and tell users what happened.
Keep the first release bounded
Offline support increases the number of states the application must manage. Start with the specific workflow that needs it most. A field-service job card or delivery confirmation can be a useful first boundary, while live reporting and payment confirmation remain online.
Prepare sample records, expected disconnection periods, attachment sizes and conflict examples. Explore our mobile development service, logistics examples and acceptance-testing checklist. Those details allow the team to estimate reliable offline work rather than treating “works offline” as a single checkbox.