Compare
How Onda is different.
Most code-driven motion looks like a 2009 After Effects export — or it's so generic the brand vanishes inside it. Here's an honest read on where Onda fits and where it doesn't.
The honest matrix
7 rowsCapability
Roll your own
with Remotion primitives
AE templates
Envato, Motion Array, …
Framer Motion
inside Remotion
Onda
this library
Distribution
How the thing reaches your project
Programmatic data
Pass real values from your app at render time
Motion identity
A consistent way things move across components
Premium defaults
Looks finished with zero configuration
Scene-grade blocks
TitleCard, LowerThird, StatCard, EndCard — ready to drop in
AI-agent friendly
Zod-typed props an LLM can generate against
Render pipeline
Where the pixels come from
Same moment, three ways
Animate a hero title. Three ways to get there, one of which reads instantly as Onda.
Roll your own
~38 linesimport { AbsoluteFill, useCurrentFrame, useVideoConfig, spring, interpolate, Easing } from 'remotion';
export const HeroTitle = ({ text }: { text: string }) => {
const frame = useCurrentFrame();
const { fps } = useVideoConfig();
const progress = spring({
frame, fps,
config: { damping: 200, stiffness: 100, mass: 1 },
durationInFrames: 18,
});
const opacity = interpolate(progress, [0, 1], [0, 1], {
extrapolateLeft: 'clamp',
extrapolateRight: 'clamp',
easing: Easing.bezier(0.16, 1, 0.3, 1),
});
const y = interpolate(progress, [0, 1], [16, 0], {
extrapolateLeft: 'clamp',
extrapolateRight: 'clamp',
});
const blur = interpolate(progress, [0, 1], [12, 0], {
extrapolateLeft: 'clamp',
extrapolateRight: 'clamp',
});
return (
<AbsoluteFill style={{ alignItems: 'center', justifyContent: 'center' }}>
<div style={{
opacity,
transform: `translateY(${y}px)`,
filter: `blur(${blur}px)`,
fontSize: 96,
fontFamily: '"Clash Display", sans-serif',
fontWeight: 600,
color: '#F2F2F4',
}}>
{text}
</div>
</AbsoluteFill>
);
};Springs, easings, blur, layout — every primitive wired by hand. Total control, zero identity.
AE template
$24Cinematic Title Intro
Volume 12
Edit-in-After-Effects. Export an .mp4.
Designed-looking, but the same fingerprint as every other buyer. No props, no data.
Onda
1 importimport { BlurReveal } from '@/components/onda/blur-reveal/BlurReveal';
<BlurReveal text="Onda" />Premium defaults, signature spring, owned source. Same moment, one component.
Where each one wins
No tool is right for every job. Here's when you should pick something other than Onda — and when Onda is the answer.
Roll your own
You need a motion language no library can give you, you like the boilerplate, and you have the time to maintain it.
AE templates
You need fifty stock-footage business intros by tomorrow and you are paying specifically for the "designed-looking" preset.
Framer Motion
You are already deep in React UI-animation patterns and your video is essentially a longer landing page.
Onda
You want code-first videos that do not look generated, with Zod-typed props an AI agent can compose against.
Onda is for people who care about how it feels.
38 components, one motion identity, source you own. Free, MIT, built on Remotion.