Changelog
Releases across Motion, Motion+, Motion UI, Motion AI Kit, and Motion Studio.
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
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
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
Fixed
AnimateNumber: Ensure values are updated when only§suffix/prefixupdate.
Added
- Skills: Installer better supports OpenCode.
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