Atlas expedition 5 angles ↓

React toast notifications in 2026: the landscape, the a11y bill, and the server boundary

Sonner won the ecosystem on distribution, not merit — it is the right default, but it is polite-only, its repo is the quietest of the group, and no library solves the server boundary for you.

5 succeeded #3

The literal question — “is toastr still a thing?” — has a one-word answer: no. It last shipped in December 2017, its final commit was June 2018, and it still hard-depends on jQuery [1]. Everything interesting is in what replaced it, and there the five angles disagree in a way worth naming.

Distribution decided this category, not merit. Sonner has ~41M weekly installs against react-toastify’s ~4M [2] — a 10× gap that is not a 10× quality gap. It exists because shadcn/ui deprecated its own Radix-based toast and now tells every user to install Sonner instead [3]. One default in one scaffolding tool moved the whole ecosystem, and it took Radix Toast down with it: still shipping fixes as of June 2026, but abandoned by its largest consumer and slowing post-acquisition [4].

The health signal inverts the install count. The most-installed library has the quietest repo — Sonner’s last release was August 2025 — while react-toastify shipped v11.1.0 in April 2026 with CSP-nonce support and a React 19 fix [5]. Install count here is a lagging indicator of one scaffolding decision, not of maintenance.

And popularity bought a real accessibility bill. Sonner is polite-only: there is no assertive path in its source, so toast.error() never interrupts a screen reader, and it auto-dismisses at 4 s by default — which is a plain WCAG 2.2 SC 2.2.1 failure unless the user can extend it [6]. The libraries that get the model right — a live region mounted before the message arrives [7], a non-modal dialog for the buttons, a landmark hotkey to reach it — are Base UI and React Aria, i.e. the two nobody installs. That is the sharpest contradiction in this expedition: the recommended default and the accessible default are different libraries.

Nobody solves the server boundary. All three major libraries ship "use client" at the top of their dist bundle, so <Toaster /> drops into an App Router layout unchanged — but none exposes a server-callable queue [8]. “RSC-compatible” is table stakes and means less than it sounds: a server mutation can only describe a toast and hand it across, and if the action calls redirect() the caller unmounts before any return value arrives [9], forcing a flash-cookie round trip. React Router 7 has had session.flash() for this all along [10].

So: take Sonner, and know what you are buying. If you ship to a public sector or enterprise a11y bar, budget for the fixes — or build on Base UI Toast, stable since December 2025 [11], and write the CSS yourself. The unclosed gap is that in 2026 no React toast library offers both the ergonomics and the correct announcement model, and the W3C is still arguing about whether SC 2.2.1 even applies to toasts — issue open since 2019 [12].

Sub-topics