Mobile networks lie. Here's how I keep the UI honest when the connection drops mid-tap.
React NativeUXMobile
Pretend the network is hostile
On mid-range Android phones in real cities, a "successful" request still takes 2-5 seconds. The app has to act as if every tap might never reach the server.
Three rules I follow
1. **Optimistic by default.** Update local state immediately, then reconcile.
2. **Queue, don't lose.** Writes that fail go into a persistent outbox and retry with backoff.
3. **Show the truth.** A small "syncing" pill tells the user when the local view hasn't been confirmed yet.
The Pet Tinder example
Messages typed offline land in the conversation instantly, with a subtle status dot. The moment connectivity returns, the outbox drains and the dots flip green. No one notices the network died — except they notice the app felt fast.