Most toast libraries do the same thing: a card fades in, sits there, fades out. When the next one arrives, it stacks on top or replaces the old one.

I wanted toasts that feel like one object changing state, so I built Ding, an open source toast library with real spring physics.

What is different

  • Toasts morph in place. A loading toast turns into success or error without a new card appearing.
  • Zero dependencies. React, Svelte, Vue and plain JavaScript share the same core.
  • Accessible by default. Screen reader announcements, Escape to dismiss and Alt+T to focus the toast.

Usage

npm i @yusufceng1z/ding-react 
import { Toaster, toast } from '@yusufceng1z/ding-react'; <Toaster /> toast.success('Saved'); toast.error('Could not save', { description: 'Network failed.', action: { label: 'Retry', onClick: () => save() }, }); 

Svelte, Vue and vanilla JS packages work the same way: @yusufceng1z/ding-svelte, @yusufceng1z/ding-vue, @yusufceng1z/ding.

Try it

Feedback and issues are welcome.