NPM Star
Collections
  1. Home
  2. Compare
  3. framer-motion vs react-spring
NPM Compare

Compare NPM packages statistics, trends, and features

CollectionsVS Code extensionChrome extensionTermsPrivacyLinkTreeIndiehackersBig Frontendqiuyumi

React Animation Libraries: Framer Motion vs React Spring

Both packages help developers create smooth animations and transitions in React applications. Framer Motion is known for its simpler API and easy-to-use features, while React Spring focuses on spring physics-based animations. These libraries are popular choices when you want to add movement, transitions, and interactive animations to your website or app.

Animation Librariesreactanimationstransitionsuser-interfacemotion

Unable to load comparison data. Please try again later.

Similar Packages

popmotion

90%

A functional, flexible animation library that powers framer-motion under the hood. It gives you complete control over animations with simple functions.

Good for developers who want more control than framer-motion but don't want the complexity of react-spring. It's like getting the engine without the full car.

Animation Library

react-motion

80%

A simple animation library that uses springs for natural movement. It helps you create smooth animations using physics-based principles, making elements move in a more realistic way.

Perfect for developers who want simpler animations than framer-motion but still want natural-feeling movement. It's easier to learn and has been battle-tested in many projects.

Animation Library

react-move

70%

A library for beautifully animated React visualizations. It's especially good for data visualizations and charts that need smooth transitions.

While less popular than framer-motion, it's perfect for data-heavy applications that need smooth animations. Simpler API than framer-motion but still powerful.

Animation Library

react-transition-group

60%

A basic but powerful tool for adding enter and exit animations to React components. It's the official React animation add-on that helps manage component states during animations.

Great starting point for simple animations, especially if you're just learning. Works well with CSS animations and requires less JavaScript knowledge than other options.

Animation Library

auto-animate

60%

A zero-config animation utility that adds smooth transitions automatically. Just add one line of code and your elements will animate smoothly when they change.

Super easy to use with almost no setup required. Perfect for beginners who want quick, good-looking animations without learning complex animation concepts.

Animation Library
<h1 align="center"> <img width="35" height="35" alt="Motion logo" src="https://github.com/user-attachments/assets/00d6d1c3-72c4-4c2f-a664-69da13182ffc" /><br />Motion for React</h1> <h3 align="center"> An open source animation library<br />for React </h3> <p align="center"> <a href="https://www.npmjs.com/package/motion" rel="noopener noreferrer nofollow" ><img src="https://img.shields.io/npm/v/motion?color=0368FF&label=version" alt="npm version"></a> <a href="https://www.npmjs.com/package/motion" rel="noopener noreferrer nofollow" ><img src="https://img.shields.io/npm/dm/framer-motion?color=8D30FF&label=npm" alt="npm downloads per month"></a> <a target="_blank" rel="noopener noreferrer nofollow" href="https://www.jsdelivr.com/package/npm/motion"><img alt="jsDelivr hits (npm)" src="https://img.shields.io/jsdelivr/npm/hm/framer-motion?logo=jsdeliver&color=FF4FBA"></a> <img alt="NPM License" src="https://img.shields.io/npm/l/motion?color=FF2B6E"> </p>
npm install motion

Table of Contents

  1. Why Motion?
  2. 🍦 Platforms
  3. 🎓 Examples
  4. ⚡️ Motion+
  5. 👩🏻‍⚖️ License
  6. 💎 Contribute
  7. ✨ Sponsors

Why Motion?

  • Simple API: First-class React, JavaScript, and Vue packages.
  • Hybrid engine: Power of JavaScript combined with native browser APIs for 120fps, GPU-accelerated animations.
  • Production-ready: TypeScript, extensive test suite, tree-shakable, tiny footprint. Batteries included: Gestures, springs, layout transitions, scroll-linked effects, timelines.

🍦 Platforms

Motion is available for React, JavaScript and Vue.

<details> <summary>React</summary>
import { motion } from "motion/react" function Component() { return <motion.div animate={{ x: 100 }} /> }

Get started with Motion for React.

