32 Best React Animation Libraries and Tools for Your Next Project
For a React interface with animated menus, changing layouts, and exit transitions, start with Motion. For a carefully timed sequence or a scroll-driven story, look at GSAP. If the interaction depends on spring values, React Spring deserves a closer look. And if you only need a hover fade, CSS may already cover the job.
This guide brings together 32 React animation libraries and related tools, from animation engines to ready-made components, Lottie players, 3D renderers, and video frameworks. They solve different problems, so the list is grouped by purpose rather than ranked from first to last.
Our recommendations are based on official documentation and editorial comparison, not hands-on performance benchmarks. The useful question is what you need to animate—and how much of that work you want to control yourself.
React Animation Libraries: Quick Picks
| Tool | Choose it for | How you work | Main consideration |
|---|---|---|---|
| Motion | State-driven UI, layout changes, and exits | Animation props on React components | Core features and paid Motion+ extras are separate |
| GSAP | Timelines, SVG effects, and scroll choreography | Script animations; integrate with useGSAP | Free commercial use under its own license, with restrictions on competing visual animation builders |
| React Spring | Spring-driven values and interactive movement | Hooks and animated elements | Gesture recognition can come from a separate tool |
| AutoAnimate | Adding, removing, and reordering list items | Attach a ref to the parent | Automatic behavior focuses on immediate children |
| Magic UI | Animated landing-page components | Add and customize component source | Free components and Pro templates are different offerings |
| Rive | Designer-authored interactive animation | Load a Rive asset through a runtime | Editor export plans are separate from runtime availability |
| React Three Fiber | Custom interactive 3D scenes | Describe Three.js objects in Reac | Requires knowledge of 3D concepts |
| Animate.css | Preset CSS entrances and attention effects | Apply CSS classes | Uses a Hippocratic license; review its conditions |
See also
Core Animation Libraries
Motion

Motion for React, previously Framer Motion, connects animation to React props and state. Its motion elements handle entrances, hover and tap feedback, layout changes, and scroll effects. AnimatePresence adds exit animation when a component leaves the tree.
The combination makes it a useful starting point for product interfaces: a menu, expandable panel, and moving selection indicator can share the same animation approach. You don’t have to introduce a separate tool for each of those jobs.
Best for: React apps with several kinds of interface animation.
Practical note: Install the motion package and import React features from motion/react. The React documentation distinguishes core features from Motion+ extras.
GSAP

GSAP gives you a timeline for coordinating several animations, alongside tools for scroll, SVG, and text effects. That control matters when a sequence has specific beats: reveal a heading, draw a path, then move an illustration as the reader scrolls.
Its animation code is framework-independent. In React, the official @gsap/react package provides useGSAP, which handles context-based cleanup for animations created inside the hook.
Best for: Choreographed marketing pages and sequences that need explicit timing.
Practical note: GSAP and formerly paid plugins are free for commercial use under the standard license. The license restricts certain competing visual animation builders. Follow the React integration guide for lifecycle handling.
React Spring

React Spring exposes animated values through hooks and animated elements. Its spring-based approach suits movement that should respond to a changing target, such as a panel following a drag interaction or an object settling into position.
The project supports several rendering targets, including the web and Three.js. That is useful when your experience spans ordinary HTML and a 3D canvas. You can work with the relevant target package instead of treating every animated surface as a DOM element.
Best for: Custom interactions built around spring-driven values.
Practical note: Use Gesture is a companion for interpreting drag or pinch input; React Spring handles the resulting animation. Check the package version against your React version before adopting it.
Anime.js

Anime.js combines animation, timelines, staggering, draggable behavior, scroll observation, and SVG utilities in a modular JavaScript API. It is a candidate when the design calls for coordinated shapes, path drawing, or patterned sequences across several elements.
React integration uses effects and an animation scope. That gives you a place to create the animation and a corresponding place to revert it when the component unmounts.
Best for: Custom DOM and SVG motion with a reusable JavaScript animation API.
Practical note: The official React example uses createScope and cleanup. Follow documentation for your installed version rather than combining examples from different major releases.
AutoAnimate

