Skip to content

Toast

Toast reports what just happened without blocking the screen, then takes itself away.

On this page
  1. Preview
  2. Types
  3. States
  4. Properties
  5. Tokens
  6. iOS and Material 3
  7. Guidelines

Preview

Transient feedback that does not block input and takes itself away. On Android this is a Snackbar, on iOS a custom overlay.

Type Line at State Neutral, then Type Long at State Success320 wide, 36 and 96 tall, radius 24, dropShadow/sm
Title of toastTitle of toastA short line that confirms what just happened.

Both types are the same card. Line is one row with a title, a link action and a dismiss. Long adds a description under the title and stacks the two controls on the right.

Long is 96 tall, with the description wrapped to two lines. The link reads View, and the surface is bg/raised, the token for floating surfaces: white in light, one step lifted in dark.

Toast ships ten variants, Type by State. Source: Figma set Toast, read October 2, 2026.

Which types does Toast have?

Two: Line and Long, two shapes for two amounts of message. The type scale changes with them.

Type Line then Type Long, both at State Neutralicon 16 and 20, title 12/16 and 14/20
Title of toastViewTitle of toastA short line that confirms what just happened.View

The two differ in more than height. Line sets the title at 12/16 next to a 16 icon at stroke 1.5.

Long lifts it to 14/20 next to a 20 icon at stroke 1.75 and lets the description run to two lines, which takes the card to 96. Both titles are Regular.

Which states does Toast have?

Five: Neutral, Error, Success, Warning and Info, each with its own icon. State changes the icon and its color and nothing else.

Neutral, Error, Success, Warning and Info, at Type Linethe card stays bg/raised in all five, the icon changes
Title of toastViewTitle of toastViewTitle of toastViewTitle of toastViewTitle of toastView

Every state has its own icon: Neutral message-circle, Info info, Error circle-alert, Success circle-check-big and Warning triangle-alert.

The surface never changes: no tint, no colored border, only the icon. Info holds #155DFC in both themes while the link beside it moves to #2B7FFF, so two blues that match in light come apart in dark.

The dismiss x is fg/soft-500, #8E8E93, a documented product choice that measures 3.26:1 on a white card, above the 3:1 an icon needs. The Success icon is 2.28:1 on white, so the title must name the state and the icon never carries it alone.

In dark the View link is #2B7FFF on #242427 at 4.11:1, under the 4.5:1 that WCAG asks of small text.

In code, announce a toast in a polite live region, keep it on screen long enough to read, and pause its timer while it has focus or a pointer over it.

Properties

Two variant axes, then three booleans and two text properties.

Properties, property, type, default
PropertyTypeDefault
TypeVariant: Long, LineLong
StateVariant: Neutral, Error, Success, Warning, InfoNeutral
IconBooleantrue
Link ButtonBooleantrue
Dismiss IconBooleantrue
Title EditTextTitle of toast
DescriptionTextA short line that confirms what just happened.
Properties, part, what it is, size
PartWhat it isSize
ButtonA Button instance, Brand Link sm, label View71 x 36
Compact ButtonTransparent, holding an x32 x 32

Description is a property on both types even though only Long draws it, so setting it on a Line toast changes nothing. There is no Icon Swap property: the icon belongs to the State, and a different one means swapping the nested icon instance.

The Button instance is exposed, so its label is edited from the Toast.

There is no position, stacking or duration: where it sits, how long it stays and what a second arrival does are yours.

Tokens

Four for the card, one for the action and five for the icon. Two of the five do not theme.

Tokens, token, light, dark, applied to
TokenLightDarkApplied to
bg/raised#FFFFFF#242427The card, all ten variants
border/soft-100#E9E9EA#2F2F311px inside border
text/strong-950#0E0E0F#FFFFFFTitle
text/sub-700#48484A#C7C7CCDescription, Long only
brand/base#155DFC#2B7FFFAction label
fg/soft-500#8E8E93#AEAEB2Dismiss x
state/faded/base-500#8E8E93#636366Neutral icon
state/error/base-500#FB2C36#FB2C36Error icon
state/success/base-500#22C55E#16A34ASuccess icon
state/warning/base-500#FF6900#F54900Warning icon
state/information/base-500#155DFC#155DFCInfo icon, one value in both modes

Radius is dimensions/radius/2xl at 24 on the card and dimensions/radius/full on the link and the dismiss. The shadow is the effect style dropShadow/sm.

Warning, success and faded step from their 500 to their 600 in dark, which keeps them off a dark card. Error and information do not move, so on the dark card information is the weakest color here, sitting next to a link that moved the other way.

How does Toast differ on iOS and Material 3?

iOS has no toast, so the file has no iOS set for it. Material 3 has the Snackbar, a 344 wide bar with a 4 radius, and Appetite UI Toast is the same idea as a 320 wide card with a 24 radius.

Toast against its iOS and Material 3 counterparts, component, iOS, Material 3, difference
Appetite UIiOS counterpartMaterial 3 counterpartWhat differs
ToastNone in the file. The set description names a custom overlay.M3 / Snackbar: Configuration Text only, Text and action, Text and longer action, by Option One line or Two lines, with an optional close affordance. 344 wide, 48, 68 or 112 tall, radius 4.Appetite UI is 320 wide at radius 24 and has five States with their own icon, which a Snackbar does not. The Appetite UI action is a Brand Link button.

The link button is 36 high and the dismiss is 32, both under the minimum touch target of 44 pt on iOS and 48 dp on Android, which comes from platform/min-touch-target in the Platform collection. Give both a larger hit area in code.

The Motion table enters a toast on motion/toast/enter: 120 ms on a decelerate curve, or a spring with response .30 and damping .90.

Guidelines

Do

Keep the action optional. Undo, View, Retry: things the user can ignore and lose nothing by, because the toast is going to leave on its own.

Photo savedUndo

Don't

Never put a required action in a toast. It dismisses itself, so a Confirm that lives only here is a decision the user can miss by looking away.

Delete this album?Confirm

Use it for feedback about something that already happened, not for a question. Keep the title to one line, and reach for Long only when the extra sentence changes what the user would do.

Put a required decision in a Modal or an Alert, never here.