Empty State

The Empty state component is used either when there is no content to display or when there is a problem with a part of the app.
The empty state component can show either an icon or illustration.

 

error state illustration 1

1. icon

error state illustration 2

2. Illustration


Usage

empty state illustration 1

Use this component as an Error state if a section of the app fails to load.
For example:

  • An energy usage chart fails due to a network or service error.
  • A dashboard cannot retrieve data.
empty state illustration 2

Use this component to provide an Empty state if no content exists yet.
For example:

  • A new OVO customer has no energy usage data.
  • A list or history view is empty because nothing has been created yet.
empty state illustration 3

Don’t use this component for inline form validation errors.
Use input error states and notifications to display form errors instead.

empty state illustration 4

Don’t use this component if only a single card cannot retrieve data in a dashboard of multiple cards. The error fallback card should only be used if an entire section of the app cannot be loaded.

empty state illustration 5

Do include an action and/or set expectations for what will happen next where possible.

empty state illustration 6

Where a link or action is included within the component, the drop shadow must be displayed on the card background to indicate interactivity. Otherwise, no drop shadow is displayed.


Writing an Empty State component.

Firstly, check to see if one of our 4 existing error handling patterns fits your required use case before writing a new error or empty state message. When writing an empty or error state, this is what to communicate:

Empty State

  • Explain why the space is empty.
  • Set expectations about what will happen next.
  • Provide a next step if possible.

Error state

  • State that something couldn’t load.
  • Provide retry guidance if applicable.

Character limits

Heading: 25–45 characters recommended, 60 characters maximum
Body text: 60–160 characters recommended, 200 characters maximum

 

Best practices

Do

  • Be clear and direct.
  • Use plain language.
  • Focus on what the user can do next (if possible).
  • Use a calm, neutral tone.
  • Frame empty states positively where possible.

Don’t

  • Blame the user.
  • Be overly technical like using raw error codes for example.
  • Be vague.
  • Overwhelm with instructions.
  • Use humor in error scenarios.

Examples

Do

No statements available

Your monthly statements will appear here once your first billing cycle is complete.

Do

Usage data is temporarily unavailable

We’re working to restore access. Please check back shortly.

Don't

You haven’t added anything

There’s nothing here because you haven’t created any data yet.

Don't

Error 501

An error occurred.


Available platforms

Platform

Available

Figma

v5+

Web (@ovotech/element)

App (@ovotech/element-native)

v5+