3D Browser Libraries for Product Video¶
Comparison of 3D and animation libraries for browser rendering, focused on use in programmatic video (Remotion) and product showcases.
Quick Decision Guide¶
| Goal | Best choice |
|---|---|
| 3D product video, full control | React Three Fiber + @remotion/three |
| No-code 3D scene + programmatic animation | Spline + Remotion |
| Pre-made After Effects animations | Lottie + @remotion/lottie |
| Complex 3D with visual keyframing | Three.js + Theatre.js + R3F |
| Simple 3D card flips, no dep | CSS 3D transforms |
| Browser website, scroll-driven | GSAP + Three.js |
Remotion Integration Status¶
| Library | Status | Package |
|---|---|---|
| React Three Fiber | Official | @remotion/three |
| Lottie | Official | @remotion/lottie |
| Spline | Documented | via @remotion/three |
| CSS 3D transforms | Native | standard React CSS |
| GSAP | Manual | needs frame adapter |
| Rive | None | - |
| Babylon.js | None | - |
| tsParticles | Manual | via canvas capture |
Full 3D Engines¶
React Three Fiber (R3F) - 9/10 for product video¶
React renderer for Three.js. Declarative component API - scenes are JSX trees.
import { Canvas } from '@react-three/fiber';
import { useCurrentFrame } from 'remotion';
import { ThreeCanvas } from '@remotion/three';
// Use ThreeCanvas from @remotion/three instead of Canvas
// It syncs Remotion frame timing with R3F render loop
const ProductScene: React.FC = () => {
const frame = useCurrentFrame();
return (
<ThreeCanvas width={1920} height={1080}>
<ambientLight intensity={0.5} />
<pointLight position={[10, 10, 10]} />
<mesh rotation={[0, (frame / 30) * Math.PI * 2, 0]}>
<boxGeometry args={[1, 1, 1]} />
<meshStandardMaterial color="royalblue" />
</mesh>
</ThreeCanvas>
);
};
Key difference from standalone R3F: use useCurrentFrame() instead of useFrame(). Remotion controls the clock.
Ecosystem: - @react-three/drei - helpers (OrbitControls, Environment, Text, etc.) - @react-three/postprocessing - bloom, depth of field, chromatic aberration - Leva - UI controls for development
Official template: remotion-template-three
Three.js - 8/10 for product video¶
Lower-level than R3F. More control, more boilerplate. Use when R3F abstractions are limiting.
import { ThreeCanvas } from '@remotion/three';
import * as THREE from 'three';
import { useRef, useEffect } from 'react';
import { useCurrentFrame } from 'remotion';
const ThreeScene: React.FC = () => {
const frame = useCurrentFrame();
const meshRef = useRef<THREE.Mesh>(null);
// Access Three.js objects directly via refs
return (
<ThreeCanvas width={1920} height={1080}>
{/* ... */}
</ThreeCanvas>
);
};
Claude Code skills for Three.js: - github.com/OpenAEC-Foundation/Three.js-Claude-Skill-Package - 24 skills (WebGL, WebGPU, R3F, Drei, physics, IFC) - github.com/CloudAI-X/threejs-skills - fundamentals - github.com/dgreenheck/webgpu-claude-skill - WebGPU + Three.js - github.com/Nice-Wolf-Studio/claude-skills-threejs-ecs-ts - Three.js + ECS + TypeScript - github.com/freshtechbro/claudedesignskills - 20+ skills including R3F
Babylon.js - 5/10 for product video¶
Full game engine: physics, audio, XR, visual editor. Overkill for product videos. No Remotion integration.
Use case: interactive 3D experiences, configurators, games - not video rendering.
No-Code / Visual 3D¶
Spline (spline.design) - 9/10 for product video¶
Best designer-developer workflow: designer builds scene in browser editor, developer animates via Remotion.
Features (2026): Text-to-3D, Image-to-3D, Apple Vision Pro preview, real-time collaboration.
Pricing: Free / $12 Starter / $20 Pro / $36 Team
Remotion integration: documented via @remotion/three. Import .splinecode files.
import Spline from '@splinetool/react-spline';
// Wrap in ThreeCanvas or use as React component
// Animate Spline object properties via frame-driven state
Workflow: Spline editor → export scene → import in Remotion → drive animation with useCurrentFrame().
Claude Code skills: freshtechbro/claudedesignskills includes spline-interactive.
Theatre.js - 7/10 for product video¶
Visual timeline editor for Three.js/R3F animations. Keyframing, sequence editor, scene graph. v0.5: all prop types are sequenceable.
No direct Remotion integration - export animations then drive from frame data.
Best for: creating complex 3D animations visually, then baking to keyframe data for Remotion.
Animation Libraries¶
Lottie - 7/10 for product video¶
After Effects animations exported to JSON. Official Remotion package.
import { Lottie } from '@remotion/lottie';
import { staticFile } from 'remotion';
<Lottie
animationData={require('./animation.json')}
// or
src={staticFile('animations/loading.json')}
/>
Library: LottieFiles.com - thousands of free animations. Filter by category, download JSON.
Performance vs Rive: Lottie files are ~4x larger, ~4x slower to parse. For video rendering this matters less than for interactive web.
Rive (rive.app) - 6/10 for product video¶
Interactive animations with state machines. 90% smaller files vs Lottie, 4x faster production. Used by Spotify, Duolingo, Disney.
No Remotion integration. Best for interactive UI animations, not video rendering.
GSAP + ScrollTrigger - 5/10 for product video¶
Most powerful web animation library. Excellent for scroll-driven websites. Not designed for frame-based video rendering.
No direct Remotion integration: GSAP uses real-time, Remotion uses frame numbers. Requires a custom adapter to translate useCurrentFrame() to GSAP timeline position.
Use outside Remotion for: landing pages, portfolio sites, scroll animations.
Claude Code skills: freshtechbro/claudedesignskills includes gsap-scrolltrigger.
Anime.js - 4/10 for product video¶
Lightweight DOM animation (~17KB, lite 3KB). v4.3.0 (Jan 2026) adds createLayout() for animating between layout states. No Remotion integration.
Use for: web UI animations, not video rendering.
Motion Canvas - 6/10 for product video¶
TypeScript library for programmatic video animations. Remotion competitor focused on educational/explainer content. Fork: Revideo (production migration target).
When to choose over Remotion: math-heavy explainer videos, programmatic diagram animations. Not for product showcase/marketing.
Claude Code skills: apoorvlathey/motion-canvas-skills on agentskills.so.
Lightweight Effects¶
CSS 3D Transforms - 6/10 for product video¶
Native perspective transforms. Zero dependencies. Works in Remotion as standard React CSS.
// 3D card flip
<div style={{
perspective: '1000px',
transformStyle: 'preserve-3d',
}}>
<div style={{
transform: `rotateY(${interpolate(frame, [0, 30], [0, 180], {
extrapolateRight: 'clamp'
})}deg)`,
}}>
Card content
</div>
</div>
Good for: card flips, book pages, simple 3D transforms. Not for complex 3D scenes.
tsParticles - 6/10 as accent element¶
Particle effects (confetti, fireworks, floating particles). React, Vue, Svelte, Angular integrations.
No Remotion official integration. Can capture via canvas and inject as video layer.
Use as accent/background, not primary content.
Vanta.js - 5/10 for product video¶
Pre-built animated backgrounds: birds, waves, globe, fog, clouds. Requires Three.js or p5.js.
No Remotion integration without canvas capture. Good as background texture in product shots.
2D Rendering¶
Pixi.js - 4/10 for product video¶
Fastest 2D WebGL/WebGPU renderer. Excellent for games and interactive 2D. No Remotion integration.
p5.js - 3/10 for product video¶
Creative coding (Processing for JavaScript). Generative art, visualizations. No Remotion integration without canvas capture.
Performance Comparison¶
| Library | Bundle Size | Parse Time | GPU Usage | Render in Remotion |
|---|---|---|---|---|
| CSS 3D | 0KB | 0ms | Low | Native |
| Lottie | ~40KB | Fast | Low | Official |
| Three.js | ~600KB | Medium | High | Via @remotion/three |
| R3F | ~800KB | Medium | High | Official |
| Babylon.js | ~2MB | Slow | High | None |
| GSAP | ~100KB | Fast | Low | Manual adapter |
Claude Code Skills Ecosystem¶
Primary collections¶
freshtechbro/claudedesignskills (main collection) - 20+ skills in one plugin: Three.js, R3F, GSAP, Babylon.js, PlayCanvas, Pixi.js, Lottie, Rive, Spline, Anime.js, A-Frame - github.com/freshtechbro/claudedesignskills
OpenAEC-Foundation/Three.js-Claude-Skill-Package - 24 deterministic Three.js skills: WebGL, WebGPU, R3F, Drei, physics, IFC - github.com/OpenAEC-Foundation/Three.js-Claude-Skill-Package
Specialized¶
github.com/CloudAI-X/threejs-skills- Three.js fundamentalsgithub.com/dgreenheck/webgpu-claude-skill- WebGPU + Three.jsgithub.com/Nice-Wolf-Studio/claude-skills-threejs-ecs-ts- Three.js + ECS + TypeScript (game dev)
TOP-5 for Product Videos¶
- R3F +
@remotion/three- 9/10 - full 3D in video, official support, React-native - Spline + Remotion - 9/10 - no-code 3D design + programmatic video
- Three.js +
@remotion/three- 8/10 - maximum control - Lottie +
@remotion/lottie- 7/10 - ready-made animations, fast - Theatre.js + R3F - 7/10 - visual timeline for complex 3D animations
Gotchas¶
useFrame()from R3F doesn't work in Remotion. Replace withuseCurrentFrame()from Remotion. The Remotion frame clock drives all animation - R3F's internal clock is bypassed.- Canvas capture for non-integrated libraries produces inconsistent frames. When capturing libraries like GSAP or Vanta.js through canvas, frame timing depends on real-time execution. During fast headless rendering, frames can be skipped or duplicated. Prefer official integrations.
- Spline scenes load async. In Remotion, the scene must be fully loaded before frames render. Wrap Spline components in a loading gate or use
delayRender()/continueRender(). - Three.js geometry is expensive per-frame if re-created. Create geometry in component body (runs once), not inside render logic. Use
useMemofor materials and geometries. - Babylon.js 2MB bundle impacts Lambda cold starts. For video pipelines using AWS Lambda, heavy bundles increase cold start time. Prefer Three.js or R3F.
- GSAP timeline position ≠ Remotion frame number. GSAP
seek(time)uses seconds, Remotion uses frames. The adapter:timeline.seek(frame / fps)before render.