
Quick answer: for most React apps, Sonner or react-hot-toast is the easiest way to add toast notifications: install one package, render one Toaster component, and call toast() from anywhere. Pick React-Toastify when you want the most built-in options (progress bars, themes, drag to dismiss, limits). Use Notistack if you want stacked snackbars in a Material UI style app, Radix Toast if you need unstyled, accessible building blocks for your own design system, and Mantine Notifications if your app already uses Mantine. All six are MIT licensed and had a release in the last two years. If you would rather configure toasts from a dashboard and track them, PLG OS (our product) has a hosted toast component. Release dates below are from each package's npm entry, checked in November 2026.
A toast is a short, temporary message that appears on top of the page, such as "Settings saved" or "Upload failed". A toast notification library handles the parts that are tedious to build by hand: a container that renders toasts in a fixed corner, a queue so several toasts stack instead of overlapping, timers that pause on hover, enter and exit animations, and an imperative API so any part of your code can trigger a toast without passing props around.
Most libraries follow the same pattern: render a provider or container once near the root of your app, then call a function such as toast("Saved") from event handlers, effects or data-fetching code.
| Library | Best for | License | Notable features | Maintained (latest npm release) |
|---|---|---|---|---|
| Sonner | Modern apps that want good defaults | MIT | Success, error, loading and promise toasts, action and cancel buttons, headless mode | 2.0.8, August 2026 |
| react-hot-toast | Small API, quick setup | MIT | Promise API, headless useToaster hook, lightweight styling | 2.6.1, September 2026 |
| React-Toastify | Most built-in options | MIT | Progress bar, light, dark and colored themes, drag to close, RTL, limit, update a toast | 11.2.0, October 2026 |
| Notistack | Stacked snackbars, Material UI style apps | MIT | Stacking and queueing, useSnackbar hook, standalone since v3 | 3.0.2, January 2025 |
| Radix Toast | Accessible primitives for a design system | MIT | Unstyled parts, pause on hover and focus, F8 hotkey, swipe to close | 1.3.1, October 2026 |
| Mantine Notifications | Apps already built on Mantine | MIT | Queue with limit and priority, update, promise, positions | 9.8.0, November 2026 |
| PLG OS Toast (our product) | Toasts configured from a dashboard | Commercial, free tier | No-code text changes, tracking, data into Customer 360, web and mobile | @questlabs/react-sdk 2.3.0, September 2026 |
Who it is for: teams that want a polished toast with sensible defaults and very little setup. Its README calls it an opinionated toast component for React.
Install: npm install sonner, then add the Toaster component once and call toast("My first toast") anywhere.
Strengths: Sonner's docs list success and error toasts with icons, an action button and a cancel button, a promise toast that starts in a loading state and updates when the promise settles, a loading toast, custom JSX toasts and a headless mode that keeps the behavior but lets you render your own markup. Each toast accepts options such as description, duration (4,000 ms by default), position (bottom-right by default), a close button and callbacks for dismiss and auto close.
Limits: the look is deliberately opinionated. You can restyle it, but if your design system needs full control over every element, a headless primitive such as Radix Toast may fit better. The latest release, 2.0.8, supports React 18 and 19.
Who it is for: developers who want a small, readable API and fast setup.
Install: npm install react-hot-toast (or pnpm add react-hot-toast). Add the Toaster component to your app and call toast("Here is your toast.").
Strengths: the README lists a promise API that shows a loader automatically while a promise runs, easy customization, accessibility, and headless hooks through useToaster() so you can build your own toast UI on the same state. It describes itself as lightweight, under 5 kB including styles. Its peer dependency range starts at React 16, so it also fits older codebases.
Limits: fewer built-in extras than React-Toastify, so features such as a progress bar or swipe direction take your own code.
Who it is for: teams that want the most options without writing custom code.
Install: npm install react-toastify, then render the ToastContainer component and call toast("Wow so easy!").
Strengths: the feature list in its README is long: RTL support, swipe to close with a choice of direction, custom animations, React components inside a toast, onOpen and onClose hooks, removing or updating a toast programmatically, pausing when the window loses focus, a progress bar you can also control, a limit on how many toasts show at once, dark mode and stacked notifications. Its playground shows six positions, five types (info, success, warning, error and default) and light, dark and colored themes.
Limits: more options means more to configure, and version 11 requires React 18 or 19. Older apps on React 16 or 17 need an earlier major version.
Who it is for: apps that want Material UI style snackbars that stack and queue.
Install: npm install notistack. Wrap the app with SnackbarProvider, then call enqueueSnackbar("That was easy!") or use the useSnackbar hook.
Strengths: stacking is the point of the library, as the name suggests. Version 3 is standalone and no longer needs Material UI as a peer dependency; the README says v2 required Material UI v5 and v1 required Material UI v4 or lower. It supports React 17, 18 and 19.
Limits: the latest release, 3.0.2, dates from January 2025, so it changes less often than the others on this list. It still falls inside a two-year window, but check its issue tracker before relying on it for a new project.
Who it is for: teams building their own design system who want accessible behavior without imposed styles.
Install: npm install @radix-ui/react-toast. Radix's docs also import Toast from the combined radix-ui package.
Strengths: Radix Toast gives you unstyled parts (Provider, Viewport, Root, Title, Description, Action, Close). According to its docs it pauses closing on hover, focus and window blur, supports a hotkey (F8 by default) to jump to the toast viewport, supports closing with a swipe gesture and exposes CSS variables for swipe animations. Actions need alternative text so screen reader users can complete them another way.
Limits: you write the styles and the toast state yourself, so there is no one-line toast() call out of the box. Many teams wrap it in their own small helper.
Who it is for: apps that already use the Mantine component library.
Install: npm install @mantine/hooks @mantine/core @mantine/notifications, then import the package styles at the root of your app. Mantine's docs warn that forgetting the styles is the usual reason positions do not work.
Strengths: a notifications object with show, hide, update, promise, clean and cleanQueue functions, a queue controlled by a limit, a priority field for which notifications show first when the limit is reached, per-notification positions and an option to make a notification non-dismissible.
Limits: it depends on @mantine/core, so it only makes sense if Mantine is already your UI library. Version 9.8.0 needs React 19.2 or later.
Toasts are one kind of in-app message. If you also need tooltips, modals, banners or product tours, our guides to in-app messaging software and JavaScript product tour libraries cover the next layer. For support conversations rather than one-line notices, see our list of in-app support tools.
Who it is for: product teams that want to change toast text and settings without a code release, and see how users interact with them. PLG OS is our own product, so weigh this entry with that in mind.
How it works: install the SDK with npm i @questlabs/react-sdk, deploy the Toast component from the PLG OS platform, and paste the generated code into your project. The React toast component page says text and features are controlled from the no-code PLG OS dashboard, toast data is added to the Customer 360, and data can be sent to your CRM or other tools. The same component is listed for Next.js and React Native, and the PLG OS pages say the components are available for web and mobile.
Pricing: a free plan with 100 monthly tracked users and 1 component, Starter at $49 a month and Growth at $149 a month, per the PLG OS pricing page.
Limits: it is a hosted, commercial component rather than an open source package, and its FAQ says the component cannot be integrated with your own API. If you only need a toast in a single web app, any open source library above is simpler.
Search results still mention react-toast-notifications. Its latest npm release, 2.5.1, dates from July 2021 and its peer dependencies stop at React 17, so it is effectively unmaintained. Choose one of the libraries above for new work.
For most apps, Sonner or react-hot-toast: both install in one command and use a single toast() call. React-Toastify is the best choice when you want the most built-in options, and Radix Toast when you need unstyled, accessible primitives.
Install a library such as react-hot-toast, render its Toaster component once near the root of your app, then import toast and call toast("Saved") in an event handler. The library handles positioning, stacking and timing.
Neither is better in every case. Sonner has more built-in toast types and action buttons, while react-hot-toast has a smaller API, a headless hook and supports older React versions back to 16.
Yes. Its latest npm release, 11.2.0, was published in October 2026, and it supports React 18 and 19.
Yes. Keep a list of toasts in state or context, render them in a fixed container with an aria-live region, remove each one with a timer that pauses on hover, and expose a function to add new ones. A library saves you the queueing, animation and accessibility details.