Skip to content
Screens mode

Design a screen and its states

Create a screen, build it from your components, then design its loading, empty, error, denied and session-expired states, or record why one isn't needed.

On this page

Most visual bugs live in the states nobody drew: the spinner that jumps, the empty table with no way forward, the error that blames the user. In M1rror every screen carries its states, so they get designed and reviewed alongside the happy path.

The Screens workspace: a list of screens on the left, a dashboard screen on the canvas, and the inspector listing its states (default, loading, empty, error, denied and more).The Screens workspace: a list of screens on the left, a dashboard screen on the canvas, and the inspector listing its states (default, loading, empty, error, denied and more).
A screen with its states listed in the inspector.

Design the screen

  1. Create the screen

    In Screens mode select New screen in the Screens panel. Give it a Name and, optionally, the Route it lives at in your app.

  2. Build it from layers and components

    Open Layers and add Layout and content blocks or Components from your system. Use Move up and Move down to order layers, or Ask about this to bring a layer to the design agent.

  3. Check every size

    Switch between Phone, Tablet and Desktop, or choose All sizes to see them together.

  4. Design each state

    Choose a state with Screen state. A state that isn't designed yet shows <State> isn't designed yet with three ways forward:

    • Start from Default copies the default state so you can change only what differs.
    • Design it, or Ask the agent to design it. Agent-drawn states are badged Agent draft until you select Accept or Undo.
    • Not needed on this screen, with a short rationale in Inspect › States. Reviewers see the reason.
  5. Save

    Unsaved screens show a pencil on the Screens tab. Select Save, or Discard to drop your changes.

What each state is for

StateShow it whenGood practice
LoadingData is on its way.Keep the layout's shape so nothing jumps when content arrives.
EmptyThere is nothing yet.Say what will appear here and offer the one action that fills it.
ErrorSomething failed.Say what happened, whether work was kept and what to do next.
DeniedThe person can't see this.Say who can grant access instead of a blank page.
Session expiredThe sign-in ran out.Keep their work and let them sign in again in place.

Our post on designing every state goes deeper.

Review it

States travel with the screen into a release, so reviewers see them too. See Send a release for review.

Last updated

Edit this page on GitHub