---
title: React Toast Component
name: Toast
description: Push notifications to your visitors with a toast, a lightweight and easily customizable alert message.
menu: Components
route: /components/toast
other_frameworks: toast
---

import { useState, useRef } from 'react'
import {
  CButton,
  CCloseButton,
  CToast,
  CToastBody,
  CToastClose,
  CToastHeader,
  CToaster,
} from '@coreui/react/src/index'

React toasts are lightweight notifications designed to mimic the push notifications that have been popularized by mobile and desktop operating systems. They’re built with flexbox, so they’re easy to align and position.

## Overview

Things to know when using the toast plugin:

- Toasts are opt-in for performance reasons, so **you must initialize them yourself**.
- Toasts will automatically hide if you do not specify `autohide: false`.

## Examples

### Basic

To encourage extensible and predictable toasts, we recommend a header and body. Toast headers use `display: flex`, allowing easy alignment of content thanks to our margin and flexbox utilities.

Toasts are as flexible as you need and have very little required markup. At a minimum, we require a single element to contain your "toasted" content and strongly encourage a dismiss button.

```jsx preview
<CToast animation={false} autohide={false} visible={true}>
  <CToastHeader closeButton>
    <svg
      className="rounded me-2"
      width="20"
      height="20"
      xmlns="http://www.w3.org/2000/svg"
      preserveAspectRatio="xMidYMid slice"
      focusable="false"
      role="img"
    >
      <rect width="100%" height="100%" fill="#007aff"></rect>
    </svg>
    <div className="fw-bold me-auto">CoreUI for React.js</div>
    <small>7 min ago</small>
  </CToastHeader>
  <CToastBody>Hello, world! This is a toast message.</CToastBody>
</CToast>
```

export const BasicExample = () => {
  const [toast, addToast] = useState(0)
  const toaster = useRef()
  const exampleToast = (
    <CToast>
      <CToastHeader closeButton>
        <svg
          className="rounded me-2"
          width="20"
          height="20"
          xmlns="http://www.w3.org/2000/svg"
          preserveAspectRatio="xMidYMid slice"
          focusable="false"
          role="img"
        >
          <rect width="100%" height="100%" fill="#007aff"></rect>
        </svg>
        <div className="fw-bold me-auto">CoreUI for React.js</div>
        <small>7 min ago</small>
      </CToastHeader>
      <CToastBody>Hello, world! This is a toast message.</CToastBody>
    </CToast>
  )
  return (
    <>
      <CButton color="primary" onClick={() => addToast(exampleToast)}>Send a toast</CButton>
      <CToaster className="p-3" placement="top-end" push={toast} ref={toaster} />
    </>
  )
}

<Example>
  <BasicExample />
</Example>

```jsx
const [toast, addToast] = useState(0)
const toaster = useRef()
const exampleToast = (
  <CToast>
    <CToastHeader closeButton>
      <svg
        className="rounded me-2"
        width="20"
        height="20"
        xmlns="http://www.w3.org/2000/svg"
        preserveAspectRatio="xMidYMid slice"
        focusable="false"
        role="img"
      >
        <rect width="100%" height="100%" fill="#007aff"></rect>
      </svg>
      <div className="fw-bold me-auto">CoreUI for React.js</div>
      <small>7 min ago</small>
    </CToastHeader>
    <CToastBody>Hello, world! This is a toast message.</CToastBody>
  </CToast>
)
return (
  <>
    <CButton color="primary" onClick={() => addToast(exampleToast)}>Send a toast</CButton>
    <CToaster className="p-3" placement="top-end" push={toast} ref={toaster} />
  </>
)
```

### Translucent

Toasts are slightly translucent to blend in with what's below them.

```jsx preview className="bg-dark border-0"
<CToast autohide={false} visible={true}>
  <CToastHeader closeButton>
    <svg
      className="rounded me-2"
      width="20"
      height="20"
      xmlns="http://www.w3.org/2000/svg"
      preserveAspectRatio="xMidYMid slice"
      focusable="false"
      role="img"
    >
      <rect width="100%" height="100%" fill="#007aff"></rect>
    </svg>
    <div className="fw-bold me-auto">CoreUI for React.js</div>
    <small>7 min ago</small>
  </CToastHeader>
  <CToastBody>Hello, world! This is a toast message.</CToastBody>
</CToast>
```

