Framer Motion

Motion (formerly Framer Motion) is an open-source animation library for React, JavaScript, and Vue with over 30,000 GitHub stars, serving as the industry standard animation solution. It features a hybrid engine combining JavaScript with native browser APIs to deliver 120fps GPU-accelerated animations, offering comprehensive features like gestures, springs, layout transitions, and scroll effects through a simple API.

animation
animationreactvuegesturestransitions

๐ŸŽฎ Playground

Loading playground...
Use cases
  • โ€ขMicro-interactions and UI transitions in modern web applications - button hovers, modal entrances, page transitions
  • โ€ขScroll-based interactive storytelling for product landing pages - parallax effects, element entrance/exit animations
  • โ€ขDrag and drop and gesture-based interface implementations - kanban boards, image galleries, swipe cards
  • โ€ขLayout animations and shared element transitions - grid/list view switches, detail page expansion effects
  • โ€ขChart animations in dashboards and data visualizations - number count-ups, graph drawing effects
Good for
  • โœ“Declarative and intuitive API that simplifies complex animations - seamlessly integrates with React component paradigm
  • โœ“Hybrid engine delivers 120fps GPU-accelerated performance - combines JavaScript flexibility with native browser API speed
  • โœ“Production-ready complete animation toolkit including gestures, drag, layout animations, and scroll-linked effects
  • โœ“Full TypeScript support, tree-shakable, and small bundle size optimized for production environments
  • โœ“Supports React, JavaScript, and Vue with 280+ examples and an active community
Not good for
  • โœ—Premium features (Cursor, Ticker, 180+ examples) require paid Motion+ membership - advanced use cases may be limited with free tier alone
  • โœ—Learning curve exists for complex animation chains and timeline compositions - requires time investment to understand core concepts
Installation
$ npm install framer-motion
Example
import { motion } from "framer-motion"

export default function Demo() {
  return (
    <motion.div
      initial={{ opacity: 0 }}
      animate={{ opacity: 1 }}
      transition={{ duration: 0.5 }}
    >
      Hello World
    </motion.div>
  )
}
Comparison

"More intuitive API than React Spring, more features than CSS animations."

Trust Metrics

31K

GitHub Stars

21M

Weekly Downloads

Last Commit:Feb 9, 2026
Used by
FramerStripeNetflix