Desktop optimized

Please maximize your browser window or use a larger screen to explore the component library.

Go to home

Elastic Pop Reveal

A tactile, physics-based text reveal component. Splinters text into words or characters and scales them in with a highly customizable GSAP elastic spring effect, triggered on scroll.

Last Modified:Aug 17, 2026

Install

CLI

elastic-pop-reveal
$pnpm dlx shadcn@latest add https://ui.satisium.com/r/elastic-pop-reveal.json

Or install a specific demo variant:

elastic-pop-headline-demo
$pnpm dlx shadcn@latest add https://ui.satisium.com/r/elastic-pop-headline-demo.json

Or install a specific demo variant:

elastic-pop-paragraph-demo
$pnpm dlx shadcn@latest add https://ui.satisium.com/r/elastic-pop-paragraph-demo.json

Manual

1. Install Dependencies

Dependencies
$pnpm add gsap @gsap/react clsx tailwind-merge

2. Add Source Code

Props

PropTypeDefaultDescription
textstringRequiredThe full string of text to reveal. Automatically splits by word or character.
asReact.ElementType"div"The HTML tag to render as.
splitBy"word" | "char""word"Whether to split and animate by word or individual character.
startScalenumber0.5Starting scale of the element before it pops in.
startOpacitynumber0Starting opacity of the element.
delaynumber0Delay before the animation begins (in seconds).
easestring"elastic.out(1, 0.4)"GSAP easing string configuring the spring's amplitude and frequency.
durationnumber1.5The duration of the reveal. Elastic eases need extra time to oscillate.
staggernumber0.05The stagger delay between each word/char revealing.
viewportOncebooleantrueIf true, plays once. If false, seamlessly reverses on scroll away.
triggerStartstring"top 90%"Viewport threshold for when the animation should start.