Simplify your stack and build anything. Or everything.
Build tomorrow’s web with a modern solution you truly own.
Code-based nature means you can build on top of it to power anything.
It’s time to take back your content infrastructure.

Motion and Loading

Payload's loading components communicate that work is in progress, while its motion helpers make layout changes easier to follow.

Import

1
import {
2
AnimateHeight,
3
FormLoadingOverlayToggle,
4
LoadingOverlay,
5
LoadingOverlayToggle,
6
ProgressBar,
7
ShimmerEffect,
8
StaggeredShimmers,
9
} from '@payloadcms/ui'

Loading overlay

Loading component example…

LoadingOverlay renders the visual loading surface directly. Use LoadingOverlayToggle inside the Admin Panel to update Payload's shared loading overlay instead.

FormLoadingOverlayToggle connects that shared overlay to a Payload form's loading and processing states. It must be rendered inside the Admin Panel's form and loading providers.

Staggered shimmers

Loading component example…

Use ShimmerEffect for one placeholder or StaggeredShimmers for a repeated set. Match their dimensions to the content they temporarily replace to reduce layout movement.

Route progress

Loading component example…

ProgressBar displays progress for transitions started within RouteTransitionProvider. Payload's Link component starts this transition automatically. Use startRouteTransition from useRouteTransition when navigation begins from another control.

The preview simulates a slower route so the delayed progress indicator remains visible long enough to inspect.

Other helpers

  • AnimateHeight animates a container when its content changes height.
  • ShimmerEffect documents the single-placeholder API in more detail.

Common props

These are the props most commonly used. See the exported types in @payloadcms/ui for the complete list.

LoadingOverlay

Prop

Type

Default

Description

show

boolean

true

Selects the entering or exiting animation state.

loadingText

string

Replaces the translated loading label.

animationDuration

string

'500ms'

Sets the CSS animation duration.

overlayType

string

Adds a type modifier to the overlay.

LoadingOverlayToggle

Prop

Type

Default

Description

name *

string

Identifies this source in the shared overlay.

show *

boolean

Adds or removes this source's loading state.

type

'fullscreen' | 'withoutNav'

'fullscreen'

Selects the shared overlay layout.

loadingText

string

Replaces the translated loading label.

StaggeredShimmers

Prop

Type

Default

Description

count *

number

Sets the number of shimmer placeholders.

height

number | string

Sets each placeholder's height.

width

number | string

Sets each placeholder's width.

renderDelay

number

500

Delays rendering to avoid flashing on fast work.

shimmerDelay

number | string

25

Staggers the animation between placeholders.

* An asterisk denotes that a prop is required.

Accessibility

Loading visuals should accompany, not replace, meaningful status text. Prevent interaction when an action cannot safely continue, and keep the loading state visible only while work is actually pending.

Was this page helpful?

Next

Navigation Controls