Product design / Practical notes

SaaS Dashboard Empty States That Help Users Recover

A recovery action is useful when it keeps someone’s work intact and helps them continue. Start by deciding what they should not have to enter again.

Keep the content structure visible during recovery

Masteriyo’s course outline keeps the larger course visible while someone edits its content. That structure is useful when considering recovery: a failed edit should not require the author to rebuild the whole course.

For each interruption, I would name the work to preserve, the action that can be retried and where the author should return.

Masteriyo course outline groups lessons inside an Introduction section, with reorder, edit, duplicate and delete controls.
Masteriyo course outline groups lessons inside an Introduction section, with reorder, edit, duplicate and delete controls. Full original Figma frame; design content is sample data.

Inspect the original Figma frame (access may be required)

Keep the work that is already valid

The section editor below is one smaller task inside the course. If saving it fails, preserving the entered section information is a different concern from deciding whether the rest of the course is available.

Write down that boundary before adding a Retry button. The person should know what they are retrying and what is already safe.

Masteriyo section editing keeps section-level settings beside the course outline.
Masteriyo section editing keeps section-level settings beside the course outline. Full original Figma frame; design content is sample data.

Inspect the original Figma frame (access may be required)

Test a transition matrix

Test a transition matrix
ScenarioRecovery actionAcceptance question
No search matchesEdit or clear the queryDoes the query remain available to revise?
Conflicting filtersRemove one conditionCan the person see which condition changed?
Loading failedRetryIs valid context retained and the request outcome explained?
Setup completedReturn to the moduleDoes the new state reflect the completed prerequisite?
Access changedReload or request accessIs restricted context handled consistently?
New data arrivesRefresh or observe an updateDoes empty become loaded without a misleading intermediate result?

Keep focus and announcements useful

A changed result does not always need a focus jump. Keep the person near the control they are using unless the next task genuinely requires moving them. If a brief status changes without receiving focus, make that information available to assistive technology in an appropriate way.

W3C's status-message guidance distinguishes those updates from a change of context. Use it to review the behavior, then test the actual implementation rather than assuming an accessibility attribute is sufficient.

Prevent recovery from becoming a repeated mistake

A retry button needs a meaningful retry boundary. If the underlying prerequisite is still absent, repeating the same request may accomplish nothing. Explain the dependency or offer the action that can change it.

For record creation or other consequential operations, determine whether the first attempt may already have succeeded before offering another submission. The interface should not imply certainty when the request outcome is unknown.

Record the result at task level

Write a short observation: the query was retained, the person removed one filter, the result returned and focus remained on the relevant control. That is stronger evidence than marking the empty-state component complete because its spacing matches the design.

This article covers recovery verification. Use the taxonomy article to classify causes and the concise guide to write the message that introduces the recovery.

Review what a return action can recover

The piHub denial state offers Go Back. In an implementation review, test where that action leads after a direct deep link as well as after normal navigation. Browser history may not contain a useful permitted page.

That is a recovery requirement exposed by the design, not a reproduced defect in a live piHub service. The result belongs in the ledger only after the actual route and account conditions have been tested.

PiHub administrator access-denied screen gives the person an explanation and a Go Back action.
PiHub administrator access-denied screen gives the person an explanation and a Go Back action. Full original Figma frame; design content is sample data.

Inspect the original Figma frame (access may be required)

Continue reading

RELATED EXPLORATION

Classify the cause

RELATED EXPLORATION

Write a useful explanation

RELATED EXPLORATION

Review states and recovery

NEXT FILE / YOUR PRODUCT

Got a product in mind?

Let’s talk