๐Ÿž Crust

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.

Read the docs
$ 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

  1. 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.

  2. 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.

  3. 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.

  4. Your site's voice wins

    Fonts inherit from the host page and every color, radius and duration is a --crust-* custom property away.