Motion has become the default animation library for React applications by providing a declarative API that makes complex animations accessible without deep understanding of CSS animations or the Web Animations API. The motion component wrapper transforms any HTML or SVG element into an animatable target, with props for initial state, animation targets, hover effects, tap interactions, drag behavior, and scroll-triggered animations that compose naturally with React's component model.
The layout animation system is Motion's most distinctive capability. When elements change position or size due to state changes, Motion automatically generates smooth transitions between the old and new layouts. Shared layout animations enable elements to morph seamlessly between different components, creating the fluid page transitions and expanding card effects that define premium web experiences. These animations would require complex FLIP calculations to implement manually.
Evolved from Framer Motion and now maintained independently, Motion supports spring physics for natural-feeling motion, keyframe sequences for complex multi-step animations, stagger effects for animating groups of elements, and AnimatePresence for exit animations that play before elements unmount. The library integrates with React Server Components through a client component boundary pattern and provides a vanilla JavaScript API for non-React projects needing the same animation capabilities.