OILET

6 minute read · Updated 2026-09-05

Loading, Empty and Error States Are Part of the Page

Why the happy path is only one state of a production interface, and what every other state should communicate.

The Direct Answer

Every data-backed page needs distinct loading, first-use empty, filtered-empty, error and success states. Each state should explain what happened, preserve context and offer the safest useful next action.

Separate First Use From No Results

An empty account should teach the first successful action. A filter returning no matches should preserve the filter and offer to clear or adjust it. Using one generic empty illustration for both loses essential context.

Keep Loading Stable

Skeletons should approximate the final structure so content does not jump when it arrives. Avoid indefinite spinners where progressive or partial content is available.

Make Errors Recoverable

Explain whether retry is safe, preserve the user's input, expose a support reference when useful and avoid blaming the user for service failures.

Treat Permissions as a State

A user who can view but not edit should see why an action is unavailable. A user who cannot view the resource should receive a clear boundary without leaking sensitive record details.

Frequently Asked Questions

Should forms validate on every keystroke?

Usually validate on submit or after a field has been meaningfully completed. Immediate errors can interrupt entry before the value is valid.

Should an error state remove the page navigation?

Usually no. Preserve the application shell and enough context to retry, go back or seek help.

What should a filtered-empty state do?

Show that the dataset exists but the current query matched nothing, display active filters and offer a clear way to adjust or remove them.

Log in or sign up

Save what you configure, pick it up on another device, and download what you buy.

or

Accounts are not switched on yet. This is the design ahead of the backend.