Changelog
Releases across Motion, Motion UI, Motion AI Kit, and Motion Studio.
Added
drag: Drag gesture added to JavaScript API.
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.
Added
stagger: Newgrid,from: "edges" | "random"options.- Support for
scaleZ.
Fixed
- Fix matrix3d and other digit-named transform functions being tokenised as numbers.
useSpring: Ensure when switching targets we animate to the new target on switch.- Fix SVG MotionValue children being written as a children attribute.
Added
- Hardware accelerated independent transforms like
x,y,scaleXetc.
- Hardware accelerated independent transforms like
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.
Added
Gallery: Switching togrid, its cells fade in outward from the centre on the transition'sdelay, liketransition={{ arrange: { delay: stagger(0.05) } }}.Gallery: The detail strip's stagger takesstagger()'sfrom, sotransition={{ close: { delay: stagger(0.04, { from: "last" }) } }}closes it from the outside in.
Changed
Gallery: Opening detail fades the whole strip in as one staggered wave, both sides of the open item together.Gallery: An item that changes places without flying there moves with its neighbours as it fades.
Fixed
Gallery: Items gather behind the active one again when switching togrid.Gallery: New options of the same arrangement, like a ring'srotateX, blend its camera as one piece again.Gallery: Switching away fromgridafter paging no longer flies the previously active item off alone, or others in from where they were last drawn.Gallery: Closing detail just after a change no longer flies the previously open item out of the strip.
Fixed
Gallery: Closing detail fades the whole strip out together. Thumbnails with no place in view to return to no longer linger.Gallery: Paging on straight after switching togridno longer hides the item paged to.Gallery: Switching away fromgridno longer resizes its items to the next arrangement's item size as they fade out.
Added
Gallery:rearrangeoption andshift()preset set the state an item fades in from when it changes places without flying there.Gallery:rearrangeFromoption sets where the stagger starts as the detail strip opens or closes.Gallery:gatheroption. Items collapse behind the active one when switching togrid.
Fixed
Gallery: Items no longer fly across the view whenlooporarrangechanges. They fade out and in on the side they belong.Gallery: Opening and closing detail fades the other items between the arrangement and the strip.Gallery: The camera no longer swings between arrangements, so items entering the new one fade in where they belong.
Added
animateLayout: Layout animations for vanilla JS.
Fixed
- Delay animation start when main thread held to prevent visual jumps.
- Fix
whileHover/whileTapgetting stuck after Fast Refresh reorders siblings. scroll/useScroll: Fix reporting of elastic overscroll.AnimatePresence: FixpopLayoutwhen rendering into another window or iframe.animate: Fix JS animations jumping ahead when played after a pause at non-1speed.- Allow layout animations inside dragged elements.
Added
Gallery: 2D and 3D gallery animations with list and detail view.
Changed
- Requires
motion@^14.1.0. - Improved tree shaking.
Removed
animateLayoutmoved tomotion.
Changed
- Removed internal APIs restored in
13.5.1for compatibility withframer-motion13.0–13.4. Future removed internal APIs won't cause cross-compatibility issues since pinning internalframer-motion,motion-domandmotion-utilsdependencies.
- Removed internal APIs restored in
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
Added
spring: Now accepts negativebounce(0--1) to define overdamped springs.
Changed
<m>: 20% smaller.useSpring: 10% smaller.scroll/useScroll: Use main thread for alloffsetanimations.
Fixed
- Ensure
warninganderrormessages are cleaned from production build. - Ensure values are never rendered before they've been resolved.
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.
Changed
- Requires
motion@^13.0.0. motionis now a peer dependency ofmotion-plusandmotion-plus-dom, so it must be explicitly installed alongside them.
- Requires
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.
Added
- Unlock free Ultramotion allowance for all members.
- Allow undo/redo via Ultramotion.
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.
Added
- First release.
Added
AnimateView: View transitions for React 19.3, built on React'sViewTransition.
Added
- Hooks for Motion Editor.
Changed
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.
Fixed
animate: Fixed path drawing calculations.
Added
animate.addEffect()for registering effects that letsanimatedrive 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/Computebindings ("params.time"), scene nodes, cameras, lights, materials, orbit controls, CSS colors and vector components.createEffectnow acceptstest,readandstepoptions and exposes bound motion values viaeffect.get().
Changed
- Reduced filesize and improved performance of
spring. MotionValueStateno longer caches values inlatest; effect renders read their motion values directly.set()drops itsuseDefaultValueTypeargument.
Fixed
- Guard animation
windowaccess in non-browser runtimes. AnimatePresence: Improved compat with React 19 strict mode.
- Guard animation
Added
Reorder: Multidimensional reorder.Reorder: Automatic axis detection.Reorder: RTL support.
Changed
- Removed optional
@emotion/is-prop-validdependency in favour of explicit<MotionConfig isValidProp={isPropValid}>.
Fixed
- Hardware-accelerated SVG elements correctly apply final style on animation complete.
AnimatePresence: Ensure nodes are marked as safe to remove when renderingpropagatewith nomotionchildren.
- Removed optional
Added
- Hardware acceleration for
backgroundColorin supported browsers. - Hardware acceleration for SVG elements.
Fixed
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 custommotioncomponent an incorrectreftype.
- Hardware acceleration for