// PATCH №043 · DESIGN
When you spend time on an empty state, you usually do it for one of two reasons. First reason: the screen looks wrong without something there. Second reason: the user doesn’t know what to do next. Only the second reason is worth spending design time on.
The four kinds of empty
- Pre-onboarding empty — no data exists yet because the user just signed up
- Just-cleared empty — they finished their inbox / completed all tasks / hit zero
- Filtered empty — there’s data, but the current filter excludes all of it
- Error-disguised empty — actual fetch failure rendered as zero results
Each one wants a different message. The pre-onboarding empty needs a single, very specific call to action. The just-cleared empty wants a moment of acknowledgment, not a tutorial. The filtered empty needs to tell the user it’s the filter, not the content, that’s the issue. And the error-disguised empty should never reach production.
What to skip
Skip the illustration. Skip the inspirational quote. Skip the floating dashed-border placeholder card. The user did not open your dashboard to be entertained by an empty state. They came to do work; the empty state is the friction. Get out of their way.