Toast notification
Also called toast or snackbar
A brief message that slides into a corner of the screen to confirm an action, then disappears on its own after a few seconds.
import { Toast } from '@base-ui/react/toast';
type Props = { onSave: () => void; onUndo: () => void };
// Base UI pauses the timer while the pointer or focus is on a toast and
// announces each one politely to screen readers.
export function SaveProfileButton(props: Props) {
return (
<Toast.Provider timeout={5000} limit={3}>
<SaveButton {...props} />
<Toast.Portal>
<Toast.Viewport className='fixed right-4 bottom-4 flex w-80 flex-col-reverse gap-2'>
<ToastList />
</Toast.Viewport>
</Toast.Portal>
</Toast.Provider>
);
}
function SaveButton({ onSave, onUndo }: Props) {
const toastManager = Toast.useToastManager();
function save() {
onSave();
const id = toastManager.add({
title: 'Changes saved',
actionProps: {
children: 'Undo',
onClick: () => {
onUndo();
toastManager.close(id);
}
}
});
}
return (
<button
type='button'
onClick={save}
className='rounded-lg bg-primary px-4 py-2 text-sm font-medium text-primary-foreground'
>
Save changes
</button>
);
}
function ToastList() {
const { toasts } = Toast.useToastManager();
return toasts.map((toast) => (
<Toast.Root
key={toast.id}
toast={toast}
swipeDirection='right'
className='flex translate-x-(--toast-swipe-movement-x) items-center justify-between gap-3 rounded-xl border bg-background px-4 py-3 shadow-lg transition-[opacity,translate] duration-250 ease-out data-ending-style:opacity-0 data-starting-style:translate-y-4 data-starting-style:opacity-0 data-swiping:duration-0 data-[swipe-direction=right]:data-ending-style:translate-x-[calc(100%+1rem)]'
>
<Toast.Title className='text-sm font-medium' />
<Toast.Action className='text-sm font-medium text-blue-600 hover:underline' />
</Toast.Root>
));
}Show a toast in the bottom-right corner when the profile is saved, reading 'Changes saved' with an Undo button. Slide it up 16px and fade it in over 250ms, dismiss it after 5 seconds, and pause the timer on hover or focus. Let people swipe it right to dismiss once they drag past 80px, stack up to 3 toasts with the newest at the bottom, and announce each one with role='status'.
Paste into Layerwise or any AI coding tool.
What is Toast notification?
A toast pops up in a corner, often the bottom right, to say something happened: Changes saved, Invite sent, Link copied. It blocks nothing and closes by itself after about four to six seconds. When several arrive together they stack, and people can swipe one away or close it early.
Use toasts for quick confirmations and background events that need no reply, and add an Undo button after actions like deleting. Errors that stop someone from continuing belong next to the field or in an alert banner, and questions that need an answer belong in a modal.
Give people time to read: pause the timer while the pointer is over the toast or it has keyboard focus, and give longer messages more time. Announce toasts to screen readers with a polite live region such as role="status", and show no more than about three at once.
Often confused with
- Alert banner
- An alert banner stays in place at the top of a page or section until the issue is resolved. A toast floats in a corner and leaves on its own.
Related terms
All termsAlert banner
A colored strip in the page that delivers an important message, such as info, success, warning, or error, and stays until it is resolved or dismissed.
Swipe to dismiss
A gesture where you drag an item sideways past a threshold to remove it, while a shorter swipe lets it spring back into place.
Undo
A way to reverse an action right after doing it, often a toast with an Undo button that appears after deleting or archiving something.
Optimistic UI
A pattern where the interface shows the result of an action right away, before the server confirms it, and rolls it back if the request fails.
Build it with Layerwise
Describe your app, watch it run in a live preview, and publish it with a database, storage, and sign-in built in.