RemotionUI

Notification Stack

Toasts arriving, stacking, and clearing themselves in a screen corner.

SceneScenes

notification-stack30fps · 960×540
Install
$ npx remotion-ui@latest add notification-stack

Each toast carries its own life. Arrivals and dismissals overlap, so the stack fills while notifications outpace their own timers and drains again once they stop — it is never a fixed list that fades in together.

The collapse is what sells it: when a toast leaves, the ones below travel up into the gap instead of jumping. Every slot offset is the sum of the live heights above it, and a dismissing toast's contribution falls smoothly to zero rather than switching off.

There is no holdSeconds here, because there is nothing to hold — set lifeSeconds for the default dwell and override a single toast with holdFor. Bottom-anchored stacks grow upward, so the newest toast is always the one nearest the corner regardless of align.

showProgress draws the draining line along each toast's bottom edge. Leave it on for scenes where the stack sits still for a while: it is the only thing moving between one arrival and the next.

For a single pointed annotation rather than system chatter, use comment-callout or callout-spotlight.

Transparent overlay scene designed to sit over an app or capture. Each toast carries its own life, so there is no holdSeconds — the stack fills and drains on its own. Slot offsets are the sum of the live heights above, which is what makes the rows below travel up into a dismissal instead of jumping.

Agent notes

Install first, then import the copied source component locally. AI guide →

Import
@/remotion/scenes/notification-stack
  • Use when: full-frame scenes, overlays, cards, and reusable video sections.
  • Customize: toasts, align, startAtSeconds, staggerSeconds, plus copied source for timing, layout, colors, and typography.
  • Rule: do not import this component from the remotion-ui npm package; it is copied into your project.

Usage

Example
import { NotificationStack } from "@/remotion/scenes/notification-stack"; <NotificationStack align="top-right" toasts={[ { title: "Render finished", body: "launch-teaser.mp4", tone: "success", meta: "now" }, { title: "Storage at 86%", tone: "warn", meta: "2m" }, ]} lifeSeconds={2.3} />

API Reference

PropTypeDescription
toastsToast[]Title, optional body and meta, tone, and optional per-toast arrival and dwell.
align"top-right" | "top-left" | "bottom-right" | "bottom-left"Corner the stack anchors to. Bottom anchors grow upward.
startAtSecondsnumberSecond the first toast arrives.
staggerSecondsnumberSeconds between arrivals, for toasts without their own atSeconds.
lifeSecondsnumberDefault seconds a toast stays up before dismissing itself.
showProgressbooleanDraining line along each toast's bottom edge.
accentColorstringColour used by the warn tone.
theme"dark" | "light"Surface palette.
speednumberAnimation speed multiplier.

Related