Spring Scale In

Words pop in with a soft overshoot scale, like a spring settling into place

Installation

$ pnpm dlx shadcn@latest add @remocn/spring-scale-in

Usage

// src/Root.tsx
import { Composition } from "remotion";
import { SpringScaleIn } from "@/components/remocn/spring-scale-in";

const SpringScaleInScene = () => (
  <SpringScaleIn text="Fast. Crisp. Fluid." staggerDelay={3} scaleFrom={0.7} />
);

export const RemotionRoot = () => (
  <Composition
    id="SpringScaleIn"
    component={SpringScaleInScene}
    durationInFrames={60}
    fps={30}
    width={1280}
    height={720}
  />
);

With Backdrop

The component renders transparent — supply the background via Backdrop. It ships single-theme; edit the copied file to re-theme colors.

Pair with Backdrop to place the text inside a full-frame fill with a rounded, shadowed content frame:

import { Composition } from "remotion";
import { SpringScaleIn } from "@/components/remocn/spring-scale-in";
import { Backdrop } from "@/components/remocn/backdrop";

const SpringScaleInScene = () => (
  <Backdrop fill={{ type: "color", value: "#ffffff" }}>
    <SpringScaleIn text="Fast. Crisp. Fluid." staggerDelay={3} scaleFrom={0.7} />
  </Backdrop>
);

export const RemotionRoot = () => (
  <Composition
    id="SpringScaleIn"
    component={SpringScaleInScene}
    durationInFrames={60}
    fps={30}
    width={1280}
    height={720}
  />
);

Props

PropTypeDefaultDescription
textrequired
stringThe text to animate
staggerDelay
number3Per-word delay in frames between each word popping in.
scaleFrom
number0.7Starting scale each word grows from. The easing overshoots slightly past 1 before settling.
fontSize
number72Font size in pixels
fontWeight
number600CSS font-weight
color
string"#171717"Text color (any valid CSS color)
className
stringOptional className passed to the underlying span