build69
build69  /  Components  /  Motion — Transitions & Decorative  /  Grow

Grow

v1.0.2Updated 22 Sept 2026

Fades its child in while scaling it from 0.95 to 1 — a subtle, restrained entrance that reads as 'appearing in place' rather than flying in. A `transformOrigin` prop anchors the scale, so a popover can grow out of the corner nearest its trigger. Gentler than Zoom, which scales all the way from 0.

Preview

Live · 3 stories
Grow DemoOpen ↗
▸Why this is recommendedgrowtransitionanimationscale+4

Grow — demo.

Recommended for+14
  • ✓Growing a menu or popover out of its trigger corner
  • ✓Revealing a tooltip or hover card in place
  • ✓Showing a dropdown panel under a toolbar button
  • ✓Subtly introducing a card without moving it
Tags+6
growtransitionanimationscalemotionmuipopoverdemo
Features+4
  • Combined opacity fade + gentle scale (0.95 -> 1)
  • transformOrigin anchors the scale to any edge or corner
  • Configurable duration / delay / easing per instance
  • unmountOnExit removes the child from the DOM after exit
  • Respects prefers-reduced-motion (snaps, no animation)
  • data-state attribute for debugging
Not recommended for−2
  • ✕Attention-grabbing entrances (use Zoom)
  • ✕Directional entrances from off-screen (use Slide)
  • ✕Page-level route transitions

Install

Ask your agent, or call the MCP tool directly. The resolved bundle is written into your project.

get_registry_item({ name: "Grow" })

Usage

import { Grow } from '@/components/motion/transitions/grow';

<Grow in={open} transformOrigin="top left" duration={250}>
  <PopoverPanel>Menu</PopoverPanel>
</Grow>

Tick variants in the left menu — each adds a tab with that variant’s real story source, the same code the preview above renders.

Props

PropTypeRequired
in

Whether the child is shown; drives the transition

booleanyes
transformOrigin

CSS transform-origin for the scale. Default 'center center'

string—
duration

Duration in ms. Default 200

number—
delay

Delay in ms before the transition starts. Default 0

number—
easing

Timing function. Default 'ease-out'

'ease' | 'ease-out' | 'ease-in' | 'linear'—
unmountOnExit

Remove the child from the DOM after exit. Default false

boolean—
className

Extra classes merged onto the wrapper element

string—
style

Extra inline styles; transition-driven properties take precedence

React.CSSProperties—
ref

Ref to the wrapper element (React 19 ref-as-prop)

React.Ref<HTMLDivElement>—
children

Content to grow

React.ReactNodeyes

Related