</details> <details> <summary>JavaScript</summary>
import { animate } from "motion" animate("#box", { x: 100 })

Get started with JavaScript.

</details> <details> <summary>Vue</summary>
<script> import { motion } from "motion-v" </script> <template> <motion.div :animate={{ x: 100 }} /> </template>

Get started with Motion for Vue.

</details>

🎓 Examples

Browse 100+ free and 180+ premium Motion Examples, with copy-paste code that'll level-up your animations whether you're a beginner or an expert.

⚡️ Motion+

A one-time payment, lifetime-updates membership:

  • 180+ premium examples
  • Premium APIs like Cursor and Ticker
  • Visual editing for VS Code (alpha)
  • Private Discord
  • Early access content

Get Motion+

👩🏻‍⚖️ License

  • Motion is MIT licensed.

💎 Contribute

  • Want to contribute to Motion? Our contributing guide has you covered.

✨ Sponsors

Motion is sustainable thanks to the kind support of its sponsors.

Become a sponsor

Partner

Motion powers Framer animations, the web builder for creative pros. Design and ship your dream site. Zero code, maximum speed.

<a href="https://framer.link/FlnUbQY"> <img alt="Framer" src="https://github.com/user-attachments/assets/22a79be7-672e-4336-bfb7-5d55d1deb917" width="250px" height="150px"> </a>

Platinum

<a href="https://linear.app"><img alt="Linear" src="https://github.com/user-attachments/assets/f9ce44b4-af28-4770-bb6e-9515b474bfb2" width="250px" height="150px"></a> <a href="https://figma.com"><img alt="Figma" src="https://github.com/user-attachments/assets/1077d0ab-4305-4a1f-81c8-d5be8c4c6717" width="250px" height="150px"></a> <a href="https://sanity.io"><img alt="Sanity" src="https://github.com/user-attachments/assets/80134088-f456-483f-8edd-940593c120ce" width="250px" height="150px"></a>

Gold

<a href="https://tailwindcss.com"><img alt="Tailwind" src="https://github.com/user-attachments/assets/1d5f2571-8bc3-4367-9fec-14d291168ff0" width="200px" height="120px"></a> <a href="https://emilkowal.ski"><img alt="Emil Kowalski" src="https://github.com/user-attachments/assets/33d1cb98-238a-4eed-a0df-9c7ab097d65b" width="200px" height="120px"></a> <a href="https://liveblocks.io"><img alt="Liveblocks" src="https://github.com/user-attachments/assets/28eddbe5-1617-4e74-969d-2eb6fcd481af" width="200px" height="120px"></a> <a href="https://vercel.com"><img alt="Vercel" src="https://github.com/user-attachments/assets/abc473bd-07ae-4a7d-9833-efe9dadb3773" width="200px" height="120px"></a> <a href="https://lu.ma"><img alt="Luma" src="https://github.com/user-attachments/assets/ac282433-6adb-4ad2-9fd2-5c6ee513c14b" width="200px" height="120px"></a>

Silver

<a href="https://www.frontend.fyi/?utm_source=motion"><img alt="Frontend.fyi" src="https://github.com/user-attachments/assets/f16e3eb9-f0bd-4ad1-8049-f079a3d65c69" width="150px" height="100px"></a> <a href="https://firecrawl.dev"><img alt="Firecrawl" src="https://github.com/user-attachments/assets/2c44e7f4-5c2a-4714-9050-1570538665ff" width="150px" height="100px"></a> <a href="https://puzzmo.com"><img alt="Puzzmo" src="https://github.com/user-attachments/assets/e32205a7-3ab1-41ec-8729-a794058fd655" width="150px" height="100px"></a> <a href="https://bolt.new"><img alt="Bolt.new" src="https://github.com/user-attachments/assets/7932d4b2-bb6c-422e-82b9-6ad78a7e3090" width="150px" height="100px"></a>

Personal

  • OlegWock
  • Lambert Weller
  • Jake LeBoeuf
  • Han Lee
