On this page (1)
A design file typically contains one state per screen: full of plausible data, nothing loading, nothing broken. Then engineering builds the other six, at speed, without a designer, on the day of the deadline.
The seven
- Empty — nothing yet. An invitation to act, not an apology.
- Loading — and what to show if it takes eight seconds rather than one.
- Partial — some data arrived. Show it rather than blocking on the slowest item.
- Stale — cached and possibly wrong. Say when it was last fresh.
- Offline — a normal state, not an error.
- Error — what happened and what to do about it, in the interface's voice.
- Permission denied — who to ask, not just that you cannot.
An empty screen is an invitation to act. An error does not apologise, and it is never vague about what happened.
The cost of designing all seven is perhaps 20% more design time. The cost of not designing them is that a developer invents them under pressure, and your product's worst moments are the ones nobody art-directed.
Written by Design team. Filed under Design.
Further reading
All articles- Offline-first is a data model, not a cache
Mobile · 11 min read
- We quantised a model to 31ms and lost almost nothing
AI · 9 min read
- A performance budget you can actually hold
Engineering · 7 min read
Working on a problem like this one? Request a proposal.