Six months ago, our React app's animation stack looked like a dependency graveyard:

Rive for interactive vector graphics

GSAP for timeline-based UI animations

Lottie for JSON animations imported from design

Framer Motion for React-specific transitions