Expressive loader

v1.0.0

Leveraging a branded expression, the expressive loader provides reassurance, guidance, and delight. The expressive loader is used as an alternative to the progress spinner, especially for longer loading times.

Stylized artwork of an expressive loader.

Considerations

Expressive

The expressive loader provides a branded experience, replacing traditional spinners to create a sense of faster loading during longer wait times.

Reassuring

To provide reassurance, the expressive loader uses support text to indicate that actions taken by users are being processed.

Quick

To portray responsive and quicker loads, the expressive loader's design utilizes visual momentum to indicate progression across page loading and user actions.

Anatomy

An expressive loader diagram is shown with 2 elements numbered: 1. Support text, 2. Bars.
  1. Support text
  2. Bars

Considerations

When to use

  • When navigating to a page where the visual design is mostly unknown ahead of time and a skeleton loader can’t be leveraged
  • For periods of longer loading where the user needs reassurance
  • When a user action is being processed and it is expected to perform multiple calls to load

When to consider something else

  • If the visual layout/format of the content being loaded is mostly known, a skeleton loader would be the better option
  • If content can be pre-loaded or optimized in another way, don’t default to the expressive loader because it is easier to implement

Properties

Bars only

The default expressive loader is the bars only variation. It is primarily used as a replacement for the traditional spinner, in order to help conceal loading speeds and make the experience feel visually faster.

Four lines that vary in size are shown in eBay logo colors.

Bars with large text

The bars with large text variation is utilized when support text is required to better inform users during longer loading periods. Common situations in which they are used include navigating to a page that is not fully known beforehand, loading a large set of data, or completing a purchase.

The bar loader is shown with large text above.

Bars with small text

Common actions, such as adding items to the cart, may use the variation with small text within bottom sheets if additional load time is required. Due to its smaller visual footprint, this variation is only used in bottom sheets. Text should appear at the beginning of the animation since this loader is launched by a specific user action.

The bar loader is shown with small bolded text above.

Behavior

Color

Expressive loaders work across both light and dark modes.

Expressive loaders are shown in light and dark modes. For both modes, the support text color is foreground.primary, and the colors for the bar are colore.core.blue.500, color.core.yellow.400, colore.core.green.500, and color.core.red.500.

Minimum and maximum width

Expressive loaders have a minimum width of 288px and maximum width of 343px across both native and web applications. The minimum size reflects our smallest supported breakpoint of 320px. The maximum size should be used across all other sizes including large screens. These widths are for the color bars only and do not account for the left and right padding.

Two expressive loaders with different widths. The minimum version shows color bars with a with a min width of 288px with 16px padding on each side. The maximum version shows color bars with a max width of 343px with 16px padding on each side.

Best practices

Support text

Do keep support text short and direct.

An expressive loader with ‘Hang tight’ messaging.

Avoid using text phrases that extend past the bars.

An expressive loader with ‘We’re loading all of your listings and favorites.’ messaging.

Do use the bars only version for quicker loading durations.

Don’t use support text when loading is expected to be faster. The exception is when using the loader in the bottom sheet for actions like “Adding item to cart”.

Video description: An expressive loader with support text is shown for a short duration and cut off when navigating the eBay app.

Do aim for a single line of support text.

An expressive loader with ‘Just a moment longer.’ messaging.

Avoid long phrases when possible. Translated content can naturally become longer and is able to wrap across two lines when needed.

An expressive loader with ‘Just a moment longer.
Hope you’re having a nice day! messaging, which wraps to two lines.

Styling

Do use the standard sizes of the expressive loader on desktop.

A standard size expressive loader.

Don’t extend the loading bars to the width of the screen on desktop or increase the size of the loader or text.

An expressive loader spanning the full width of the screen.

Specs

The Bars only expressive loader is shown with specs highlighted. The width of the loader is 343px with additional 16px padding on the left and right of the loader, which brings it up to a total width of 375px. The bars height is 6px. The padding between the bars is 4px. The bars have a 2px corner radius.

Bars only

The Bars with large text expressive loader is shown with specs highlighted. The height of the bars is 6px. The padding between the large text and bars is 24px. The large text has a height of 28px. The large text size is Subtitle 1, which is 20pt with a 28pt line height.

Bars with large text

The Bars with small text expressive loader is shown with specs highlighted. The height of the bars is 6px. The padding between the small text and bars is 16px. The small text has a height of 24px. The small text size is Title 3, which is 16pt with a 24pt line height.

Bars with small text