Accessibility

What screen readers hear, and how toasts respond to system settings.

These work without configuration.

Screen readers

  • iOS: each toast is announced by VoiceOver when it appears. Errors interrupt what VoiceOver is saying; other types wait until it finishes.
  • Android: each toast is a live region, which TalkBack reads. Errors are assertive, so they interrupt; other types wait their turn.

Mark another toast as urgent with important. It interrupts like an error, and it goes ahead of the queue:

TSX
toast('Your session expires in one minute', { important: true });

A description is announced after the message.

A toast whose message is an element, not a string, has no text to announce. Give it one:

TSX
toast(<RichMessage order={order} />, { accessibilityLabel: `Order ${order.id} shipped` });

Toasts with an action or close button expose the message and each button separately, so VoiceOver and TalkBack can reach the buttons.

Rich toasts

ToastWhat a screen reader hears
ProgressThe message when it starts, and the outcome when it ends. The bar and percentage change too often to read, so they are hidden from it.
StepsEach step with its place: “Uploading, step 2 of 3”. The outcome is read on its own.
RepeatsThe message with its count: “No connection. 3 times”. Repeats do not announce again.
ExpandableA “Show details” button, reported as expanded or collapsed. The details are read once open.
Undo countdownAn “Undo” button. The draining ring is decoration.
NotificationIts title and body. The avatar is decoration.

Reduce Motion

Toasts fade in and out where they sit, with no travel or scaling, and icons arrive already drawn: no pop and no checkmark draw-in. The stack still moves up when a toast leaves, so the change is visible.

Reduce Transparency

On iOS 26, toasts use the opaque surface instead of Liquid Glass. On the web, the browser’s prefers-reduced-transparency setting does the same for the frosted glass.

Text size

Toast text follows the system text size, up to twice the default. At the larger sizes a toast takes up to six lines instead of three, so a message is not cut short. Change the size cap with the maxFontSizeMultiplier token, or remove it with null:

TSX
<Toaster theme={{ maxFontSizeMultiplier: null }} />

Haptics

Success, warning and error toasts play the system’s notification haptic when they appear, the pattern iOS and Android keep for the outcome of a task. Info, loading and plain toasts play none.

Turn them off for a Toaster, or for one toast:

TSX
<Toaster haptics={false} />
toast.success('Saved', { haptics: false });

Collapsed stacks

A stacked Toaster hides the content of toasts tucked behind the front one. While VoiceOver or TalkBack is running, the stack stays fanned out instead.

Last updated on Oct 26, 2026

Edit on GitHub