<p align="center"> <img src="https://i.imgur.com/QZownhg.png" width="240" /> </p> <br /> <h1 align="center">react-spring</h1> <h3 align="center">A spring-physics first animation library <br>giving you flexible tools to confidently cast your ideas</h3> <br> <p align="center"> <a href="https://www.npmjs.com/package/react-spring" target="_blank"> <img src="https://img.shields.io/npm/v/react-spring.svg?style=flat&colorA=000000&colorB=000000" /> </a> <a href="https://www.npmjs.com/package/react-spring" target="_blank"> <img src="https://img.shields.io/npm/dm/react-spring.svg?style=flat&colorA=000000&colorB=000000" /> </a> <a href="https://discord.gg/ZZjjNvJ" target="_blank"> <img src="https://img.shields.io/discord/740090768164651008?style=flat&colorA=000000&colorB=000000&label=discord&logo=discord&logoColor=ffffff" alt="Chat on Discord"> </a> </p> <br>

react-spring is a cross-platform spring-physics first animation library.

It's as simple as:

const styles = useSpring({ from: { opacity: 0 }, to: { opacity: 1 } }) <animated.div style={styles} />

Just a small bit about us:

  • Cross-Platform: We support react-dom, react-native, react-three-fiber, react-konva & react-zdog.
  • Versatile: Be declarative with your animations or if you prefer, imperative.
  • Spring-Physics First: By default animation use springs for fluid interactivity, but we support durations with easings as well.

There's a lot more to be had! Give it a try and find out.

Getting Started

⚡️ Jump Start

# Install the entire library npm install react-spring # or just install your specific target (recommended) npm install @react-spring/web
import { animated, useSpring } from '@react-spring/web' const FadeIn = ({ isVisible, children }) => { const styles = useSpring({ opacity: isVisible ? 1 : 0, y: isVisible ? 0 : 24, }) return <animated.div style={styles}>{children}</animated.div> }

It's as simple as that to create scroll-in animations when value of isVisible is toggled.

📖 Documentation and Examples

More documentation on the project can be found here.

Pages contain their own examples which you can check out there, or open in codesandbox for a more in-depth view!


📣 What others say

<p align="middle"> <img src="assets/testimonies.jpg" /> </p>

Used by

<p align="middle"> <a href="https://nextjs.org/"><img width="285" src="assets/projects/next.png"></a> <a href="https://codesandbox.io/"><img width="285" src="assets/projects/csb.png"></a> <a href="https://aragon.org/"><img width="285" src="assets/projects/aragon.png"></a> </p>

And many others...

Backers

Thank you to all our backers! 🙏 If you want to join them here, then consider contributing to our Opencollective.

<a href="https://opencollective.com/react-spring#backers" target="_blank"> <img src="https://opencollective.com/react-spring/backers.svg?width=890"/> </a>

Contributors

This project exists thanks to all the people who contribute.

<a href="https://github.com/react-spring/react-spring/graphs/contributors"> <img src="https://opencollective.com/react-spring/contributors.svg?width=890" /> </a>

Dependencies Comparison

framer-motion

Dependencies

tslib^2.4.0
motion-dom^12.23.12
motion-utils^12.23.6

Dev Dependencies

three0.137.0
@types/three0.137.0
@thednp/dommatrix^2.0.11

Peer Dependencies

react^18.0.0 || ^19.0.0
react-dom^18.0.0 || ^19.0.0
@emotion/is-prop-valid*

react-spring

Dependencies

@react-spring/core~10.0.3
@react-spring/konva~10.0.3
@react-spring/native~10.0.3
@react-spring/three~10.0.3
@react-spring/web~10.0.3
@react-spring/zdog~10.0.3

Dev Dependencies

Peer Dependencies

react^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
react-dom^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
StarsIssuesVersionUpdatedⓘLast publish dateCreatedⓘPackage creation dateSizeⓘMinified + Gzipped size
F
framer-motion
29,79629812.23.15a month ago6 years agoinstall size 56.4 KB
R
react-spring
28,88613010.0.3a month ago7 years agoinstall size 19.3 KB