⌘ K
English
UI patterns

Empty state UI design: guide the next step when content is missing

A practical framework for designing first-use, no-results, cleared-data, and error states with useful copy, clear actions, and context-aware visual treatment.

ScreenKits editorial team6 min read
Conceptual empty content screen with an outlined tray and an add button beside a populated list.
Conceptual editorial artwork; not a captured app interface.

A blank panel is ambiguous. Someone may wonder whether the app is loading, whether their search failed, or whether they need to add something. A useful empty state names what is happening and helps them decide what to do next.

Start by identifying the cause of the missing content. First use, no search results, intentionally cleared data, and a system error call for different messages and actions. The examples here are hypothetical design exercises, not product case studies or claims about performance.

Key takeaways

  • Classify why the content is absent before choosing copy, illustration, or action.
  • Keep loading and failure feedback distinct from a confirmed empty result.
  • Write a specific heading, a short explanation when needed, and a relevant next step.
  • Review the state in context, including accessibility, narrow layouts, and recovery paths.

1. Diagnose why the space is empty

Treat an empty state as a report about the product, not as a decoration opportunity. Ask what happened immediately before the screen appeared, what the system knows, and whether the person can change the situation. NN/g describes empty states as opportunities to communicate status, support learning, and provide pathways into key tasks. Those opportunities depend on correctly identifying the state first.

In particular, don’t display “No items” while a request is still running. Keep a loading indicator or skeleton visible until the result is known. If the request fails, explain the failure and recovery option. If it succeeds with zero items, say that no matching content exists. This distinction prevents people from mistaking a temporary delay or system problem for a real result.

StateWhat it meansUseful response
First useThe feature is ready, but the person has not added or created anything yet.Explain what belongs here and offer a direct way to create, add, or explore.
No resultsA search, filter, or date range completed successfully with no matches.Confirm the criteria produced no matches; suggest a relevant adjustment or clearing a filter.
Cleared dataThe person completed or removed the items that usually appear here.Acknowledge completion or the empty result without implying something is wrong; offer another task if useful.
ErrorThe system could not retrieve or display the expected content.State what failed in plain language and offer a recovery action such as retrying.
LoadingThe system has not determined whether content exists yet.Show progress or a loading treatment; do not announce an empty result prematurely.

2. Write copy that matches the cause

Use a heading to name the state and supporting text to explain what it means or how to proceed. Keep the heading scannable. Add a sentence only when it answers a real question. Apple’s writing guidance recommends clear next steps on blank screens, action-oriented labels, and direct error messages that explain how to fix the problem. Avoid cleverness that obscures meaning, vague headings such as “Nothing here,” or copy that blames the person.

For example, a hypothetical saved-items screen on first use might say “Your saved guides appear here” followed by “Save a guide to return to it later,” with a “Browse guides” button. A completed checklist could say “You’re all caught up” and offer “View completed tasks.” These examples describe different realities: one teaches how to populate a feature; the other confirms a successful outcome.

For a successful search with no matches, a hypothetical message could read “No projects match ‘orchid’” and suggest “Try a broader term or clear filters.” Preserve the query and make filter changes reversible where possible. For a network failure, write “Projects couldn’t load” with “Try again.” Avoid claiming there are no projects when the system has not been able to check.

  • Name the relevant object or criteria so the message makes sense out of context.
  • Use a verb on the button, such as “Create project,” “Clear filters,” or “Try again.”
  • Keep instructions next to the affected content and use text as well as color or imagery.
  • Avoid “Oops,” blame, and technical codes unless people need them to resolve the issue.

3. Make the next step useful, not automatic

Give an action when someone can reasonably change the situation or continue their task. First use often benefits from a create or add action; no results may benefit from clearing a constraint; an error may offer retry. A cleared inbox or finished workout may need no action at all. Don’t force a button into every state just to make the panel look interactive.

Keep recovery proportionate. A failed refresh usually calls for an inline explanation and retry, not a blocking alert. Apple recommends matching feedback to the importance of the information and reserving alerts for critical, actionable situations. For search, preserve the person’s work and offer sensible adjustments rather than silently changing the query. Material Design also suggests starter content, brief educational content, or clearly labeled best matches as alternatives when they genuinely help.

Use illustration only if it adds context, warmth, or recognition. It should not compete with the message or make people think a decorative image is interactive. A simple icon may be enough for a compact filter result; a first-use workspace could benefit from a small example of the kind of content it will hold. If starter content is included, make it easy to identify and remove.

  • Choose one primary action that directly addresses the cause.
  • Add a secondary help path only when it answers a likely follow-up question.
  • Use a quiet completion message when the empty result is good news.
  • Ensure an action remains understandable to keyboard and screen-reader users.

4. Review the whole state, not just the illustration

Inspect the state in the actual container: a full-screen first-use view, a small sidebar, and a filtered table have different space and hierarchy needs. Keep the message near the area it describes. Ensure it remains readable when text enlarges or wraps, and make the primary action easy to find without requiring color recognition. Test transitions too: loading to empty, loading to error, retry to success, and a filter change back to results.

A practical library review starts with a trigger and an expected recovery. For each pattern, record the state, heading, optional explanation, primary action, secondary route, and what happens after selection. Compare screenshots for useful structure and visual hierarchy, then check the product behavior in context; a static image cannot tell you whether an error is recoverable or whether a result is truly empty. Browse the ScreenKits UI library for visual references and explore all categories to find adjacent patterns.

  • Can a person tell whether the content is absent, still loading, or unavailable because of an error?
  • Does the message reflect the current query, filters, account, or completed task?
  • Does the action preserve useful input and lead to a visible outcome?
  • Does the state work at small sizes, with longer localized copy, and with assistive technology?
  • Can someone recover from an error or find a way to adjust an unsuccessful search?

Common questions

Should an empty state always include a call to action?

No. Include an action when it helps the person add content, adjust a search, or recover from a problem. A completed task or naturally empty view may only need a brief confirmation.

Is a no-results screen an error state?

Usually not. If search or filtering completed successfully, report that there were no matches and offer a useful adjustment. Reserve error language for a system failure that prevented the result from being determined or displayed.

What should appear while results are loading?

Use a loading treatment or progress feedback until the request completes. Show an empty result only after the system confirms that the successful response contains no matching items.

Sources & further reading

Turn inspiration into your next flow.

Browse real screens, compare patterns, and see how the pieces fit together.

Explore app screens