Most web applications are built assuming reliable Wi-Fi. The developer has fast broadband. The staging environment is on a local network. Testing happens in ideal conditions. Then the app ships to users who are nowhere near ideal conditions.
The users I build for work in warehouses with concrete walls that kill signal. They're on construction sites where the only internet is a phone hotspot that drops constantly. They're in rural areas where 3G is still common and 4G is a luxury.
Building for these users changed how I think about every technical decision.
Why "Perfect Wi-Fi" Assumptions Fail
The failure modes are predictable:
- Loading states that never resolve. A spinner that assumes the request will eventually complete. It won't. The user stares at it for 30 seconds, then closes the app.
- Lost form data. A user fills out a detailed form. Hits submit. Network drops. The request fails. The form resets. Everything is gone.
- Stale data presented as current. Cached data displays but there's no indication it might be outdated. The user makes decisions based on information that changed hours ago.
- Silent failures. An action appears to succeed because the UI updated optimistically. But the sync failed. The user doesn't know until much later when the data is wrong.
These aren't edge cases. For users in challenging network environments, they're the default experience.