Changelog
Releases across Motion, Motion+, Motion UI, and Motion AI Kit.
Fixed
animateView: Cropped group layers now animateborder-radiusfrom the old to new radius.
Fixed
animateView: Old layer fade out now cancelled when defining.new().
Changed
animateView: Layers are automatically grouped to match their DOM-hierarchy. New.group(false)method opts-out.
Fixed
animateView: Auto-crop is now aspect-ratio aware, disabling crops for matching aspect-ratios.animateView: Disabled automaticborder-radiusanimation.
Added
animateView: Moves from Motion+ Early Access and alpha to main library.animateView:.add()resolves a CSS selector orElementto automatically generate, apply and removeview-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 tocover, withborder-radiusanimating from old radius to new..crop(false)disables this behaviour.animateView:.class(name)tags currently selected elements with aview-transition-classas a custom CSS hook.
Fixed
AnimatePresence: Prevent stuck exit animations when children interrupt.drag: Childe.stopPropagation()no longer break drag end.- Fixing Next.js OOM on Windows when importing via
motionpackage. animateLayout: Improve handling of parallel/interleaved calls.
Changed
animateView:.enter()and.exit()now refer specifically tonewandoldlayers where there are no matchingoldornewlayers.animateView: Interrupted transition setups now return resolved animation rather than throwing.
Added
pathoption totransition.arc()for motion along an arc.
Added
- Support for
repeatTypeandrepeatDelayin animation sequences.
Fixed
- Variants: Re-run keyframe animations when switching between variant labels even when they share identical keyframe arrays.
- Drag: Preserve in-flight motion value animations across React 19 reorder unmount/remount so
dragSnapToOriginno longer leaves the drag transform stranded after a layout swap. LazyMotion: Share React contexts between theframer-motionandframer-motion/m(and thereforemotion/reactandmotion/react-m) CJS bundles so that<m.div>from the/msubpath picks up features loaded by<LazyMotion>from the main entry point.useScroll: Support hydratingtargetandcontainerrefs from anywhere in the tree.- Drag: Gesture no longer starts from incorrect start point when rendered inside
<AnimatePresence initial={false} />. - Drag:
dragConstraints, when set as viewport-relative ref, no longer break on scroll.§ - Updated
visualElementhydration order. useAnimate: Now respectsskipAnimations.AnimatePresence: Fix object-forminitialvalues not applied on re-entry after exit completes.scroll: Fixed callback progress when tracking an element.useScroll: Fix hardware acceleration when tracking an element.
- Support for
Added
- Added
layoutAnchorprop to configure custom anchor point for resolving relative projection boxes.
Fixed
Reorder: Fix axis switching after window resize.Reorder: Fix with virtualised lists.AnimatePresence: Ensure children are removed when exit animation matches current values.
- Added
Added
- Support for hardware accelerating
"start"and"end"offsets inscrollanduseScroll. - Support for
oklch,oklab,lab,lch,color,color-mix,light-darkcolor types.
Fixed
- Fix
whileInViewwith client-side navigation. - Fix draggable elements when layout updates due to surrounding element re-renders.
- Improved memory pressure of layout animations.
- Ensure motion value returned from
useSpringreports correctisAnimating().
- Support for hardware accelerating
Added
- Allow
dragSnapToOriginto accept"x"or"y"for per-axis snapping. - Added axis-locked layout animations with
layout="x"andlayout="y". - Added
skipInitialAnimationtouseSpring.
Fixed
- Fixed
heightandwidth: autoanimations withbox-sizing: border-box. - Reset component values when exit animation finishes.
- Ensure
anticipateeasing returns1atp === 1. - Fix
@emotion/is-prop-validresolve error in Storybook. - Remove
data-pop-layout-idfrom exiting elements when animation interrupted. - Ensure we skip WAAPI for non-animatable keyframes.
- Ensure we skip WAAPI for SVG transforms.
- Ensure
MotionValueprops are not passed to SVG. AnimatePresence: Preventmode="wait"elements from getting stuck when switched rapidly.
- Allow
Fixed
- Reduced filesize of
styleEffect. - Fix rounding from
popLayout. opacityanimations in React Strict Mode in development.- Ensure
useSpringis not affected by monitor framerate. - Updating animations sequence segment types to exclude lifecycle handlers.
- Fix layout animations with parents offset by a
%-based translation. - Fix
autoplay: falsewith WAAPI animations. - Fix layout jump in React Strict Mode in development.
- Detect divide-by-zero in CSS
calc()values before making animatable templates.
- Reduced filesize of
Fixed
- Fixing combination of string keyframes, spring and
delay. - Gracefully handle negative scroll values.
- Fix one-frame visual gap when rapidly switching WAAPI animations.
animation.time = 0on a finished animation sets the playhead in a paused state.
- Fixing combination of string keyframes, spring and
Added
ViewTimelinesupport forscrollanduseScroll.
Fixed
- Handle
%translate values in layout animations.
- Handle
Fixed
- Ensure final WAAPI styles are always committed synchronously to prevent flash of incorrect styles in Firefox.
- Prevent Next.js from caching
typeof windowchecks. - Improve projection node cleanup.
- Variant propagation fixed for asynchronously-mounted children.
Fixed
- Ensure
onCompletefires at the end of an animation sequence.
- Ensure
Fixed
- Ensure
velocityis never transferred to a time-derived spring.
- Ensure
Fixed
- Layout animations: Reset motion value velocity when starting a new layout animation.
Fixed
useScroll: Ensure animations aren't hardware accelerated whentargetis set.- Improve animatable
"none"generation for mask values.
Added
useScroll: Hardware accelerated animations.
Fixed
- Improve detection of detached elements with vanilla layout animations.
Fixed
AnimatePresence: Ensure exiting nodes are correctly removed when rapidly switching children.
Added
<motion />: Newpropagate.tapprop prevents tap gestures from propagating to parents.
Added
transition.inherit: Whentrue, inherit transition values from less-specific transitions.
Fixed
<motion />: Ensure animation state is reset after being re-suspended.- Prevent stale values when mixing
transitionEndandtransition.type: false. - Drag: Fix "sticky" throw velocity on initial interaciton.
- Drag: Ensure catching a thrown element kills its velocity.
Fixed
onHoverStartandonHoverEndfirst argument now correctly typed asPointerEvent.whileHover: No longer persists after drag end.AnimatePresence: Allow changingmodeprop.
Added
- Drag constraints updated even when draggable or constraints resize outside of React renders.
Added
animate: Support for bi-directional callbacks within animation sequences.
Fixed
- Ensure
onPannever fires beforeonPanStart.
Fixed
- Allow drag to be initiated by child
aandbuttonelements.
- Allow drag to be initiated by child
Added
MotionConfig: AddskipAnimationsoption.
Fixed
animate: Prevent error when callingstop()on removed elements.animateLayout: Fixing shared element animations whenanimatecalled beforeanimateLayout.
Fixed
Reorder: Fixed viewport autoscroll.