AutoAnimate watches a parent element and animates its immediate children when they are added, removed, or moved. A sortable list, dismissible notification stack, or changing set of filter results is a good match for that behavior.
Instead of specifying a transition for every item, you attach the utility to the container. React has a dedicated hook for this integration. The documentation also says animations disable automatically when the user requests reduced motion.
Best for: Adding motion to changing lists without designing a full animation sequence.
Practical note: Its automatic behavior centers on the parent and immediate children. Choose Motion or GSAP when the design needs more explicit control over a sequence.
Copy-paste Animated Component Libraries
Magic UI

Magic UI supplies animated components and effects built with React, TypeScript, Tailwind CSS, and Motion. It is positioned as a companion to shadcn/ui, with a catalog aimed at visually expressive interfaces and landing pages.
The benefit is a finished component to adapt, rather than an empty animation API. Choose an effect that supports the page’s message, then adjust its styling and movement to suit the rest of the site.
Best for: Landing pages that need ready-made animated elements.
Practical note: The public component collection is free; Magic UI Pro offers separate blocks and templates. Check the dependencies of the component you select.
React Bits

React Bits focuses on animated text, backgrounds, interface elements, and micro-interactions. Its official repository provides JavaScript and TypeScript variants with CSS or Tailwind styling, so you can choose a source that fits your project.
It is particularly useful when one section needs a distinctive visual effect. Adding selected components lets you keep that choice local instead of adopting a new animation approach for the whole application.
Best for: Expressive text and background effects in React websites.
Practical note: The license is MIT plus a Commons Clause condition. It permits commercial use in an application, website, or product, while restricting selling, sublicensing, or redistributing the components themselves.
Aceternity UI

Aceternity UI offers React and Tailwind components for animation-heavy interfaces, including distinctive cards, backgrounds, and page sections. Consider it when the design direction calls for a particular visual treatment and you want a component source to build from.
This is a component collection rather than a replacement for an animation engine. Your choice is usually a specific card, hero, or interaction, with the necessary styling and animation dependencies coming along with it.
Best for: Marketing sites and portfolios with a strong visual direction.
Practical note: Free components and paid Pro offerings are separate. Check each component’s implementation before assuming the entire catalog uses the same dependencies.
Motion Primitives

Motion Primitives provides reusable motion components built with Motion and Tailwind CSS. It gives engineers and designers a starting point for animated interface pieces without requiring them to define every transition from scratch.
The attraction is reusable component code around a familiar animation engine. Consider it when you already want Motion in the project and would benefit from a component implementation to adapt.
Best for: Teams building reusable animated interface components with Motion and Tailwind.
Practical note: The official repository is MIT licensed and labels the project beta. It warns that significant code updates are possible.
Animate UI

Animate UI distributes animated component source built with React, TypeScript, Tailwind CSS, Motion, and the shadcn CLI. You install the components you need, then modify them in your own project.
That workflow suits teams who want animated interface elements they can inspect and adjust. The component implementation supplies the starting behavior; the project can then tune timing, styling, and interactions to match its own requirements.
Best for: Editable animated components in a shadcn-style development workflow.
Practical note: The official repository is MIT licensed. Review the installed source and dependencies for the particular component you choose.
SmoothUI

SmoothUI offers animated primitives, page blocks, and starter templates with shadcn-compatible installation patterns. Its current site describes a React 19 and Tailwind CSS v4 foundation, with animation using Motion and GSAP.
That makes the framework version a meaningful part of the decision. For a project already using that stack, its components and sections can be starting points for both interaction design and page assembly.
Best for: React 19 and Tailwind v4 projects seeking animated components and page sections.
Practical note: The site has public components and premium offerings. Check the selected component’s dependencies and distinguish those components from separately sold blocks or templates.
Shadcn/ui

Shadcn/ui is a source-code foundation for building a design system, with components you add to your application and customize. It belongs in this list because several animated collections use the same distribution model and extend its interface patterns.
It is not a general animation engine. Choose it for the underlying interface structure, then add animation through your component styles or a tool such as Motion where the interaction calls for it.
Best for: The component foundation beneath an animated React interface.
Practical note: Keep its role clear: adding shadcn/ui does not automatically supply timelines, spring animation, or a complete motion system.
Scroll and Gestures
Lenis

