Changelog
Releases across Motion, Motion UI, Motion AI Kit, and Motion Studio.
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.
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
Added
- MCP:
search-motion-codexnow returns Motion UI components and sections (Motion+ / React) as full multi-file paste-ready source — same delivery model as examples, baked into the package.
- MCP:
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
curtains/useCurtains: Cover/reveal page and element transitions.
Changed
- Skills: Add MotionScore runtime performance profiling to
/motion.
- Skills: Add MotionScore runtime performance profiling to
Changed
- Skills: Unified all skills into one
/motionskill.
- Skills: Unified all skills into one
Added
- MCP: Hardened response to missing
sharpdependency.
- MCP: Hardened response to missing