A mobile app fails in ways that a web page does not. The system ends the app. The signal drops in the middle of a request. Old versions stay on phones for months.
Each full case has a failure table near the end. I put the failures in one list here, so you can ask a simple question: where did I handle a lost reply? Each entry has one plain sentence and the sections that handle it. Open a section to see what the user sees and what the fix is. The words at the end of each entry link to the glossary.
Requests and replies
Lost acknowledgement
The server did the work, but the reply was lost, so the app does not know what happened.
- Chat app 4.1: send path.
- Booking app 4.1: the charge.
- Photo and file sync 4.1: upload.
- News feed 4.2: the pending like.
- Idempotency keys guide: the question.
Words: acknowledgement, idempotent, idempotency key, outbox.
Duplicate send and duplicate delivery
The same message, event or request happens twice, after a retry or a double tap. Only one copy may count.
- Chat app 2: data.
- Push SDK 4.2: push is a hint.
- Analytics SDK 4.1: batches and retry.
- Image loading 4.1: coalescing.
- Pagination library 4.2: load engine.
Words: dedupe, unique index, upsert, request coalescing.
Permanent rejection
The server says no for good, so a retry can never work. The app must stop and tell the user.
- Chat app 4.1: send path.
- News feed 4.2: the pending like.
- Analytics SDK 4.1: batches and retry.
- Booking app 5: failures and release.
Words: exponential backoff, jitter, outbox.
Out-of-order delivery
Updates arrive in a different order than the server sent them. The app must not show an old value as a new one.
- Chat app 2: data.
- Live ticker 4.2: when the link lies.
- Pagination library 4.1: data changes underneath.
- Video app 5: failures and release.
Words: sequence number, snapshot.
The phone and the system
Process death
The system ends the app while work is half done. Anything kept only in memory is lost.
- Chat app 3: structure.
- News feed 4.2: the pending like.
- Booking app 3: structure.
- Photo and file sync 3: structure.
Words: process death, cold start, WorkManager, outbox.
Background work that runs late
The system delays or stops background work, so a send or a sync runs late.
- Chat app 4.2: receive path.
- Analytics SDK 4.1: batches and retry.
- Photo and file sync 4.2: running the transfer.
- Background work guide: on Android.
Words: Doze, WorkManager, foreground service, BGProcessingTask.
Late or lost push
A push can arrive late, arrive twice or never arrive. Treat it as a hint, not as the data.
- Chat app 4.2: receive path.
- Push SDK 4.2: push is a hint.
- Offline-first guide 5: the five mistakes.
- Background work guide: on iOS.
Words: silent push, FCM, APNs.
Dead connection that looks alive
A connection stays open but delivers nothing, or the phone joins a network that has no internet.
- Live ticker 4.2: when the link lies.
- Live ticker 5: failures and release.
- Public transport app 3: to 5 in short.
Words: heartbeat, captive portal, WebSocket, stale data.
Low memory or storage
The device runs low on memory or space, so the app must free data without breaking the screen.
- Image loading 4.2: decode and memory.
- Image loading 5: failures and release.
- Analytics SDK 4.1: batches and retry.
- Pagination library 5: failures and release.
Words: downsampling, bitmap.
Time and stale data
Clock and time zone errors
A phone clock is wrong, the user changes the date, or one time means different moments in different places.
- Booking app 4.2: the hold and the clock.
- Analytics SDK 2: data.
- Travel plans app 4.1: what 10:00 means.
- Public transport app 2: data.
Words: monotonic clock, sequence number, last-writer-wins.
Stale cache
The app shows saved data that may be old. The user should see its age, or fresh data should replace it safely.
- News feed 4.1: refresh and paging.
- Live ticker 4.2: when the link lies.
- Public transport app 2: data.
- Image loading 2: data.
Words: stale data, snapshot, cache key, source of truth.
Long offline gap and expired cursor
The phone was away for days or weeks. The server may no longer accept its saved place.
- Chat app 5: failures and release.
- Travel plans app 4.2: coming back after weeks.
- News feed 5: failures and release.
- Pagination library 2: data.
Words: cursor, snapshot, tombstone, outbox.
Conflicting edits
Two people, or two copies of the data, change the same thing. The app must decide which change wins.
- Travel plans app 2: data.
- Travel plans app 4.2: coming back after weeks.
- Photo and file sync 6: follow-ups.
- Offline-first guide 4: conflict resolution.
Words: last-writer-wins, CRDT, tombstone, optimistic write.
Transfers, access and versions
Partial upload or download
A large transfer stops halfway. Starting again from zero would waste time and data.
- Photo and file sync 4.1: upload.
- Photo and file sync 5: failures and release.
- Travel plans app 4.2: coming back after weeks.
- Video app 4.2: downloads.
Words: resumable upload, hash, WorkManager.
Token or link expiry
A token or a signed address stops working while the user is still using it.
- Photo and file sync 5: failures and release.
- Video app 2: data.
- Video app 5: failures and release.
- Live ticker 6: follow-ups.
Logout and shared phones
Another person signs in on the same phone while old data or old work is still there.
- Push SDK 4.1: logout.
- Travel plans app 5: failures and release.
- News feed 6: follow-ups.
- Video app 6: follow-ups.
Words: outbox, push address.
Old app versions and bad releases
People keep old versions for months, so the server sees old requests. A store can pause a rollout but cannot take a build back.
- Chat app 5: failures and release.
- Photo and file sync 5: failures and release.
- Booking app 5: failures and release.
- Push SDK 5: failures and release.
Words: kill switch, remote flag, staged rollout, rollback.
Where to go next
The other side of this page is Compare. It sets the design choices side by side, such as polling against push, and offset against cursor. If you are new, begin at Start here. Did you find a failure that is missing, or a wrong link? Open an issue.
Written by Manuel Lorenzo. The site is drafted with AI assistance and edited and reviewed by him.