Remotion video components for React: animation and motion graphics for product demo videos. Text reveals, karaoke captions, device mockups, logo stings and full scenes, owned as source.
A headline that types itself under a glowing caret, sheds its lead, morphs letter by letter, and ends under a colour flood.
A blinking text caret — a controlled vertical bar, or a pure motion atom that blinks deterministically from useCurrentFrame.
A text input whose idle/hover/active/typing/invalid state is a pure function of the timeline; the focus ring, border, caret, and value reveal are keyframed presets.
A name typing itself across two shots, and the number it was all for. Three shots on one clock: the name starts large and left-aligned, jump cuts to a smaller framing that pushes in as the words finish arriving, then cuts again to the version — set at the height of the frame, one glyph at a time, each arriving with a ramp through it that resolves to flat. The cuts are cuts; easing between the sizes turns a deliberate edit into a camera that could not make up its mind.
Burned-in captions in the styles big channels actually use — heavy Montserrat, a real outside outline so they read on any footage, and the spoken word springing to an accent. Four presets: beast, hormozi, pop, clean.
A headline types itself out, then one word cycles on a 3D flip — it sinks into an anticipation dip, throws up and away about its baseline under motion blur, and the next word unfurls from below. The slot is reserved from the first keystroke, so nothing in the sentence ever reflows.
A sentence that arrives one word at a time, out of order, and gathers. The first word holds the middle of the frame on its own; then the rest drop in around it — not in reading order and not where they belong — each landing near its slot in the accent colour and sliding the last of the way home, turning to ink as it settles. The line makes room for them as they come, and when the last one is down the whole block eases back to its real size. The layout is solved here rather than left to the browser, because a word has to be transformed from somewhere else to its slot and knowing where its slot is means having laid the line out yourself — which also means the line break cannot move while the block's scale is changing under it.
A wordmark twice the width of the frame, cooling from a lit gradient to ink while it settles, and then a hard cut onto its last letters and the dot — 1.71× nearer, with a shallow depth of field the wide shot does not have, which is the only thing that says the second shot is closer rather than just bigger. It holds a beat and pushes in, still accelerating on the last frame.
A field of words the camera flies through, one line of it that runs at the lens, and the line that answers on the other side. Words hang at random depths, tinted and mostly out of focus; the camera moves forward so they grow, sweep outward and pass either side while new ones fade up behind. One line holds the focal plane, resolves out of the blur, then accelerates at the camera and is gone in seven frames — and the closing line arrives a word at a time, each coming up out of defocus the same way. Position, size and blur are all the same 1/z projection.
A sentence that arrives a word at a time, hot, and cools as it lands. Two clocks running at different speeds: words appear left to right every couple of frames, and a colour head crosses the line more slowly behind them, turning the accent into the text colour as it passes — so the newest words are always warm and the oldest always settled. The whole sentence is laid out and centred once and unrevealed words are hidden rather than removed, so the line never reflows under the reader.
A column of words that spins like a reel and stops on one of them. A fixed lead-in holds the left of the line and the word that finishes the sentence lives in a slot beside it — one row of a taller column whose other words are visible above and below, smaller and grey, fading out toward the top and bottom of the frame. The reel rolls, decelerates over a second and three quarters and comes to rest with one word at full size and in ink. Every number in it was recovered frame by frame from a recording: the 34px row pitch that every baseline including the oversized one sits on, the 1.665x the selected word grows by, and the deceleration itself — which ships as a measured table rather than a curve, because the closest cubic-bezier is five pixels out at its worst and a fifth of a row is a visibly different frame.