Skip to content
App development

Offline apps: When you need them and how synchronisation works

A salesperson drafts an order without internet access. Meanwhile, a colleague changes the price and reserves the last item. Reconnecting is not simply a matter of transferring both records. The app must decide what is valid, what needs confirmation and what requires a person’s judgement.

Offline apps: When you need them and how synchronisation works

01Start with the consequence of losing the connection

An app needs offline capability when losing the connection stops important work or puts unfinished data at risk. For each task, write down how long it can wait and what happens if someone continues with outdated information. Different parts of the same application will often need different rules.

A catalogue can show yesterday’s product photograph. A salesperson can draft an order without a connection. Reserving the last available item, however, needs a shared decision about availability. If two disconnected salespeople both see that last item, synchronising later cannot fulfil both promises to customers.

Record the actual working conditions: brief office outages, a full day without internet access, shared tablets or concurrent changes from several devices. The length of disconnection and the number of people changing the same records matter more than a general instruction to “make it work offline”. A simple internal dashboard may only need a clear error message and preservation of an unfinished form.

For a practical field-service example, see what mobile apps for technicians need to handle offline.

02Choose the scope: Reading, writing or confirmation

Android’s documentation distinguishes local reads from write strategies. The offline-first label does not mean an app can complete every change without a network. Replace the label with specific activities your users can perform.

ModeWhat the user can doWhat they need to know
Read a local copyOpen previously downloaded contentIts age and what has not been downloaded
Work on a local draftSave a draft or noteWhere it is saved and whether it reached the server
Defer processingPrepare a request for submissionThe server may reject it after reconnection
Confirm onlineObtain a binding shared outcomeThis step needs a connection

Assign an owner to each type of data. Prices might come from a central price list, notes originate on a device and approvals remain with the server. “The last saved version” is not a sufficient business rule. Someone may draft a discount offline, but should not show the customer an unverified manager’s approval.

03Design the journey of a single change

Describe the entire write journey: a person changes a value, the app saves it durably on the device, records a pending operation, submits it after reconnection and processes the server’s response. If local saving fails, the user needs to know before leaving the screen.

The list of pending operations is often called an outbox. Make the record and the instruction to transfer it later part of the same local save. Otherwise, a draft might appear on the phone without anything being responsible for sending it. A local copy used to display a screen is also different from the authority that grants a business approval.

Attachments follow their own journey. In an illustrative order, the text arrives before a sample photograph. Decide whether the office can open an incomplete draft and which attachment is required for the next step. Track incoming server updates separately: sending your own change does not mean the device has received everyone else’s changes.

A change is saved locally, queued, submitted and then confirmed or referred for correction after the server responds.
Local saving and server confirmation are separate steps.

04A retry must not become a second operation

The awkward case is a server that accepts a change but loses its response on the way back. The app cannot tell whether to retry. AWS describes assigning an operation a unique identifier: another attempt with the same ID must not repeat the effect. This property is called idempotency.

Distinguish a new request from redelivery of the original one. A new order gets a new identity; another attempt to send an existing order keeps its original identity. Agree how long the server retains this history in relation to the longest supported period of disconnection.

Increase the delay between attempts after temporary failures. Do not keep resending an invalid value or an operation lacking permission indefinitely. Move it to a state that requires correction and explain why. Dependent operations also need the correct order: adding a line cannot run ahead of creating its parent order. Include these requirements in the integration API design.

05Resolve conflicts according to what the data means

Two salespeople open the same draft. One changes the delivery address; the other changes the quantity. When they reconnect, you first need to know which version each started from. Without this information, it is easy to overwrite a change the other device has never seen.

  • Independent notes: Add separate records with their authors.
  • Different fields: Merge only if the combination remains valid for the business.
  • The same field: For important values, show both alternatives to an assigned reviewer.
  • Deletion followed by an edit: Decide whether to reject the change, restore a draft or request review.

A “last write wins” rule may be acceptable for a low-impact personal preference. Prices, stock and approvals usually need a reason why a particular change is valid. A phone’s clock alone is not a dependable ordering of business events. Record the resolution so the next synchronisation does not reopen the same dispute.

Sending does not mean approval, the latest write may not be valid, and local data is not a remote backup.
Set rules according to the meaning of data and the consequences of mistakes.

06Allow for device and browser limits

For web apps, do not treat a closed browser as a dependable transfer service. The Background Synchronization API is not supported universally. Provide a path that sends changes when the app is next opened, alongside a visible list of pending work.

Local storage has limits too. MDN documents storage quotas and eviction of web data. When choosing a web application, check the actual devices, browser modes and attachment volumes. An installed app icon is not evidence that the required behaviour will work.

Store the necessary subset of data rather than automatically copying the entire customer archive. OWASP requires protection of sensitive data stored by a mobile app. Add rules for the permitted offline period, separation between users and removal of access. A disconnected device cannot immediately receive a remote deletion instruction. The process owner must understand that boundary.

Our guide to mobile app security covers data stored on the device and protection of API access.

07Base the budget and acceptance on scenarios

A local database is only part of the cost. Version management, migration of saved data after an app update, rejected requests and device-specific diagnosis all add work. Ask who can discover why a change is waiting without requiring the user to email an entire customer record to support.

Choose one valuable activity and a clear boundary for the first release, such as drafting an order with online confirmation. Test lost responses, repeated submission, concurrent editing, full storage and an app update with pending changes. After reconnection, compare the business outcome, not just the green connection indicator.

In production, monitor the age of the oldest pending operation, unresolved conflicts and reasons for rejection. Assign someone to act on them. Offline capability is useful when people can continue working and the business subsequently receives an outcome it can understand and check.

08Frequently asked questions

Is offline mode the same as a cache?

No. A cache keeps copies for faster or later reading. Writing offline also needs change retention, transfer, server responses and rules for conflicting edits.

Can we confirm the last available place offline?

Not safely across independent devices without an additional mechanism. You can save a request or allocate limited capacity beforehand, but the reservation rule must fit the complete process.

Do we need a custom synchronisation engine?

Not necessarily. Test an existing product or database service against your conflicts, permissions and deletion rules. Automatic transfer alone does not guarantee a valid business result.

What happens if the device is lost before synchronisation?

Unsent information may be inaccessible or lost. Local storage is not a remote backup. Define checks for pending changes and a way to reconstruct unfinished work.

09Define offline behaviour before development

Send us the app’s main activity, the longest expected disconnection and an example of data edited by several people. Discuss your offline requirements with us so we can assess confirmation rules and the scenarios needed for acceptance.

LISTIFY teamWebsites, apps and marketing from Prague since 2008

More articles

All articles →
App developmentOctober 12, 2026 · 7 min read

How to build a SaaS product: From an idea to your first 100 paying customers

App developmentOctober 11, 2026 · 7 min read

20 UX rules to follow when designing a prototype

App developmentOctober 11, 2026 · 6 min read

Mobile apps for field technicians: What needs to work offline

Share this page

By email

Got an idea?

On a short call, we'll find out what you need and suggest the next step. Then you'll get a proposal with a fixed price and a timeline.

+420 771 166 199Mon to Fri, 8:30 a.m. to 4:00 p.m. (Prague time) · info@listify.cool

When should we call you?

Pick a day and a time window. We'll call you, and it takes about 15 minutes.

Day