
Goey Toast
- 50 installs
- 1.2k repo stars
- Updated June 8, 2026
- anl331/goey-toast
goey-toast is a skill for installing and using goey-toast, a morphing React toast component built on Sonner with Framer Motion.
About
goey-toast is a skill for installing and using goey-toast, a morphing React toast component built on Sonner with Framer Motion animations. A developer uses it when adding toast or notification UI to a React app or replacing raw Sonner toasts with the gooey variant. It covers install steps, mounting the GooeyToaster and stylesheet, the gooeyToast API, options, recipes and common gotchas.
- Installs and uses goey-toast, a gooey morphing React toast built on Sonner
- Documents the gooeyToast API: success, error, warning, info, promise, update, dismiss
- Flags the common bug: forgetting to import the required stylesheet
Goey Toast by the numbers
- 50 all-time installs (skills.sh)
- Ranked #1,306 of 2,245 Frontend Development skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
goey-toast capabilities & compatibility
- Capabilities
- react component · toast notifications · ui integration
- Use cases
- frontend · ui design
- IDEs
- vscode · cursor ide
- Pricing
- Free
What goey-toast says it does
A gooey, morphing React toast component built on Sonner with Framer Motion animations (pill → blob → pill).
Forgetting `import 'goey-toast/styles.css'` → unstyled toasts. Most common bug.
npx skills add https://github.com/anl331/goey-toast --skill goey-toastAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 50 |
|---|---|
| repo stars | ★ 1.2k |
| Last updated | June 8, 2026 |
| Repository | anl331/goey-toast ↗ |
What it does
Install and correctly use the goey-toast morphing React toast component for notification UI.
Who is it for?
Adding animated toast or notification UI to a React 18+ app.
Skip if: Non-React apps or apps without a Framer Motion peer dependency.
When should I use this skill?
Adding toast/notification UI to a React app or replacing raw sonner toasts with the gooey variant.
What you get
A working goey-toast setup with the GooeyToaster mounted, styles imported, and success/error/promise/update toasts firing.
By the numbers
- 3 required peer dependencies
- 6 toast positions
- 4 animation presets: smooth/bouncy/subtle/snappy
Files
goey-toast
A gooey, morphing React toast component built on Sonner with Framer Motion animations (pill → blob → pill). Use this skill to install the package and write correct usage code in any React project.
When to use
- Adding toast / notification UI to a React app (React >= 18).
- The user mentions "goey-toast", "gooey toast", or wants animated/morphing toasts.
- Replacing raw
sonnertoasts with the gooey variant.
Install
npm install goey-toast react react-dom framer-motionPeer deps (must exist in the host app):
| Package | Version |
|---|---|
| react | >= 18.0.0 |
| react-dom | >= 18.0.0 |
| framer-motion | >= 10.0.0 |
shadcn/ui projects
npx shadcn@latest add https://goey-toast.vercel.app/r/goey-toaster.jsonInstalls a wrapper at components/ui/goey-toaster.tsx and auto-installs deps.
Two required steps to render toasts
1. Mount `<GooeyToaster />` once near the app root. 2. Import the stylesheet once at the entry point. Without it toasts render unstyled.
import { GooeyToaster, gooeyToast } from 'goey-toast'
import 'goey-toast/styles.css' // REQUIRED — import once at app entry
function App() {
return (
<>
<GooeyToaster position="bottom-right" />
<button onClick={() => gooeyToast.success('Saved!')}>Save</button>
</>
)
}API: gooeyToast
gooeyToast(title, options?) // default (neutral)
gooeyToast.success(title, options?) // green
gooeyToast.error(title, options?) // red
gooeyToast.warning(title, options?) // yellow
gooeyToast.info(title, options?) // blue
gooeyToast.promise(promise, data) // loading → success/error
gooeyToast.update(id, options) // update an existing toast in-place
gooeyToast.dismiss(idOrFilter?) // dismiss one, by type, or allCommon options (2nd arg)
| Option | Type | Notes |
|---|---|---|
description | ReactNode | String or component body |
action | GooeyToastAction | { label, onClick, successLabel? } |
icon | ReactNode | Custom icon (null clears in update) |
duration | number | ms |
id | `string \ | number` |
fillColor / borderColor / borderWidth | colors / px | Blob styling |
spring / bounce | boolean / number | bounce 0.05–0.8, default 0.4 |
preset | `'smooth' \ | 'bouncy' \ |
showProgress | boolean | Countdown bar |
showTimestamp | boolean | Default true |
onDismiss / onAutoClose | (id) => void | Dismiss callbacks |
<GooeyToaster /> key props
position ('top-left'|'top-center'|'top-right'|'bottom-left'|'bottom-center'|'bottom-right', default 'bottom-right'), theme ('light'|'dark'), closeButton, showProgress, closeOnEscape, maxQueue, queueOverflow ('drop-oldest'|'drop-newest'), dir ('ltr'|'rtl'), spring, bounce, preset, swipeToDismiss, showTimestamp, gap, offset.
Recipes
Description + action button
gooeyToast.info('Share link ready', {
description: 'Your link has been generated.',
action: {
label: 'Copy',
onClick: () => navigator.clipboard.writeText(url),
successLabel: 'Copied!', // morphs back to pill after click
},
})Promise toast
gooeyToast.promise(saveData(), {
loading: 'Saving...',
success: (data) => `Saved ${data.count} items`,
error: (e) => `Failed: ${String(e)}`,
description: { success: 'All changes synced.', error: 'Try again later.' },
action: { error: { label: 'Retry', onClick: () => retry() } },
})Update in place
const id = gooeyToast('Uploading...', { icon: <Spinner /> })
gooeyToast.update(id, { title: 'Done', type: 'success', icon: null })Dismiss by filter
gooeyToast.dismiss(id) // one
gooeyToast.dismiss({ type: 'error' }) // all errors
gooeyToast.dismiss({ type: ['error','warning'] })
gooeyToast.dismiss() // allGotchas
- Forgetting
import 'goey-toast/styles.css'→ unstyled toasts. Most common bug. <GooeyToaster />must be mounted exactly once, near the root.update()requires the sameidreturned from the create call.framer-motionis a peer dep — install it explicitly.- Backward-compat aliases exist (
GoeyToaster,goeyToast) for v0.2.x; prefer
the double-o names (GooeyToaster, gooeyToast).
Reference
- Live demo & docs: https://goey-toast.vercel.app
- npm: https://www.npmjs.com/package/goey-toast
Related skills
FAQ
What is the most common bug?
The docs say forgetting to import 'goey-toast/styles.css' produces unstyled toasts and is the most common bug.
What peer dependencies are required?
React >= 18, react-dom >= 18 and framer-motion >= 10, which must exist in the host app.