sonner
Sonner
From Emil Kowalski's ask-sonner skill (emilkowalski/skills), checked against the Sonner docs (sonner.emilkowal.ski) and the source at 2.0.8 (emilkowalski/sonner src/; 2.0.8 went to npm on 2026-08-09, 2.0.7 on 2025-08-02). The skill has ten errors against the source, most of them shared with the docs, corrected below where each fact sits; every correction names the source file. Sonner is two pieces: one <Toaster /> that renders and a plain toast() function that queues, joined by a module-level store, so most failures are a missing or doubled Toaster, a toaster that filters the toast out, or styles that lose the cascade. Toast motion in general is ui-animation; the owner's app gives feedback in place and uses no toast library (app-ui).
Apply only the routes and checks for the selected job. Read a linked skill's named file from its installed folder when available, or from the linked source. Report an unavailable required reference instead of inventing it. [skill-authoring, DISTRIBUTION.md#composing-skills]
| The job | Read |
|---|---|
Install, mount one Toaster, call toast() from client code |
Setup |
| Which call: plain, typed, loading, promise, action, JSX, headless | Picking the call |
Update by id, persist, dismiss, read active toasts, links, several toasters, close callbacks, toast.promise details |
Recipes |
richColors, inline styles, classNames with !important, CSS variables, headless toasts, icons, theme and next-themes |
Styling: the escalation ladder |
| Screen readers and the hotkey, swipe thresholds, sizes and timing, right-to-left, stacking and modal dialogs | Behavior read from the source |
| Where Sonner's defaults disagree with ui-animation, anti-slop-ui and app-ui | Where other skills differ |
| Symptom, cause, fix | Troubleshooting |
Every <Toaster /> prop, every toast() option, classNames keys, the functions |
API.md |