Lenis handles smooth scrolling. It is relevant when a page’s motion depends on a controlled scroll experience, especially when you are coordinating DOM elements with a canvas or 3D scene.
It supplies the scrolling layer rather than a collection of animated React components. Decide whether the project needs that layer first; a page that only fades in a few sections may not need a separate smooth-scroll library.
Best for: Scroll-focused experiences that need configurable scrolling behavior.
Practical note: Compare it with Locomotive Scroll before installing both: the current Locomotive Scroll is built on Lenis and adds its own detection and animation layer.
Use Gesture

Use Gesture interprets input such as dragging, pinching, scrolling, and hovering. Its React integration gives you gesture information to connect to an animation library.
That separation is useful for a draggable panel or zoomable surface: Use Gesture describes the input, while React Spring or another engine controls how the interface responds. It is an interaction utility, so it should not be compared with a timeline engine as if both performed the same job.
Best for: Custom drag, pinch, and gesture-driven interfaces.
Practical note: The official documentation describes pairing it with animation frameworks, including React Spring and React Three Fiber.
React Scroll Parallax

React Scroll Parallax supplies hooks and components for scroll-driven effects on banners, images, and other DOM elements. It is a focused choice when the effect you need is tied to an element’s progress through the viewport.
The v4 documentation describes a beta built on the Web Animations API with ScrollTimeline or ViewTimeline. It includes translation, rotation, scale, and opacity animation linked to scrolling.
Best for: React pages with parallax banners and scroll-linked element effects.
Practical note: The linked docs are explicitly v4 beta, with separate v3 documentation available. They also flag Firefox timeline support and a polyfill requirement; check support for your target browsers.
Locomotive Scroll

Locomotive Scroll v5 combines Lenis-based smooth scrolling with in-view detection, scroll progress, and parallax effects. You can use its attributes and events to connect scrolling to the page’s visual behavior.
Choose it when you want that combined layer rather than assembling smoothing and element detection separately. The current version is a rewrite built on Lenis, so older examples may describe a substantially different implementation.
Best for: Pages combining smooth scrolling, viewport triggers, and parallax.
Practical note: The current site documents v5 and says mobile parallax is disabled by default with an opt-in attribute. Use version-matched examples when integrating it into React.
Vector, Lottie and interactive animation
Rive

Rive combines an animation editor with runtimes for playing interactive assets in an application. Its React runtime connects a designer-authored animation to the website, making it relevant for characters, interactive illustrations, and animated interface assets.
This workflow suits an animation that needs to be authored visually and then respond to application input. It is a different choice from directly animating the position of an HTML element.
Best for: Interactive assets created by designers and integrated by React developers.
Practical note: Rive’s current pricing allows free .riv exports with a splash screen; paid plans offer exports without it. Keep editor-plan conditions separate from the open-source runtimes.
Theatre.js

Theatre.js brings a sequence editor, graph editor, and other motion-design tools into the browser. It animates JavaScript values that your application can use for a UI, a Three.js scene, or another rendering setup.
Its value is visual control over a sequence. For example, a developer can connect camera properties to the animation, then refine the timing in the editor rather than adjusting every keyframe entirely in code.
Best for: Visually authored sequences and cinematic web scenes.
Practical note: It changes values; your application determines what those values control. Expect to build that connection to the scene or interface.
Lottie for Web

Lottie for Web is an asset-playback approach for vector animation. The dotLottie format packages animation data and related assets in a .lottie file.
For React, LottieFiles provides @lottiefiles/dotlottie-react. Its player supports both Lottie JSON and dotLottie files, making it a candidate for an existing animation asset you want to embed in a page. Use it for an illustration or loader designed as an asset, rather than for animating arbitrary React layout changes.
Best for: Playing prepared Lottie or dotLottie animations in React.
Practical note: The official player repository is MIT licensed. That does not establish the rights for a downloaded animation asset; check the asset’s license separately.
Mo.js

Mo.js provides shape-based animation tools, including Shape, ShapeSwirl, and Burst. It is a useful candidate for a small, expressive effect such as a burst around a successful action or a decorative shape transition.
The project includes a React tutorial that creates an animation inside an effect and stores it in a ref for playback control. This fits an effect you want to trigger from a component interaction.
Best for: Shape effects and bursts attached to specific interactions.
Practical note: The project is MIT licensed. Follow its React integration tutorial and adapt lifecycle handling to your application.
3D and Video
Remotion

