Changelog
Releases across Motion, Motion+, Motion UI, Motion AI Kit, and Motion Studio.
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.
Added
- Reduced motion mode. A new switch in the Studio panel makes CSS,
matchMedia()anduseReducedMotion()act as if your system asks for reduced motion. While the panel is open, the page follows the switch, even when your system setting is different. The Studio panel still follows your real setting. - Edit a reduced motion version of a single animation or a component. With reduced motion mode on, your edits change only what users who ask for reduced motion see. The full motion animation stays as it is. Sequences, scroll and value animations, and Vue components do not have reduced motion versions yet.
- Edit existing
useReducedMotion()andmatchMedia("(prefers-reduced-motion: reduce)")conditions. Studio reads them as reduced motion versions, and Apply writes your edits into the condition that is already there. - Disable or enable a track in full motion mode with "Disable animation" and "Enable animation" in its right-click menu. A disabled track goes straight to its end state with no motion, and its row shows at half opacity.
- In reduced motion mode, "Remove track" and "Delete animation" turn off only the reduced motion version. The full motion animation stays. "Delete animation" removes an animation that runs only for reduced motion. On a sequence or a Vue component, both refuse and change nothing.
- Copy a reduced motion version into the full motion animation with "Apply to base animation" in the right-click menu. "Reset override" removes the reduced motion version.
- Create reduced motion versions in one step. In reduced motion mode, when the selection has no reduced motion versions yet, the first chat suggestion, "Adapt for reduced motion", converts every animation in it. The other suggestions in reduced motion mode only remove or shorten motion. Entrances and exits become a short opacity fade (0.3 seconds or less), and an entrance still ends where the full motion animation leaves it. Other movement, such as a hover or a loop, turns off. Opacity, colour, filter and shadow changes stay, and so do delays and staggers. The result arrives as one chat reply, so one undo reverts it and Apply writes the code. On a component, it converts the selected pose. Sequences, scroll and value animations, and Vue components stay as they are.
- Use "Add animation" in reduced motion mode to make an animation that runs only for reduced motion.
- With reduced motion mode on, ask Ultramotion or your coding agent for "no motion when reduced". In reduced motion mode, chat edits change only the reduced motion version. With reduced motion mode off, ask it to turn an animation off or on.
- See a notice once per session when Studio starts in reduced motion mode because your system asks for reduced motion.
Improved
- Update the Studio panel to React 19.3.0.
- Edit each branch of a condition such as
open ? { opacity: 1 } : { scale: 0 }, even when the branches animate different properties.
Fixed
- Fix a crash that blanked the page when a zero-duration
animate()call ran again while the panel was open.
- Reduced motion mode. A new switch in the Studio panel makes CSS,
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
- Toast stack: overlay notifications that fan into a scaled pile on a shared spring.
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:
Added
- Motion UI launches with 26 sections and 35 components.
- Read the announcement.
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