### Stacking

You can stack toasts by wrapping them in a toast container, which will vertically add some spacing.

```jsx preview
<CToaster className="position-static">
  <CToast autohide={false} visible={true}>
    <CToastHeader closeButton>
      <svg
        className="rounded me-2"
        width="20"
        height="20"
        xmlns="http://www.w3.org/2000/svg"
        preserveAspectRatio="xMidYMid slice"
        focusable="false"
        role="img"
      >
        <rect width="100%" height="100%" fill="#007aff"></rect>
      </svg>
      <div className="fw-bold me-auto">CoreUI for React.js</div>
      <small>7 min ago</small>
    </CToastHeader>
    <CToastBody>Hello, world! This is a toast message.</CToastBody>
  </CToast>
  <CToast autohide={false} visible={true}>
    <CToastHeader closeButton>
      <svg
        className="rounded me-2"
        width="20"
        height="20"
        xmlns="http://www.w3.org/2000/svg"
        preserveAspectRatio="xMidYMid slice"
        focusable="false"
        role="img"
      >
        <rect width="100%" height="100%" fill="#007aff"></rect>
      </svg>
      <div className="fw-bold me-auto">CoreUI for React.js</div>
      <small>7 min ago</small>
    </CToastHeader>
    <CToastBody>Hello, world! This is a toast message.</CToastBody>
  </CToast>
</CToaster>
```

### Custom content

Customize your toasts by removing sub-components, tweaking them with [utilities](https://coreui.io/docs/utilities/api), or by adding your own markup. Here we've created a simpler toast by removing the default `<CToastHeader>`, adding a custom hide icon from [CoreUI Icons](https://icons.coreui.io), and using some [flexbox utilities](https://coreui.io/docs/utilities/flex) to adjust the layout.

```jsx preview
<CToast autohide={false} visible={true} className="align-items-center">
  <div className="d-flex">
    <CToastBody>Hello, world! This is a toast message.</CToastBody>
    <CToastClose className="me-2 m-auto" />
  </div>
</CToast>
```

Alternatively, you can also add additional controls and components to toasts.

```jsx preview
<CToast autohide={false} visible={true}>
  <CToastBody>
    Hello, world! This is a toast message.
    <div className="mt-2 pt-2 border-top">
      <CButton type="button" color="primary" size="sm">
        Take action
      </CButton>
      <CToastClose as={CButton} color="secondary" size="sm" className="ms-1">
        Close
      </CToastClose>
    </div>
  </CToastBody>
</CToast>
```

### Color schemes

Building on the above example, you can create different toast color schemes with our [color](https://coreui.io/docs/utilities/colors) and [background](https://coreui.io/docs//utilities/background) utilities. Here we've set `color="primary"` and added `.text-white` class to the `<Ctoast>`, and then set `white` property to our close button. For a crisp edge, we remove the default border with `.border-0`.

```jsx preview
<CToast autohide={false} visible={true} color="primary" className="text-white align-items-center">
  <div className="d-flex">
    <CToastBody>Hello, world! This is a toast message.</CToastBody>
    <CToastClose className="me-2 m-auto" white />
  </div>
</CToast>
```

## Customizing

### CSS variables

React toasts use local CSS variables on `.toast` for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too.

<ScssDocs file="_toasts.scss" capture="toast-css-vars"/>

#### How to use CSS variables

```jsx
const vars = { 
  '--my-css-var': 10,
  '--my-another-css-var': "red" 
}
return <CToast style={vars}>...</CToast>
```

### SASS variables

<ScssDocs file="_variables.scss" capture="toast-variables"/>

## API

### CToast

`markdown:CToast.api.mdx`

### CToastHeader

`markdown:CToastHeader.api.mdx`

### CToastBody

`markdown:CToastBody.api.mdx`

### CToastClose

`markdown:CToastClose.api.mdx`

### CToaster

`markdown:CToaster.api.mdx`