Remotion uses React to make video compositions programmatically. It is useful when the output is a video: an animated explainer, a personalized clip, or a repeatable composition driven by data.
That output is the reason to choose it. An exported video has different requirements from a dialog transitioning on a live website, even though both can be described using React components.
Best for: Video and image generation built from React compositions.
Practical note: The current license allows free use for individuals, nonprofits, and for-profit organizations with up to three employees. Larger for-profit organizations require a company license. Recheck terms for the version you adopt.
React Three Fiber

React Three Fiber is a React renderer for Three.js. It lets you describe a 3D scene with React components, including meshes, materials, lights, and scene behavior.
Consider it when you need control over the scene itself, such as a custom product viewer or an interactive 3D environment. It supplies the bridge between React and Three.js; animation can then come from frame updates or additional animation tools.
Best for: Custom 3D experiences developed in React.
Practical note: It is a renderer, not a preset animation collection. Its introduction explains the expected Three.js knowledge and version compatibility.
React Spline

React Spline brings scenes from the Spline visual editor into a React website. The wrapper can load a scene, find objects, listen to events, and trigger interactions from application code.
That makes it an alternative workflow to building the scene directly in React Three Fiber. Choose React Spline when the scene is authored in Spline and the application needs to embed it and connect it to interface events.
Best for: Integrating visually authored Spline scenes into React pages.
Practical note: The React wrapper is MIT licensed. Spline’s editor plans have separate watermark and export conditions; free web exports include a watermark.
Transitions and Layout
React Transition Group

React Transition Group manages transition stages when elements enter or leave. CSSTransition connects those stages to CSS classes; other components help switch content and manage groups.
The official documentation is clear that it does not animate styles itself. You provide the visual transition. That makes it useful when your project already has CSS animations and mainly needs React to coordinate when classes apply and when existing elements can be removed.
Best for: React-managed entrances and exits using your own CSS.
Practical note: Treat it as transition coordination. If you need animated values, spring behavior, or a timeline, choose an engine that supplies those capabilities.
React Flip Toolkit

React Flip Toolkit focuses on layout transitions using the FLIP technique: compare an element’s earlier and later layout, then animate between them. Its Flipper and Flipped components identify the elements involved and the changes that should trigger animation.
The repository documents position, scale, opacity, spring configuration, and stagger effects. It is a candidate for a grid rearrangement or an element expanding between two layouts.
Best for: Configurable transitions between changing element layouts.
Practical note: It is MIT licensed. Compare its focused API with Motion’s layout features, and validate compatibility with the React version in your project.
React Move

React Move provides Animate for a single item and NodeGroup for collections that enter, update, and leave. Its API lets you specify duration, delay, easing, and animation lifecycle callbacks.
The data-driven model makes it relevant for chart marks or collections of SVG elements. Numeric interpolation is built in; the documentation explains using an additional interpolator for values such as colors, paths, and SVG transforms.
Best for: Data-driven HTML or SVG transitions, especially in existing React Move projects.
Practical note: The MIT-licensed repository’s installation guidance refers to older React generations. Treat modern React compatibility as a check before adopting it for a new project, not as established support.
Text and Micro-Interactions
NumberFlow

NumberFlow animates a displayed number when its value prop changes. It includes locale and formatting options, making it useful for prices, statistics, and counters that update while a user interacts with the page.
Its focus is the transition between values. A quantity selector or changing price can use this dedicated component without introducing a general animation engine solely to move digits.
Best for: Animated numeric displays that update with application state.
Practical note: The documentation says reduced-motion preferences are respected by default. Compare it with React CountUp when deciding between value transitions and a timed count toward a target.
React Type Animation

React Type Animation supplies a typewriter-style component with customizable sequences. It is a focused option for displaying text that types, pauses, and changes according to a planned sequence.
Use it where that timing contributes to the design, such as a short rotating hero phrase. It is less useful for text readers who need to access immediately; the animation should support the message rather than delay it.
Best for: Short scripted typewriter text in React.
Practical note: Keep essential information available without waiting through the sequence. That is an editorial accessibility recommendation, not a claim that the component supplies an automatic fallback.
React Awesome Reveal

