route & fleet
Mobile workforce

Offline-First Design for Driver Apps

Why connectivity assumptions break delivery apps, what offline-first really requires, and how to test whether a vendor's claim is true.

Illustration: Offline-First Design for Driver Apps
Advertisement
Ad space · activate by adding your AdSense publisher ID to lib/manifest.js

Every driver app vendor says they work offline. Most mean "the app does not crash when signal drops". Genuine offline-first design is an architectural decision, and the difference is visible within a week of go-live.

Where connectivity actually fails

Not in remote countryside, mostly. In the places deliveries happen:

  • Loading docks and basements
  • Multi-storey car parks
  • Industrial estates with poor coverage
  • Inside large buildings — hospitals, warehouses, retail back-of-house
  • Rural lanes and valleys
  • Congested cells at peak times, where a connection exists but is unusable
  • Border areas, where roaming behaviour is unpredictable

The last two matter more than people expect. An app that handles no signal correctly may still hang on bad signal, which is a far more common condition.

What offline-first requires

Local data store as the primary source. The app reads and writes to a local database. Sync is a background process, not a prerequisite for the driver doing their job.

Full route data cached before departure. The entire manifest, customer details, access notes, product catalogue and prices, downloaded at the depot on wi-fi.

Local write with queued sync. Every action — completion, photo, signature, exception — is written locally and queued. The driver never waits for a network round trip.

Idempotent sync. Retried uploads must not create duplicates. This is where weak implementations fail: a driver completes a stop, the upload retries, and the office sees two deliveries.

Conflict resolution rules. If the office cancels a stop while the driver is offline completing it, what happens? There must be a defined rule, and the driver must see the outcome.

Graceful degradation. Features that genuinely need connectivity — live traffic, a call to a customer — should fail clearly, not hang.

Storage management. Photos are large. The app needs a policy for local retention, upload prioritisation and cleanup, or devices fill up mid-week.

Timeouts that are short. An app that waits 60 seconds for a response on a bad connection is worse than one that gives up in three and queues.

Advertisement
Ad space · activate by adding your AdSense publisher ID to lib/manifest.js

Sync design that works

Prioritise. Not all data is equal. Status updates and completions should sync before photographs; the office needs to know a delivery happened before it needs the image.

Chunk and resume. Large photo uploads must resume rather than restart when a connection drops mid-transfer.

Compress images on device. A full-resolution photograph is unnecessary for proof of delivery and expensive to transmit. Compress to a defined standard before queuing.

Opportunistic sync. Upload whenever connectivity appears, not on a fixed timer.

Wi-fi preference for bulk. Queue large items for depot wi-fi where the operation allows it.

Visible queue status. The driver should be able to see that six items are pending upload. Invisible queues produce anxiety and end-of-day re-entry.

Conflict scenarios to specify

Agree the behaviour for each of these before go-live:

ScenarioDecision needed
Stop cancelled centrally while driver is offline and completes itWhich wins, and who is notified
Price changed centrally after device downloadUse downloaded price or reject the transaction
Additional stop added while driver is offlineWhen and how it reaches the device
Driver edits a completed stop before syncAllowed, or locked after completion
Same stop completed on two devicesDetection and resolution
Device lost with unsynced dataRecovery path, and what is lost

That last one deserves a written procedure. Unsynced data on a lost device is gone; the operational question is how you reconstruct the day.

Evaluating a vendor's claim

Ask these, and require demonstrations rather than answers:

  1. Is the local store a full database, or a cache of recent screens?
  2. What is the maximum time the app can operate with no connectivity?
  3. How is duplicate submission prevented?
  4. What happens to a partially uploaded photograph?
  5. How does the driver know what is pending?
  6. What is the conflict resolution rule for a cancelled stop?
  7. How much local storage is required for a full day, including photos?
  8. What happens on app update mid-shift with unsynced data?

Question 8 catches out several products: a forced update that discards the local queue is a data loss event.

Advertisement
Ad space · activate by adding your AdSense publisher ID to lib/manifest.js

Frequently asked questions

How much local storage should we allow?

Enough for a full day's manifest plus photographs at your compression standard, with a comfortable margin — several gigabytes free is a reasonable planning figure. Devices that fill up produce failures that look like app bugs and are actually storage exhaustion.

Should drivers be able to work offline all day?

Yes, and some genuinely will. Design for it as the normal case rather than as an emergency, and the app will handle intermittent connectivity gracefully as a side effect.

What about live ETAs when the driver is offline?

Customer-facing ETAs degrade during an offline period; the system should extrapolate from the plan rather than showing nothing, and update when the driver reconnects. Tell customer service how this behaves so they can explain it.

Is a web app acceptable for drivers?

Progressive web apps can work offline with careful engineering, but native applications generally handle background sync, storage, camera access and power management better. Judge on demonstrated behaviour rather than on architecture preference.

How do we handle a device that never syncs?

Alert on it. A device with unsynced data older than a defined threshold should raise an operational alert, not sit silently. Most operations discover this requirement after their first lost day of data.

Nil Masferrer Jiménez · Editor

Nil writes and edits Route & Fleet. It is an informational reference compiled from public sources — vendor documentation, regulator publications and published industry research — not consultancy, and not based on first-hand experience of running a fleet. Corrections are welcome and get published.

How we research and review our articles

This article is editorially independent. Route & Fleet is funded by advertising displayed on the page; advertisers have no influence over our research, recommendations or conclusions. See our advertising disclosure.

Keep reading

Related articles

Mobile workforce

Designing Driver Apps People Can Actually Use

Interface design principles for apps used in a cab, in the rain, wearing gloves, under time pressure — and the specific mistakes that make good software.

17 July 2026 · 4 min read

Advertisement
Ad space · activate by adding your AdSense publisher ID to lib/manifest.js