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
Removed internal APIs restored in 13.5.1 for compatibility with framer-motion 13.0–13.4. Future removed internal APIs won't cause cross-compatibility
13.5.1 for compatibility with framer-motion 13.0–13.4. Future removed internal APIs won't cause cross-compatibility issues since pinning internal framer-motion, motion-dom and motion-utils dependencies.: Fall back to the attribute in readSVGValue when computed style is empty.
<motion>: Fall back to the attribute in readSVGValue when computed style is empty.<motion>: Internal changes to animateChanges for size reductions.scroll: Temporarily reverted removal of internal observeTimeline API to fix compatibility with previous 13.x APIs. Moving to pinned dependencies before removing in 14.x.styleEffect: Cleaning up an earlier value no longer removes a value that was bound to the same key after it.svgEffect: No longer writes transforms and origins as attributes.<motion>: inherit={false} now correctly not inheriting parent animations.<motion>: Fix sortNodePosition throwing when a sibling hasn't mountedOne column per quarter.
spring: Now accepts negative bounce (0--1) to define overdamped springs.
spring: Now accepts negative bounce (0--1) to define overdamped springs.<m>: 20% smaller.useSpring: 10% smaller.scroll/useScroll: Use main thread for all offset animations.warning and error messages are cleaned from production build.AnimatePresence: mode="wait" no longer drops new children if exit completes during a React transition.
AnimatePresence: mode="wait" no longer drops new children if exit completes during a React transition.layout: Fix relative child jumping when parent interrupts layout animation.
layout: Fix relative child jumping when parent interrupts layout animation.AnimatePresence: Can no longer drop a child added while another exit animation completes.Reorder: Only clear Reorder.Group's reorder guard when values change.spring/useSpring: 5% smaller.Removed ScrollTimeline support for JS callbacks as benchmarked no improvement over scrollInfo.
scroll: 44% smaller.useScroll: 33% smaller.ScrollTimeline support for JS callbacks as benchmarked no improvement over scrollInfo.useDragControls: Fixed snapToCursor origin drift on repeated calls.drag: Improved pointerend timing.spring: Check invalid spring values before applying.AnimatePresence: Ensure children don't stick during reentry.: Ensure animations replay when Suspense reveals memoized content.
<motion>: Ensure animations replay when Suspense reveals memoized content.Reorder: Don't scale position of elements at origin 0 when dragConstraints changes.
Reorder: Don't scale position of elements at origin 0 when dragConstraints changes.animate: CSS variable writes on SVGs apply to style attribute.
animate: CSS variable writes on SVGs apply to style attribute.AnimateView: View transitions for React 19.3, built on React's ViewTransition.
AnimateView: View transitions for React 19.3, built on React's ViewTransition.springValue/useSpring: 80% reduction in time when retargeting.
springValue/useSpring: 80% reduction in time when retargeting.animate: 10% smaller.animate: 20% reduction in startup time.animate: 10% reduction in per-frame JS.frame: Frame scheduling 10% faster.animate: Fixed path drawing calculations.animate.addEffect() for registering effects that lets animate drive non-DOM subjects alongside DOM elements.
animate.addEffect() for registering effects that lets animate drive non-DOM subjects alongside DOM elements.threeEffect (motion/three) supporting Three.js objects, materials, shader uniforms, TSL uniform nodes and more.vgpuEffect (motion/vgpu) supporting shared uniforms, Effect/Draw/Compute bindings ("params.time"), scene nodes, cameras, lights, materials, orbit controls, CSS colors and vector components.createEffect now accepts test, read and step options and exposes bound motion values via effect.get().spring.MotionValueState no longer caches values in latest; effect renders read their motion values directly. set() drops its useDefaultValueType argument.Guard animation window access in non-browser runtimes.
window access in non-browser runtimes.AnimatePresence: Improved compat with React 19 strict mode.Nothing published for this version
Reorder: Multidimensional reorder.
Reorder: Multidimensional reorder.Reorder: Automatic axis detection.Reorder: RTL support.Removed optional @emotion/is-prop-valid dependency in favour of explicit .
@emotion/is-prop-valid dependency in favour of explicit <MotionConfig isValidProp={isPropValid}>.AnimatePresence: Ensure nodes are marked as safe to remove when rendering propagate with no motion children.Nothing published for this version
Hardware acceleration for backgroundColor in supported browsers.
backgroundColor in supported browsers.AnimatePresence: Exiting children no longer interleave with entering children, which could reorder and remount children present in both renders.motion: Throw error when passing a custom motion component an incorrect ref type.animateView: Cropped group layers now animate border-radius from the old to new radius.
animateView: Cropped group layers now animate border-radius from the old to new radius.animateView: Old layer fade out now cancelled when defining .new().
animateView: Old layer fade out now cancelled when defining .new().animateView: Layers are automatically grouped to match their DOM-hierarchy. New .group(false) method opts-out.
animateView: Layers are automatically grouped to match their DOM-hierarchy. New .group(false) method opts-out.animateView: Auto-crop is now aspect-ratio aware, disabling crops for matching aspect-ratios.animateView: Disabled automatic border-radius animation.animateView: Moves from Motion+ Early Access and alpha to main library.
animateView: Moves from Motion+ Early Access and alpha to main library.animateView: .add() resolves a CSS selector or Element to automatically generate, apply and remove view-transition-name.animateView: .new() and .old() configures values to animate on new and old layers.animateView: .layout() can set a custom transition on the size/position animation of the currently selected elements.animateView: Group layers now automatically crop with children set to cover, with border-radius animating from old radius to new. .crop(false) disables this behaviour.animateView: .class(name) tags currently selected elements with a view-transition-class as a custom CSS hook.AnimatePresence: Prevent stuck exit animations when children interrupt.drag: Child e.stopPropagation() no longer break drag end.motion package.animateLayout: Improve handling of parallel/interleaved calls.animateView: .enter() and .exit() now refer specifically to new and old layers where there are no matching old or new layers.animateView: Interrupted transition setups now return resolved animation rather than throwing.### Added - path option to transition. - arc() for motion along an arc.
path option to transition.arc() for motion along an arc.Support for repeatType and repeatDelay in animation sequences.
repeatType and repeatDelay in animation sequences.dragSnapToOrigin no longer leaves the drag transform stranded after a layout swap.LazyMotion: Share React contexts between the framer-motion and framer-motion/m (and therefore motion/react and motion/react-m) CJS bundles so that <m.div> from the /m subpath picks up features loaded by <LazyMotion> from the main entry point.useScroll: Support hydrating target and container refs from anywhere in the tree.<AnimatePresence initial={false} />.dragConstraints, when set as viewport-relative ref, no longer break on scroll.§visualElement hydration order.useAnimate: Now respects skipAnimations.AnimatePresence: Fix object-form initial values not applied on re-entry after exit completes.scroll: Fixed callback progress when tracking an element.useScroll: Fix hardware acceleration when tracking an element.Added layoutAnchor prop to configure custom anchor point for resolving relative projection boxes.
layoutAnchor prop to configure custom anchor point for resolving relative projection boxes.Reorder: Fix axis switching after window resize.Reorder: Fix with virtualised lists.AnimatePresence: Ensure children are removed when exit animation matches current values.Support for hardware accelerating "start" and "end" offsets in scroll and useScroll.
"start" and "end" offsets in scroll and useScroll.oklch, oklab, lab, lch, color, color-mix, light-dark color types.whileInView with client-side navigation.useSpring reports correct isAnimating().Allow dragSnapToOrigin to accept "x" or "y" for per-axis snapping.
dragSnapToOrigin to accept "x" or "y" for per-axis snapping.layout="x" and layout="y".skipInitialAnimation to useSpring.height and width: auto animations with box-sizing: border-box.anticipate easing returns 1 at p === 1.@emotion/is-prop-valid resolve error in Storybook.data-pop-layout-id from exiting elements when animation interrupted.MotionValue props are not passed to SVG.AnimatePresence: Prevent mode="wait" elements from getting stuck when switched rapidly.Reduced filesize of styleEffect.
styleEffect.popLayout.opacity animations in React Strict Mode in development.useSpring is not affected by monitor framerate.%-based translation.autoplay: false with WAAPI animations.calc() values before making animatable templates.Fixing combination of string keyframes, spring and delay.
delay.animation.time = 0 on a finished animation sets the playhead in a paused state.ViewTimeline support for scroll and useScroll.
ViewTimeline support for scroll and useScroll.Ensure final WAAPI styles are always committed synchronously to prevent flash of incorrect styles in Firefox.
typeof window checks.Ensure onComplete fires at the end of an animation sequence.
onComplete fires at the end of an animation sequence.Ensure velocity is never transferred to a time-derived spring.
velocity is never transferred to a time-derived spring.Layout animations: Reset motion value velocity when starting a new layout animation.
useScroll: Ensure animations aren't hardware accelerated when target is set.
useScroll: Ensure animations aren't hardware accelerated when target is set."none" generation for mask values.useScroll: Hardware accelerated animations.
useScroll: Hardware accelerated animations.Nothing published for this version
Improve detection of detached elements with vanilla layout animations.
: New propagate.tap prop prevents tap gestures from propagating to parents.
<motion>: New propagate.tap prop prevents tap gestures from propagating to parents.transition.inherit: When true, inherit transition values from less-specific transitions.
transition.inherit: When true, inherit transition values from less-specific transitions.: Ensure animation state is reset after being re-suspended.
<motion>: Ensure animation state is reset after being re-suspended.transitionEnd and transition.type: false.onHoverStart and onHoverEnd first argument now correctly typed as PointerEvent.
onHoverStart and onHoverEnd first argument now correctly typed as PointerEvent.whileHover: No longer persists after drag end.AnimatePresence: Allow changing mode prop.Drag constraints updated even when draggable or constraints resize outside of React renders.
animate: Support for bi-directional callbacks within animation sequences.
animate: Support for bi-directional callbacks within animation sequences.onPan never fires before onPanStart.Allow drag to be initiated by child a and button elements.
a and button elements.MotionConfig: Add skipAnimations option.
MotionConfig: Add skipAnimations option.animate: Prevent error when calling stop() on removed elements.animateLayout: Fixing shared element animations when animate called before animateLayout.Reorder: Fixed viewport autoscroll.
Reorder: Fixed viewport autoscroll.### Fixed - Updates to layout animations.
Nothing published for this version
transformViewBoxPoint: Scale drag gestures within elements where viewBox and rendered width/height are mismatched.
transformViewBoxPoint: Scale drag gestures within <svg> elements where viewBox and rendered width/height are mismatched.trackContentSize: New scroll and useScroll option for tracking changes to content size.motion.create().layoutDependency.Add default value type px for fontSize.
px for fontSize.radius.LazyMotion animates initial state even when state has changed before Motion is loaded.Ensure scale: "0%" isn't treated as default value.
scale: "0%" isn't treated as default value.Nothing published for this version
Nothing published for this version
Ensure pen gesture is correctly cleaned up on drag cancel.
DocumentProjectionNode's attached element was null.AnimatePresence: anchorY for vertically positioning popped children.
AnimatePresence: anchorY for vertically positioning popped children.Ensure drag gestures trigger from keyboard-accessible elements (button, textarea etc) if these elements have drag applied directly.
button, textarea etc) if these elements have drag applied directly.Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →