There are two kinds of client applications: The first kind has a “refresh” or “reload” button to make sure your app’s in sync with its server’s view of the world. The second kind is broken.
Of late, I have to deal regularly with several apps, notably including an emailer and a car-sharing service, that lack such a button. I can imagine why — a customer-focused product manager said “Steve Jobs taught us that fewer controls are better and we should just take care of making sure we’re in sync with the cloud. So lose the button.”
Except for, it doesn’t work. Apparently nobody in the world is smart enough to arrange for flawlessly reliable hands-off client/cloud synchronization. There are times when you just know that what you’re seeing on the screen is wrong and if the stupid app would just take your word for it that its world-view is stale and ask for a brain transplant from its server, things would be OK.
The car-share app is particularly aggravating, showing me a map dotted with nearby vehicles when I know for sure that this time of day I’ll be lucky if there’s even one within walkable distance. Since it totally refuses to sync, I have to switch to the Android “recents” screen and kill it. When I re-open the app, it’s OK.
Why might this happen? Well, maybe switching from WiFi to cell data (or vice versa) left some layer confused about network truth. Possibly, because your app was written in a programming language with multiple threads and shared mutable state (silly, silly programmer), the cache is malfunctioning. Maybe that same thing happened on the server. Or in the CDN. Or maybe there’s an obscure hiccup in a distant node_modules dependency that you’re tickling.
Dear product managers: Show some humility. When a customer really thinks your app is wrong and they know how to fix it, don’t get in their way.