Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
anl331 avatar

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)
At a glance

goey-toast capabilities & compatibility

Capabilities
react component · toast notifications · ui integration
Use cases
frontend · ui design
IDEs
vscode · cursor ide
Pricing
Free
From the docs

What goey-toast says it does

A gooey, morphing React toast component built on Sonner with Framer Motion animations (pill → blob → pill).
SKILL.md
Forgetting `import 'goey-toast/styles.css'` → unstyled toasts. Most common bug.
SKILL.md
npx skills add https://github.com/anl331/goey-toast --skill goey-toast

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs50
repo stars1.2k
Last updatedJune 8, 2026
Repositoryanl331/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

SKILL.mdMarkdownGitHub ↗

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 sonner toasts with the gooey variant.

Install

npm install goey-toast react react-dom framer-motion

Peer deps (must exist in the host app):

PackageVersion
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.json

Installs 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 all

Common options (2nd arg)

OptionTypeNotes
descriptionReactNodeString or component body
actionGooeyToastAction{ label, onClick, successLabel? }
iconReactNodeCustom icon (null clears in update)
durationnumberms
id`string \number`
fillColor / borderColor / borderWidthcolors / pxBlob styling
spring / bounceboolean / numberbounce 0.050.8, default 0.4
preset`'smooth' \'bouncy' \
showProgressbooleanCountdown bar
showTimestampbooleanDefault true
onDismiss / onAutoClose(id) => voidDismiss 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()                         // all

Gotchas

  • Forgetting import 'goey-toast/styles.css' → unstyled toasts. Most common bug.
  • <GooeyToaster /> must be mounted exactly once, near the root.
  • update() requires the same id returned from the create call.
  • framer-motion is 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.

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.