NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #4107 most downloaded on npm
A simple and powerful JavaScript animation library
Last release 2 days ago
02 Oct 2026
Release timing varies
gaps range from 8 days to 2 months
Nearly every release is documented
notes for 60 of the last 60 stable releases
1 version withdrawn
withdrawn after publishing
8 years old
1404 releases · first in 2019
Adding .duration to animate(). sequences.
.duration to animate(). sequences.### Fixed - Removing log from useSpring.
useSpring.Improving scroll animation startup time.
One column per quarter.
Nothing published for this version
Fixing animation scope with animation sequences.
Recalculating and rerendering relative targets when layout is remeasured.
### Added - Animation sequencing.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Fixed use of multiple easing functions with WAAPI animations.
Fixing from option in stagger().
from option in stagger().Fixing duration: 0 animations never ending.
duration: 0 animations never ending.Further loosening animate() overloads.
animate() overloads.### Changed - Loosening animate() overloads.
animate() overloads.SVG and SVG path types for animate().
stagger()animate().Default transitions no longer need to be namespaced under default.
default.Nothing published for this version
Complex string types interpolate correctly with WAAPI spring easing.
cancel(), complete() and speed to animate().
cancel(), complete() and speed to animate()."easeIn", "easeOut" and "easeInOut" easing functions are now WAAPI spec-compliant..stop() stops animations permanently.useSpring timing.animate() with repeat: 1 and repeatType "reverse" or "mirror" correctly applies final keyframe.useAnimate() provides a composable way to use animate().
useAnimate() provides a composable way to use animate().animate() now supports DOM elements and DOM selectors.
animate() now supports DOM elements and DOM selectors.### Fixed - Updating README.
Using frame timestamp, when available, to sample time.
Applying target CSS variable at the end of animation.
Fixed time Promise on instant animation.
time Promise on instant animation.time, play(), pause() and then() to animations created with animate().
time, play(), pause() and then() to animations created with animate().Adding de-opt to projection tree when relative target has changed.
Refactored animate to resolve for time instead of timeDelta.
animate to resolve for time instead of timeDelta.delay will now apply to "inertia" animations.Unifying AnimationPlaybackControls types.
AnimationPlaybackControls types.Feature type to fix Next build errors.Restoring DeprecatedLayoutGroupContext for legacy Smart Components in Framer.
DeprecatedLayoutGroupContext for legacy Smart Components in Framer.Passing low restSpeed and restDelta to useSpring().
restSpeed and restDelta to useSpring().Vanilla JS entry point framer-motion/dom.
framer-motion/dom.Frame-batched event handlers. This means external event handlers are now batched on the next animation frame, allowing React to correctly batch state
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Fixing "Non-numeric offset" error in older browsers.
offset" error in older browsers.Reducing keyframe pregeneration duration by 75%.
Removed DeprecatedLayoutGroupContext.
background-color animations are now hardware accelerated.IntersectionObserver. Use a polyfill for support in older browsers.DeprecatedLayoutGroupContext.exitBeforeEnter with AnimatePresence now throws an error.value.onChange will now throw a warning with instructions to change to value.on("change", callback).AnimateSharedLayout now throws an error.repeat: Infinity no longer de-opts from pre-generated WAAPI animations.Nothing published for this version
Nothing published for this version
Switching const enum for types.
const enum for types.Exporting scroll for internal use inside Framer.
scroll for internal use inside Framer.### Fixed - Changing Feature to Feature .
Feature<any> to Feature<unknown>.### Fixed - Fixing types of useScroll.
useScroll.Limiting propagation of dirty projection nodes for improved layout animation performance.
Replacing type enum with const enum for smaller bundlesize.
type enum with const enum for smaller bundlesize.Removing external dependencies.
Hardware acceleration of clipPath, filter and transform styles.
clipPath, filter and transform styles.Improving types of color.parse().
color.parse().Exporting animation types for internal Framer use.
Adding legacy Popmotion exports for internal Framer use.
25% speed improvement for transform string creation.
Deprecated fallback behavior for missing IntersectionObserver.
motion component features to load without React components.IntersectionObserver.Nothing published for this version
Reorder.Item no longer throws an error within MotionConfig strict.
Reorder.Item no longer throws an error within MotionConfig strict.Tap events no longer suspend tabindex attribute for the duration of the gesture.
tabindex attribute for the duration of the gesture.Your coding agent can read these notes before it upgrades. Set up the MCP server →