Toast
The toast component is used to give feedback to users after an action has taken place.
Import
import { useToast } from '@chakra-ui/react';
Usage
The toast will close itself when the close button is clicked, or after a timeout.
Toasts can be configured to appear at either the top or the bottom of an application window, and it is possible to have more than one toast onscreen at a time.
Make sure to call
useToastat least one component level below the<ChakraProvider>because it needs access to the current theme.
Custom component
Display a custom component instead of the default Toast UI.
Closing Toasts
Toasts can be closed imperatively, individually (via the close instance
method) or all together (via the closeAll instance method).
Updating Toasts
Toasts' options can be updated, by passing an id and the new options to the
update instance method.
Status
You can use status to change the color of your toasts.
Variants
Toast uses the same variants as the
Alert component.
Custom container styles
The toast function now exposes a containerStyle property you can use to
override the default styles for the toast container.
Changing the toast position
Using the position prop you can adjust where your toast will be popup from.
Preventing Duplicate Toast
In some cases you might need to prevent duplicate of specific toasts. To achieve
you need to pass an id and use the toast.isActive method to determine when
to call toast(...).
function PreventDuplicateExample() {
const toast = useToast();
const id = 'test-toast';
return (
<Button
onClick={() => {
if (!toast.isActive(id)) {
toast({
id,
title: 'Hey! You can create a duplicate toast',
});
}
}}
>
Click me!
</Button>
);
}
Standalone Toasts
Use createStandaloneToast to create toasts from outside of your React
Components.
🚨 If you're using a custom theme, you must pass it in the arguments to
createStandaloneToast. If you don't, the default theme will be applied, causing the font size of your page to shift when the toast is open.
import * as ReactDOM from 'react-dom/client';
import { createStandaloneToast } from '@chakra-ui/toast';
const { ToastContainer, toast } = createStandaloneToast();
// render the ToastContainer in your React root
const rootElement = document.getElementById('root');
ReactDOM.createRoot(yourRootElement).render(
<>
<App />
<ToastContainer />
</>
);
toast({
title: 'An error occurred.',
description: 'Unable to create user account.',
status: 'error',
duration: 9000,
isClosable: true,
});
Props
colorScheme
colorSchemeColor Schemes for useToast are not implemented in the default theme. You can extend the theme to implement them.
stringcontainerStyle
containerStyleOptional style overrides for the container wrapping the toast component.
StylePropsdescription
descriptionThe description of the toast
ReactNodeduration
durationThe delay before the toast hides (in milliseconds)
If set to null, toast will never dismiss.
number | null5000 ( = 5000ms )icon
iconA custom icon that will be displayed by the toast.
ReactNodeid
idThe id of the toast.
Mostly used when you need to prevent duplicate.
By default, we generate a unique id for each toast
ToastIdisClosable
isClosableIf true, toast will show a close button
booleanonCloseComplete
onCloseCompleteCallback function to run side effects after the toast has closed.
(() => void)position
positionThe placement of the toast
ToastPosition"bottom"render
renderRender a component toast component.
Any component passed will receive 2 props: id and onClose.
((props: RenderProps) => ReactNode)size
sizeSizes for useToast are not implemented in the default theme. You can extend the theme to implement them.
stringstatus
statusThe status of the toast.
"info" | "warning" | "success" | "error" | "loading"title
titleThe title of the toast
ReactNodevariant
variantVariants for useToast are not implemented in the default theme. You can extend the theme to implement them.
string