Changelog
Releases across Motion, Motion UI, Motion AI Kit, and Motion Studio.
Fixed
AnimatePresence: FireonExitCompleteafter exiting children unmount.AnimatePresence:popLayoutchildren that don't acceptrefare now popped when root component is<motion>element.- Fix interpolation of axis
rotateandskewtransforms during shared layout animation. - Fix layout animations when
layoutis enabled after mount. - Fix
dragjumping to0after animatex/yto CSS variable. arc: Fix path animations withanimate.- Ensure shared elements are freed from memory when unmounted.
- Fix accelerated independent transform animations vanishing when they start from a float residue.
Fixed
- Fix velocity hand-off for hardware-accelerated springs.
cubicBezier: More accurate, 2x faster.Reorder: Fix click events on reoredered items.useTransform: Fix desync when source is set in an effect under Strict Mode.
Changed
<motion>: Fall back to the attribute in readSVGValue when computed style is empty.<motion>: Internal changes toanimateChangesfor size reductions.
Fixed
scroll: Temporarily reverted removal of internalobserveTimelineAPI to fix compatibility with previous13.xAPIs. Moving to pinned dependencies before removing in14.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>: FixsortNodePositionthrowing when a sibling hasn't mounted
Changed
scroll/useScroll: Moreoffsets are now hardware accelerated viaViewTimeline.
Fixed
animate: Reduced size of Motion Studio introspection call.useTransform: Accelerated values now correctly clamp.scroll/useScroll: Ensure offsets work the same across the JS main thread andViewTimeline.scroll/useScroll: RemoveScrollTimeline/ViewTimelineobserver in favour of main-thread scroll tracking.
Fixed
AnimatePresence:mode="wait"no longer drops new children ifexitcompletes during a React transition.
Fixed
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.
Changed
scroll: 44% smaller.useScroll: 33% smaller.- Scroll callbacks: 50% faster.
- Removed
ScrollTimelinesupport for JS callbacks as benchmarked no improvement overscrollInfo.
Fixed
useDragControls: FixedsnapToCursororigin drift on repeated calls.drag: Improvedpointerendtiming.spring: Check invalid spring values before applying.AnimatePresence: Ensure children don't stick during reentry.
Fixed
<motion>: Ensure animations replay whenSuspensereveals memoized content.
Fixed
Reorder: Don't scale position of elements at origin0whendragConstraintschanges.- Unrecognised easing names no longer throw.
Fixed
animate: CSS variable writes on SVGs apply tostyleattribute.
Fixed
- Guard animation
windowaccess in non-browser runtimes. AnimatePresence: Improved compat with React 19 strict mode.
- Guard animation
Fixed
animateView: Cropped group layers now animateborder-radiusfrom the old to new radius.
Fixed
animateView: Old layer fade out now cancelled when defining.new().
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
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.
Fixed
- Improve detection of detached elements with vanilla layout animations.
Fixed
AnimatePresence: Ensure exiting nodes are correctly removed when rapidly switching children.
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.
Fixed
- Allow drag to be initiated by child
aandbuttonelements.
- Allow drag to be initiated by child
Fixed
Reorder: Fixed viewport autoscroll.
Fixed
- Updates to layout animations.
Fixed
useAnimate: Now respects reduced motion settings set viaMotionConfig.