Type Repeater

An After Effects style repeater on a word, where copies unfold into a tunnel, a spiral or a fan behind it, breathe, then fold back into the word

Installation
$ pnpm dlx shadcn@latest add @remocn/type-repeater

Usage

tsx
// src/Root.tsx
import { AbsoluteFill, Composition } from "remotion";
import { TypeRepeater } from "@/components/remocn/type-repeater";
 
const Beat = () => (
  <AbsoluteFill style={{ backgroundColor: "#ff4d1a" }}>
    <TypeRepeater text="Repeat" mode="tunnel" color="#111111" accent="#fafafa" />
  </AbsoluteFill>
);
 
export const RemotionRoot = () => (
  <Composition
    id="TypeRepeater"
    component={Beat}
    durationInFrames={100}
    fps={30}
    width={1280}
    height={720}
  />
);

Copy 0 is the word itself and never moves. Every further copy gets one more step of the mode's transform, scaled by the spread:

  • tunnel grows each copy by 1.2× around the center, a zoom tunnel behind the word.
  • spiral grows each copy by 1.1× and turns it 12°.
  • fan turns copies 11° to alternating sides around a pivot below the word.

The word comes in over ten frames. The spread opens over frames 10 to 34 with a small overshoot, breathes by 6% until frame 70, and folds back to zero by frame 90. Copies step from color toward accent and fade with their index. With outline on, the copies are outlines built from their filled glyphs by an SVG filter, which keeps the variable font's overlapping contours out of sight.

The component paints no background and centers the word in its parent. Sizes scale with height / 720.

Props11

PropTypeDefault
text
string"Repeat"

The word to repeat

mode
"tunnel" | "spiral" | "fan""tunnel"

The repeater transform

copies
number12

Number of copies including the word

fontSize
number110

Font size in reference px at 720p

fontWeight
number800

Font weight

fontFamily
stringInter

Font family

color
string"#fafafa"

Color of the word and the first copies

accent
string"#D97757"

Color the last copy steps to

outline
booleantrue

Draw the copies as outlines

speed
number1

Timeline speed multiplier

className
string—

Optional className passed to the wrapper

  • textstring

    The word to repeat

    Default"Repeat"

  • mode"tunnel" | "spiral" | "fan"

    The repeater transform

    Default"tunnel"

  • copiesnumber

    Number of copies including the word

    Default12

  • fontSizenumber

    Font size in reference px at 720p

    Default110

  • fontWeightnumber

    Font weight

    Default800

  • fontFamilystring

    Font family

    DefaultInter

  • colorstring

    Color of the word and the first copies

    Default"#fafafa"

  • accentstring

    Color the last copy steps to

    Default"#D97757"

  • outlineboolean

    Draw the copies as outlines

    Defaulttrue

  • speednumber

    Timeline speed multiplier

    Default1

  • classNamestring

    Optional className passed to the wrapper