Webapp Parts & Types

Notifications & Toasts

webmobiledesktopadmin

Toasts confirm; banners warn; notifications inform. Mixing them is the fastest way to make your app feel noisy. Use the right one. And never more than one at a time.

  • Variation 01

    Toast Stack

    aka Sonner Toast · Corner Toast

    Screenshot of sonner.emilkowal.skisonner.emilkowal.ski

    Stacked transient notifications in the bottom corner. Auto-dismiss, swipe to dismiss, support success / error / info.

    When to use

    Confirming user-initiated actions (saved, copied, sent). Never for unsolicited push.

    Anatomy

    • Bottom-right (or bottom-center on mobile) anchor
    • Stacks; older toasts shrink behind newer
    • Icon + message + optional action / undo
    • Auto-dismiss with progress, hover pauses timer
    • Swipe right to dismiss on touch

    Prompt

    Build a toast stack with Sonner or a comparable headless primitive. Anchor bottom-right on desktop, bottom-center on mobile. Each toast: 360px wide, rounded-lg, surface fill with a subtle border, leading status icon (check / x / info), message in 13.5px, optional trailing action button (e.g. 'Undo'). Auto-dismiss after 4s with a hairline progress strip along the bottom of the toast that pauses on hover. Stack new toasts in front, push older ones backward with a slight scale-down and y-offset. Swipe right (or left) to dismiss with rubber-band friction.

    Polish & tuning

    2 of 4 unlocked

    Motion

    Ease-out for entrance, ease-in-out for state. 200ms hover, 400–600ms layout. Stagger children at 30–60ms so groups feel intentional, not synchronized.

    Spacing

    Pick one scale (4 or 8) and don't mix. Section padding 96–128px desktop, 48–64px mobile. Headline sits ~24px above the subhead; subhead ~32px above the CTA cluster.

    Pro

    Unlock the rest of the tuning notes.

    Buy Pro
  • Variation 03

    Inline Notice

    aka Callout · Sidebar Callout

    Screenshot of docs.stripe.comdocs.stripe.com

    An in-context callout, embedded inside a section, that highlights a tip, warning, or note without breaking the page flow.

    When to use

    Inside docs, forms, settings. When information is contextual to where the user is looking.

    Anatomy

    • Left accent bar in the severity color
    • Leading icon, 16px
    • Title (optional) + body text
    • Embedded in content flow, no fixed positioning
    • Variants: note, tip, warning, danger

    Prompt

    Build an inline notice / callout component with 4 variants: note, tip, warning, danger. Each renders as a rounded-md panel with a 3px left accent bar in the variant color, a leading 16px icon, an optional title in 14px medium, and body content in 13.5px. Background is the variant color at 6% opacity, border at 12%. Variant prop controls icon and colors. Designed to be embedded in long-form content (docs, settings, MDX). No fixed positioning, no animations. Children render as the body so the notice can contain inline links, code, lists.

    Polish & tuning

    2 of 4 unlocked

    Motion

    Ease-out for entrance, ease-in-out for state. 200ms hover, 400–600ms layout. Stagger children at 30–60ms so groups feel intentional, not synchronized.

    Spacing

    Pick one scale (4 or 8) and don't mix. Section padding 96–128px desktop, 48–64px mobile. Headline sits ~24px above the subhead; subhead ~32px above the CTA cluster.

    Pro

    Unlock the rest of the tuning notes.

    Buy Pro
  • Variation 04

    Notification Center

    aka Inbox · Activity Center

    Screenshot of linear.applinear.app

    Bell icon in the header opens a dropdown showing all recent notifications, grouped by date.

    When to use

    Multi-actor products: messaging, comments, mentions, status changes. The bell is the receipt for collaboration.

    Anatomy

    • Bell icon with unread count badge
    • Dropdown panel (~400px wide)
    • Tabs: All / Unread / Mentions
    • Per-row: actor avatar, action text, timestamp, source link
    • 'Mark all read' action

    Prompt

    Preview · Pro to copy
    Pro

    Unlock the full prompt.

    Buy Pro

    Polish & tuning

    2 of 4 unlocked

    Motion

    Ease-out for entrance, ease-in-out for state. 200ms hover, 400–600ms layout. Stagger children at 30–60ms so groups feel intentional, not synchronized.

    Spacing

    Pick one scale (4 or 8) and don't mix. Section padding 96–128px desktop, 48–64px mobile. Headline sits ~24px above the subhead; subhead ~32px above the CTA cluster.

    Pro

    Unlock the rest of the tuning notes.

    Buy Pro
  • Variation 05

    Snackbar (Mobile)

    aka Bottom Snackbar · Action Snack

    Screenshot of m3.material.iom3.material.io

    A toast variant pinned to the bottom of the screen, with a single inline action - undo, view, retry.

    When to use

    Mobile-first apps and PWAs. Snackbars handle confirmation + immediate undo better than corner toasts on small screens.

    Anatomy

    • Pinned bottom, full-width with 16px insets
    • Single line message + trailing action button
    • Auto-dismiss with timer (4s default)
    • Swipe down to dismiss

    Prompt

    Build a mobile snackbar. Position fixed bottom, padding-bottom env(safe-area-inset-bottom) + 16px. Width: calc(100% - 32px), max-width 480px, centered. Surface fill, rounded-lg, 14px text on the left and a single ghost action button on the right ('Undo', 'View', etc.). Auto-dismiss after 4 seconds. Slides in from below with a 200ms ease-out; reverses on dismiss. Swipe down dismisses with rubber-band drag. Only one snackbar visible at a time.

    Polish & tuning

    2 of 4 unlocked

    Motion

    Ease-out for entrance, ease-in-out for state. 200ms hover, 400–600ms layout. Stagger children at 30–60ms so groups feel intentional, not synchronized.

    Spacing

    Pick one scale (4 or 8) and don't mix. Section padding 96–128px desktop, 48–64px mobile. Headline sits ~24px above the subhead; subhead ~32px above the CTA cluster.

    Pro

    Unlock the rest of the tuning notes.

    Buy Pro
  • Variation 06

    Promotion Banner

    aka Marketing Banner · Campaign Bar

    Screenshot of shopify.comshopify.com

    Eye-catching banner pinned to the top of the page for time-bound promotions or launches.

    When to use

    Launch days, sales, conference promos. Pair with a hard dismiss and a date-bound expiry.

    Anatomy

    • Accent gradient background
    • Centered headline + CTA
    • Optional countdown timer
    • Dismiss × persists in localStorage

    Prompt

    Build a promotional top banner. Slim full-width strip (40px tall) with an accent gradient (purple → pink). Centered content: a small emoji or sparkle icon, a 13px message ('Ship 2026 starts Tuesday - register'), and an inline 'Register →' link with arrow. Right-anchored × button dismisses. On dismiss, store the campaign ID in localStorage so it stays hidden for that user. Slide-in from top on mount (180ms).

    Polish & tuning

    2 of 4 unlocked

    Motion

    Ease-out for entrance, ease-in-out for state. 200ms hover, 400–600ms layout. Stagger children at 30–60ms so groups feel intentional, not synchronized.

    Spacing

    Pick one scale (4 or 8) and don't mix. Section padding 96–128px desktop, 48–64px mobile. Headline sits ~24px above the subhead; subhead ~32px above the CTA cluster.

    Pro

    Unlock the rest of the tuning notes.

    Buy Pro
  • Variation 07

    Live Presence Indicator

    aka Online Avatars · Live Cursors

    Screenshot of figma.comfigma.com

    Avatars of users currently viewing the same document or page, sometimes with live cursors.

    When to use

    Collaborative editors, dashboards with multi-user context. Real-time presence is more trust than feature.

    Anatomy

    • Avatar stack in the top-right
    • Each avatar tinted with the actor's color
    • Live cursor in the page coordinate space
    • Hover reveals name tooltip
    • Backed by a CRDT or websocket presence channel

    Prompt

    Preview · Pro to copy
    Pro

    Unlock the full prompt.

    Buy Pro

    Polish & tuning

    2 of 4 unlocked

    Motion

    Ease-out for entrance, ease-in-out for state. 200ms hover, 400–600ms layout. Stagger children at 30–60ms so groups feel intentional, not synchronized.

    Spacing

    Pick one scale (4 or 8) and don't mix. Section padding 96–128px desktop, 48–64px mobile. Headline sits ~24px above the subhead; subhead ~32px above the CTA cluster.

    Pro

    Unlock the rest of the tuning notes.

    Buy Pro
  • Variation 08

    Progress Toast

    aka Upload Toast · Long-Op Toast

    Screenshot of vercel.comvercel.com

    Toast that shows the progress of a long-running operation - upload, export, batch action. With cancel.

    When to use

    When the operation takes longer than 2 seconds and you can't block the UI for it. Keeps the user in flow.

    Anatomy

    • Pinned bottom-right
    • Title + phase label
    • Progress bar or percentage
    • Cancel button + retry on failure
    • Auto-dismisses 3s after success

    Prompt

    Build a progress toast. Pinned bottom-right, 380px wide, rounded-2xl, padding 16px. Top row: title ('Uploading 4 files'), spinner icon, phase label ('Encoding…') in 12px muted, close X on the right. Below: a thin progress bar that fills with percentage (or 'indeterminate' shimmer when unknown). On error, swap the spinner for a warning icon and show a 'Retry' button. On success, swap to a check icon, show 'Complete', and auto-dismiss after 3s. Stacks vertically with sibling progress toasts.

    Polish & tuning

    2 of 4 unlocked

    Motion

    Ease-out for entrance, ease-in-out for state. 200ms hover, 400–600ms layout. Stagger children at 30–60ms so groups feel intentional, not synchronized.

    Spacing

    Pick one scale (4 or 8) and don't mix. Section padding 96–128px desktop, 48–64px mobile. Headline sits ~24px above the subhead; subhead ~32px above the CTA cluster.

    Pro

    Unlock the rest of the tuning notes.

    Buy Pro
  • Variation 09

    Push Permission Prompt

    aka Notification Prompt · Pre-Permission Card

    Screenshot of linear.applinear.app

    An in-app card asking the user to enable browser/system notifications, before triggering the native prompt.

    When to use

    Whenever notifications add real value. Always pre-prompt. Never trigger native permission unsolicited.

    Anatomy

    • Card with bell icon + headline
    • Clear 'why' copy
    • Primary 'Enable notifications' button (triggers native prompt)
    • Secondary 'Not now' button

    Prompt

    Build a pre-permission notification card. Rounded-2xl card, padding 24px, surface fill, max-width 420px. Top: a 32px bell icon. Headline 'Get notified when someone @mentions you' at 16px medium. Subtext (14px muted): one sentence explaining what events trigger notifications. Two buttons: primary 'Enable notifications' that calls Notification.requestPermission(), secondary 'Not now' that dismisses for 7 days. Never call requestPermission without this preamble.

    Polish & tuning

    2 of 4 unlocked

    Motion

    Ease-out for entrance, ease-in-out for state. 200ms hover, 400–600ms layout. Stagger children at 30–60ms so groups feel intentional, not synchronized.

    Spacing

    Pick one scale (4 or 8) and don't mix. Section padding 96–128px desktop, 48–64px mobile. Headline sits ~24px above the subhead; subhead ~32px above the CTA cluster.

    Pro

    Unlock the rest of the tuning notes.

    Buy Pro
  • Variation 10

    Activity Feed Row

    aka What's New Row · Realtime Feed Item

    Screenshot of vercel.comvercel.com

    Live-streaming activity rows on a dashboard or feed. New signups, builds, transactions. Animating in as they arrive.

    When to use

    Marketing dashboards, status pages, ops dashboards. Real-time activity is its own social proof.

    Anatomy

    • New rows slide in from the top
    • Subtle highlight pulse on insert
    • Auto-truncate after N rows
    • Pause-on-hover to let users read

    Prompt

    Build a real-time activity feed. A vertical list where new events arrive via websocket and prepend to the top with a 220ms slide-down + brief highlight pulse on insert. Cap the visible list at 50 rows (older rows scroll off). Hovering anywhere in the feed pauses incoming inserts (queue them, flush on mouseleave). Each row: leading icon, actor avatar, action sentence, relative timestamp on the right.

    Polish & tuning

    2 of 4 unlocked

    Motion

    Ease-out for entrance, ease-in-out for state. 200ms hover, 400–600ms layout. Stagger children at 30–60ms so groups feel intentional, not synchronized.

    Spacing

    Pick one scale (4 or 8) and don't mix. Section padding 96–128px desktop, 48–64px mobile. Headline sits ~24px above the subhead; subhead ~32px above the CTA cluster.

    Pro

    Unlock the rest of the tuning notes.

    Buy Pro