Designing the loading state
Last updated: June 2026
Designing the loading state is the practice of shaping how users experience delays so that waiting feels shorter, more transparent, and less frustrating, even when actual performance cannot be improved.
The Principle
Users don’t judge speed solely by how fast something actually loads — they judge it by how it feels. Research on perceived performance shows that uncertainty makes waiting feel longer, while progress feedback, meaningful activity, and reduced anxiety make it feel shorter. Even moderate delays (around 2 seconds or more) reliably increase stress and perceived slowness.
Good loading states provide orientation (what is happening), expectation (how long it might take), and engagement (something useful or calming to look at). Skeleton screens, progress bars, animated illustrations, or contextual messages can all help. Poor ones leave users staring at a spinner with no information, amplifying frustration.
In my own building, I learned this through repeated testing. A backend process that took 4–6 seconds felt unbearable with a plain spinner. Adding a skeleton layout that filled in progressively, plus a light status message, made the same delay feel acceptable. The technical loading time hadn’t changed, but the user experience had. This taught me that loading states are not technical necessities — they are critical design surfaces.
Why It Matters for Design & Building
Loading states are inevitable, especially with network calls, complex queries, or AI generation. How we design them directly affects perceived performance, user patience, and overall satisfaction. A thoughtful loading state can make a slower product feel faster and more polished than a faster one with poor feedback.
As a Design Engineer, I now give loading states the same attention as primary interactions. In one analytics dashboard, replacing generic spinners with skeleton screens and estimated time messages reduced perceived slowness and user complaints noticeably. The change required almost no backend work but delivered a much calmer experience.
This principle is central to calm technology. Waiting is a moment of vulnerability. Honest, respectful loading design reduces anxiety and maintains flow. Poor design breaks immersion and creates low-grade stress. The honest practice is to treat every delay as an opportunity to show respect for the user’s time and attention.
Real-World Examples
Linear.app excels at loading states. It uses thoughtful skeleton screens that mirror the final layout, subtle animations, and clear status messages. Even when data takes a moment to load, the experience feels fast and polished.
Many older enterprise dashboards illustrate the opposite. A plain spinning wheel with no context or progress indication makes even short delays feel interminable, increasing user frustration and abandonment.
A reporting tool I worked on offered a mixed case. Original loading states were basic spinners. After implementing skeleton layouts, percentage progress where possible, and reassuring messages (“Crunching the numbers…”), users reported the tool felt significantly faster even though actual query times were unchanged.
References
- Nielsen, J. (1993). "Response Times: The 3 Important Limits." NN/g.
- NN/g: Skeleton Screens. nngroup.com
- Case, A. (2015). Calm Technology. O'Reilly Media.
- Wroblewski, L. (2008). Web Form Design. Rosenfeld Media.
- Nah, F. (2004). "A Study on Tolerable Waiting Time: How Long Are Web Users Willing to Wait?" Behaviour & Information Technology.
New entries are published every 2–3 weeks.
Follow along on X or LinkedIn to get notified.