React Awesome Reveal wraps content in animation components that reveal it as it enters the viewport. Its guide demonstrates Fade, cascading child effects, and controls for delay, duration, trigger behavior, and visibility thresholds.
That is a narrower task than full scroll choreography. Choose it for section entrances when you want reusable reveal components rather than a timeline that coordinates the whole page.
Best for: Viewport-triggered entrances for text and page sections.
Practical note: The homepage claims zero dependencies, while the installation guide still includes an Emotion peer dependency. Confirm the requirements of the package version you install.
React CountUp

React CountUp wraps CountUp.js in a React component and hook. It is designed for numeric count animations, with controls for start and end values, duration, formatting, and scroll-triggered playback.
A statistic that counts toward a target is the natural use case. Compare it with NumberFlow when a value will change repeatedly: one choice emphasizes the count animation, while the other automatically transitions a displayed value when its prop changes.
Best for: Timed count-up statistics and numeric highlights.
Practical note: The official repository provides the implementation guidance; use it instead of relying on a standalone demo URL.
CSS-first (Zero-JS)
These tools define animation in CSS. “Zero-JS” describes playback without a JavaScript animation engine; it does not mean every React interaction can be implemented without JavaScript.
TailwindCSS Motion

TailwindCSS Motion, distributed as tailwindcss-motion, adds animation utilities and presets to Tailwind CSS. Its classes describe effects such as translation and opacity, so you can compose an entrance in the same place you define the element’s styles.
This approach suits projects that want CSS animation expressed through utility classes. It can cover a preset effect without adding a general JavaScript animation engine for playback.
Best for: Tailwind projects with CSS-based entrances and preset effects.
Practical note: The official repository is MIT licensed. Zero-JS here means CSS animation playback; React state or other logic may still be needed to trigger an effect. Verify setup for your Tailwind version.
Animate.css

Animate.css provides named CSS animations for entrances, exits, and attention effects. You apply its classes to an element and configure details such as duration or delay using the documented options.
It is useful when a familiar preset covers the design requirement and you don’t need an animation engine. React can toggle the classes, while the stylesheet defines the movement.
Best for: Preset CSS animation in projects that do not need custom timelines.
Practical note: The official site lists a Hippocratic-2.1 license, not MIT. Review the actual license conditions. The stylesheet does not itself manage React unmount timing; coordinate exits in your component logic.
How to choose a React animation library
Start by identifying the output. A live interface, a Lottie asset, a 3D scene, and an exported video are different jobs. Choose from the relevant group before comparing individual libraries.
For ordinary product UI, Motion is our starting recommendation because its documented API covers state changes, layout movement, gestures, and exits. AutoAnimate is a more focused choice when adding and reordering children is the entire requirement. React Spring deserves consideration when you want to work directly with animated spring values.
For a coordinated sequence, compare GSAP and Anime.js. Both provide timeline-oriented tools; choose after reviewing how their APIs fit your animation and React lifecycle. For a visually authored sequence, consider Theatre.js, or Rive when the result is an interactive animation asset.
If you already know the effect you want, a component collection may get you closer to that result. Choose a specific component from Magic UI, React Bits, or another collection, then review its source, dependencies, and license. Copying the component source gives you control over that implementation, but you also take responsibility for maintaining your copy.
What to check before adding animation
- React and framework compatibility: match the package version to your React version and follow its client-component instructions where applicable.
- Reduced motion: preserve the information or interaction when movement is disabled. Motion offers reduced-motion guidance; apply equivalent consideration to the other tools you use.
- Lifecycle cleanup: destroy or revert animations, observers, and listeners when the component no longer needs them. The GSAP and Anime.js React guides show their respective cleanup patterns.
- Actual production cost: inspect the dependencies and built output of the components you use. A bundle-size number from a roundup cannot describe every import, plugin, asset, and build configuration.
- Licenses and assets: check the package license separately from editor subscriptions, exported assets, and downloaded illustrations. React Bits, GSAP, Remotion, and Animate.css have conditions worth reading.
Choose one main animation approach for the interface, then add a specialist when the design gives it a specific job. A small stack with clear responsibilities is easier to reason about than several libraries animating the same elements







