DEV Community

Cover image for Best Animation Libraries for ReactJS
Suraj Vishwakarma
Suraj Vishwakarma

Posted on • Originally published at surajondev.com

Best Animation Libraries for ReactJS

Introduction

ReactJS is the most popular and loved framework among web developers for developing the frontend. From the launch, it has seen only growth. There are tons of libraries on the web for ReactJS that made React more awesome.

Today, we are going to look into some of the best animation libraries that will help you to create animation. These libraries are easy to install, learn and create animation.

So let's get started.

Framer Motion

A production-ready motion library for React. Utilize the power behind Framer, the best prototyping tool for teams. Proudly open source.

Framer Motion

Installation

npm i framer-motion
Enter fullscreen mode Exit fullscreen mode

Usage

Imports

import { motion } from "framer-motion";
Enter fullscreen mode Exit fullscreen mode

Code

In a motion.div tag, you define the animation of the component.

  • animate:You define the properties of the animation here. These are CSS properties.

  • transition: You define the transition properties here. Such as repeat, duration, etc.

<motion.div
        animate={{ x: 400, borderRadius: 50 }}
        transition={{ repeat: Infinity, duration: 1 }}
        className="circle"
      />
Enter fullscreen mode Exit fullscreen mode

CodeSandbox Example

React Spring

react-spring is a spring-physics based animation library that should cover most of your UI related animation needs.

React Spring

Installation

npm i react-spring
Enter fullscreen mode Exit fullscreen mode

Usage

Imports

import { useSpring, animated } from "react-spring";
Enter fullscreen mode Exit fullscreen mode

Code

We have imported two things useSpring and animated.

  • useSpring: We define all the properties of the animation and transition here. from define the initial properties of the element and to is the final properties.

  • animate: It is used to define the element for the transition. It works as a component that takes style as the defined animation in useSpring.

  const props = useSpring({
    to: { y: 200, opacity: 0.5 },
    from: { y: 0, opacity: 1 },
  });

  <animated.div style={props} className="circle"></animated.div>

Enter fullscreen mode Exit fullscreen mode

CodeSandbox Example

React Motion

A spring that solves your animation problems.

React Motion

Installation

npm i react-motion
Enter fullscreen mode Exit fullscreen mode

Usage

Imports

import { Motion, spring } from "react-motion";
Enter fullscreen mode Exit fullscreen mode

Code

  • Motion: Every animation and property is wrapped inside the Motion component. It contains the default style and animation properties using spring.
<Motion
        defaultStyle={{
          translateX: 0,
          opacity: 0,
        }}
        style={{
          translateX: spring(200),
          opacity: spring(1),
        }}
      >
        {(interpolatedStyles) => (
          <div
            style={{
              transform: `translateY(${interpolatedStyles.translateX}px)`,
              opacity: `${interpolatedStyles.opacity}`
            }}
            className="circle"
          ></div>
        )}
      </Motion>
Enter fullscreen mode Exit fullscreen mode

CodeSandbox Example

Refersh to play the animation

Last Note

These are 3 Animation libraries for ReactJS that I like and use in my project for animation.

I hope you will try to use one of the libraries in your next project. Thanks for reading the post.

Discussion (2)

Collapse
adithyahere profile image
Adithya

👍Great article and how about GSAP.js?

Collapse
surajondev profile image
Suraj Vishwakarma Author

I haven't tried it yet