Transitionsv4.0.59
The <TransitionSeries> component lets you animate between absolutely positioned scenes. Between any two sequences, you can place a <TransitionSeries.Transition> or a <TransitionSeries.Overlay>.
Transitions
A transition animates from one scene to the next. During the transition, both scenes render simultaneously and the total duration is shortened.
SlideTransition.tsximport {linearTiming ,TransitionSeries } from "@remotion/transitions"; import {slide } from "@remotion/transitions/slide"; constBasicTransition = () => { return ( <TransitionSeries > <TransitionSeries .Sequence durationInFrames ={40}> <Letter color ="#0b84f3">A</Letter > </TransitionSeries .Sequence > <TransitionSeries .Transition presentation ={slide ()}timing ={linearTiming ({durationInFrames : 30 })} /> <TransitionSeries .Sequence durationInFrames ={60}> <Letter color ="pink">B</Letter > </TransitionSeries .Sequence > </TransitionSeries > ); };
Enter and exit animations
You can also animate the entrance or exit of a scene by putting a transition first or last in the <TransitionSeries>.
Duration
In the above example, A is visible for 40 frames, B for 60 frames and the duration of the transition is 30 frames.
During this time, both slides are rendered. This means the total duration of the animation is 60 + 40 - 30 = 70.
Getting the duration of a transition
You can get the duration of a transition by calling getDurationInFrames() on the timing:
Assuming a framerate of 30fpsimport {springTiming } from "@remotion/transitions";springTiming ({config : {damping : 200 } }).getDurationInFrames ({fps : 30 }); // 23
Overlaysv4.0.415
An <TransitionSeries.Overlay> renders children on top of the junction between two sequences without shortening the timeline. The sequences remain at full length — the total duration stays the same.
This is useful for effects like light leaks, flashes, or other visual elements that should appear over a cut without affecting timing. The overlay is centered on the cut point by default.
OverlayExample.tsximport {LightLeak } from '@remotion/light-leaks'; import {TransitionSeries } from '@remotion/transitions'; constOverlayExample = () => { return ( <TransitionSeries > <TransitionSeries .Sequence durationInFrames ={60}> <Fill color ="#0b84f3" /> </TransitionSeries .Sequence > <TransitionSeries .Overlay durationInFrames ={20}> <LightLeak /> </TransitionSeries .Overlay > <TransitionSeries .Sequence durationInFrames ={60}> <Fill color ="pink" /> </TransitionSeries .Sequence > </TransitionSeries > ); };
See <TransitionSeries.Overlay> for full API details.
Presentations
A presentation determines the visual of the animation.
fade()slide()wipe()flip()clockWipe()iris()cube()none()Timings
A timing determines how long the animation takes and the animation curve.
springTiming()spring()linearTiming()Audio transitions
See here how to include audio effects in your transitions.