Stop Designing Only the Happy Path
The screens designers skip are the ones users encounter most often. Empty states error messages loading skeletons and overflow edge cases aren't afterthoughts — they are the actual product experience. This post makes the case for designing every state not just the ideal one.
7 min read

The Screens You Skip Are the Ones Users See
Open any product for the first time. What do you see? An empty dashboard. A blank inbox. A search with no results. A form you haven't filled yet. These empty and in-between states are the first impression for every new user — and most designers never design them.
We prototype the dashboard with beautiful sample data. We demo the profile with a perfect headshot and bio. We present the inbox with three neatly formatted messages. None of this reflects what the user actually experiences on day one.
The Six States Every Component Needs
Every component in a product interface exists in multiple states. At minimum you should be designing:
Empty — No data yet. What does the user see and what action should they take?
Loading — Data is being fetched. Skeleton screens content shimmer or spinner?
Partial — Some data exists but not all. One item in a list. One field filled in a form.
Complete — The happy path. Full data rendered as intended.
Error — Something went wrong. Network failure validation error permission denied.
Overflow — Too much data. A name with 47 characters. A list with 10000 items. A description that's three paragraphs long.
If your Figma file only shows the complete state you've designed one sixth of the actual interface.
Empty States Are Onboarding Moments
An empty state isn't just a placeholder. It's an opportunity to guide the user toward their first meaningful action. The best empty states include:
A clear explanation of what will appear here once they take action
A specific call to action — not just a message but a button or link
Visual context that makes the empty space feel intentional not broken
Encouragement that reduces the anxiety of a blank canvas
Compare a dashboard that says No data available with one that says You haven't created your first case yet — start one now and you'll see your progress here. Same screen completely different experience.
Error States Build or Destroy Trust
How a product handles errors tells users everything about whether the team behind it cares about their experience. Generic error messages like Something went wrong please try again communicate nothing and solve nothing.
Effective error handling requires specificity and guidance:
What exactly went wrong — in language the user understands
Whether their data was saved or lost
What they should do next — retry edit their input or contact support
A tone that's helpful not robotic or dismissive
On a legal-tech dashboard I designed error states for every API failure point. Document upload failures showed exactly which file failed and why. Search timeouts suggested narrowing the query. Permission errors explained who to contact for access. Each error state was a design decision not a developer default.
How This Changes Your Design Process
Designing for every state takes longer upfront but saves enormous time downstream. When I started mapping every component to all six states on a dashboard project my Figma file size tripled. But development revisions dropped by half because engineers had a clear reference for every scenario.
If your prototype only shows the ideal scenario with perfect data and no errors you haven't designed the product. You've designed a screenshot. The real product lives in the states between — and that's where great designers separate themselves from good ones.
Join the newsletter
Be the first to read our articles.




