Don't throw
the crust.
An opinionated, crisp toast library built natively for Astro and React. One store, one renderer, warm matte surfaces. A capsule grows into a card as a single continuous surface.
$ pnpm add
@oscarrc/crust The bakery
Every kind of toast, fired from a plain Astro
<script>, with zero React in
this execution path.
React island ยท 0 active toasts
Now navigate to the docs page with a toast still up. It survives the page transition. Crust re-adopts its toaster across Astro's view-transition swaps, timers and all.
Why Crust
-
Astro-first, honestly
The renderer is vanilla DOM. A React-free Astro site renders toasts with
mountToaster(). React is an optional peer, not a requirement. -
One surface, growing
Hover a toast with a message and the capsule morphs into a card: constant radius, one container, no second panel bolted on.
-
Nothing waits
Entrances land in 320ms, exits in 200, and interaction is never blocked. Timers pause while you read. Reduced motion is a theme, not an afterthought.
-
Your site's voice wins
Fonts inherit from the host page and every color, radius and duration is a
--crust-*custom property away.