The Empty State
The first screen a new account sees, treated as a designed surface rather than a blank.
The problem it solves
A new account opens on a screen built to display data that does not exist yet. The user sees an empty table, a zero count, and no idea what to do next.
Every list view, board, inbox and dashboard has two designs. One is the state you spend your time on, full of rows. The other is the state every single user meets first, with nothing in it. Teams design the first one and let the second fall out of the CSS.
An empty state has one job. It has to answer three questions fast: what goes here, why would I want it, and what do I press. Most empty states answer none of them. They say No items yet and stop, which reads as a fault report rather than an invitation.
Blank
- No projects yet.
- You have 0 automations.
- Nothing to show here.
- An illustration of a cardboard box, and a grey Create button.
Designed
- Projects hold the work for one client. Most teams start with one and split it later.
- An automation moves a task when something changes. Start with: when a task is marked done, notify the channel.
- Your inbox is clear. New requests from the web form land here.
- One primary action worded as the outcome: Create your first project.
The four kinds of empty
Not all empty screens mean the same thing
- First run
- The user has never had data here. Teach what the surface is for and give one action. This is the only empty state that should carry education.
- Cleared
- The user finished everything. Reward it. An empty inbox is a win, so say so rather than showing a setup prompt.
- Filtered to nothing
- Data exists, the filter hides it. Say which filter is responsible and offer to clear it. Never show first run copy here.
- Blocked or broken
- A sync failed or permission is missing. Name the cause and the fix. Showing a friendly illustration hides a real error.
Confusing these four is the most common failure. A user who has filtered a full board down to zero results and is told they have no tasks yet will believe they lost their data. Route on cause, not on row count.
Worked example
Deskline, a support inbox
The team shipped a support tool where the inbox opened blank until the first email arrived, which for most trials took two days. They changed the first run state to a single fake ticket from the product itself, with a reply box that worked. Replying to it marked setup complete and showed the forwarding address. Nothing about the product changed. The screen stopped being a dead end.
Write the empty state copy before the full state. It forces you to say what the surface is for in one sentence. If you cannot, the feature has a naming problem that no amount of onboarding will cover.
When it fits
- Any surface that starts with zero rows: lists, boards, inboxes, dashboards, integrations.
- Products where the first useful screen depends on data the user has to supply.
- Teams who want onboarding gains without building a separate onboarding flow.
- Surfaces deep in the product that new users reach weeks later, long after any tour ended.
When it backfires
- When one empty component is reused for first run, filtered, and error states, so a broken sync reads as a friendly welcome.
- When the empty state: What a screen shows before there is any content in it. grows into a second onboarding, with three cards and a video, and it keeps appearing every time the list is legitimately empty.
- When the primary action needs setup the user cannot do yet, such as Create your first report before any data source is connected.
- When the copy sells the feature instead of explaining it, so the user learns the marketing line and still does not know what to press.
Products using it
Notion
New workspaces have long arrived with example pages already in them, so the sidebar is populated rather than blank.
Figma
A new file opens on an infinite canvas with the toolbar and shortcut hints visible, so the blank area still shows what the tools are.
Linear
Issue views distinguish between having no issues and having filtered them all out, and say which filter is active.
The psychology under it
The takeaway
Design the zero row version of every surface, and branch the copy on why it is empty rather than on the fact that it is.
Finished the teardown? Bank it and the day counts toward your run.
