Loading is a moment, not a gap
People don't hate waiting nearly as much as they hate not knowing. The difference between a pause and a void is information.
There’s an old story designers love about an office building whose tenants kept complaining that the elevators were slow. The fix, famously, wasn’t a faster elevator. It was mirrors in the lobby. People checked their hair, the wait stopped registering, the complaints dried up.
Whether it happened exactly that way hardly matters, because everyone who hears the story nods. We’ve all lived the mechanism. Waiting isn’t measured in seconds. It’s measured in what the seconds feel like.
A pause is not a void
A pause has edges. When a barista says “two minutes on that,” you settle in, check your phone, exist peacefully. You can see the far side of a pause. The void is different. It has no edges at all: the screen blanks, or worse, sits there unchanged, offering no evidence that anything anywhere is working on your behalf. Three seconds of pause is nothing. The same three seconds of void is a decision point, and the decision is usually the back button.
Most loading failures aren’t about length. They’re about silence. A tap that produces no acknowledgment. The button that may or may not have registered, so you press it again and now you’ve paid twice. Silence from software reads as failure, every time, because working software has always made some kind of noise.
Restaurants figured this out generations ago. Bread on the table isn’t dinner, it’s acknowledgment, a signal that the kitchen knows you exist. Software that shows nothing while it works is a restaurant where the server takes your order and vanishes through a door you never see open again.
Designing the pause
Perceived performance is the polite term for all this, and some engineers hear it as spin, as if designing the wait were a trick you play instead of an improvement you make. It isn’t spin. The user’s experience of time is the only clock that was ever running. Making a wait feel shorter and making it be shorter are both real work, and the first one is usually cheaper.
Acknowledgment comes first. Within a tenth of a second of any action, something should visibly change. Not the result, just the receipt: pressed, heard, working on it. That alone converts most voids into pauses.
Skeleton screens earn their keep because they’re a promise about shape. Gray bars where the text will land tell you what kind of thing is coming and roughly how much of it, so your attention can plan. Spinners promise nothing beyond “something, somewhere, might be happening,” which is why they age so badly past the third second.
A spinner is a shrug; the progress bar is a promise.
Break the promise and the shrug starts looking honest. And progress bars break promises constantly. Everybody knows the bar that sprints to 90 percent and then parks there for the length of a commute, and everybody has learned the same lesson from it: the number was decoration. A fake bar is worse than no bar, because it doesn’t just fail to inform, it teaches a distrust that carries into every bar you show that person afterward.
The honest wait
If you can’t estimate, don’t fake precision. Say what’s happening instead. “Uploading: large files can take a minute” beats a lying number, because people extend real patience to processes that keep them informed and almost none to processes that go quiet.
Sometimes the honest answer is that the wait is long enough to leave. “We’ll email you when it’s ready” is a loading state. So is a queue position, an estimated time, a “safe to close this tab.” Each one treats the user’s time as real, which is most of the discipline right there.
None of this excuses being slow. Fast still wins, and no skeleton forgives a backend that takes eleven seconds to say hello. But zero-wait software doesn’t exist, which means somewhere in your product, right now, someone is staring at an interval nobody designed, drawing conclusions about everything else you make.
The wait is part of the product. It’s the only part people experience with their full, undivided attention.