Changelog

Releases across Motion, Motion UI, Motion AI Kit, and Motion Studio.

  1. Motionminor14.3.0

    Added

    • stagger: New grid, 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.
  2. Motionminor14.2.0

    Added

    • Hardware accelerated independent transforms like x, y, scaleX etc.
  3. Motion UIminor4.1.0

    Added

    • Gallery: Switching to grid, its cells fade in outward from the centre on the transition's delay, like transition={{ arrange: { delay: stagger(0.05) } }}.
    • Gallery: The detail strip's stagger takes stagger()'s from, so transition={{ 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 to grid.
    • Gallery: New options of the same arrangement, like a ring's rotateX, blend its camera as one piece again.
    • Gallery: Switching away from grid after 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.
  4. Motionminor14.1.0

    Added

    • animateLayout: Layout animations for vanilla JS.

    Fixed

    • Delay animation start when main thread held to prevent visual jumps.
    • Fix whileHover/whileTap getting stuck after Fast Refresh reorders siblings.
    • scroll/useScroll: Fix reporting of elastic overscroll.
    • AnimatePresence: Fix popLayout when rendering into another window or iframe.
    • animate: Fix JS animations jumping ahead when played after a pause at non-1 speed.
    • Allow layout animations inside dragged elements.
  5. Motionminor13.5.0

    Added

    • spring: Now accepts negative bounce (0--1) to define overdamped springs.

    Changed

    • <m>: 20% smaller.
    • useSpring: 10% smaller.
    • scroll/useScroll: Use main thread for all offset animations.

    Fixed

    • Ensure warning and error messages are cleaned from production build.
    • Ensure values are never rendered before they've been resolved.
  6. Motion Studiominor2.1.0

    Added

    • Unlock free Ultramotion allowance for all members.
    • Allow undo/redo via Ultramotion.
  7. Motionminor13.4.0

    Added

    • AnimateView: View transitions for React 19.3, built on React's ViewTransition.
  8. Motionminor13.3.0

    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.
  9. Motionminor13.2.0

    Added

    • animate.addEffect() for registering effects that lets animate drive 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/Compute bindings ("params.time"), scene nodes, cameras, lights, materials, orbit controls, CSS colors and vector components.
    • createEffect now accepts test, read and step options and exposes bound motion values via effect.get().

    Changed

    • Reduced filesize and improved performance of spring.
    • MotionValueState no longer caches values in latest; effect renders read their motion values directly. set() drops its useDefaultValueType argument.
  10. Motionminor13.1.0

    Added

    • Reorder: Multidimensional reorder.
    • Reorder: Automatic axis detection.
    • Reorder: RTL support.
  11. Motionminor12.43.0

    Added

    • Hardware acceleration for backgroundColor in 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 custom motion component an incorrect ref type.
  12. Motion AI Kitminor6.2.0

    Added

    • MCP: search-motion-codex now returns Motion UI components and sections (Motion+ / React) as full multi-file paste-ready source — same delivery model as examples, baked into the package.
  13. Motionminor12.42.0

    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 automatic border-radius animation.
  14. Motionminor12.41.0

    Added

    • animateView: Moves from Motion+ Early Access and alpha to main library.
    • animateView: .add() resolves a CSS selector or Element to automatically generate, apply and remove view-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 to cover, with border-radius animating from old radius to new. .crop(false) disables this behaviour.
    • animateView: .class(name) tags currently selected elements with a view-transition-class as a custom CSS hook.

    Fixed

    • AnimatePresence: Prevent stuck exit animations when children interrupt.
    • drag: Child e.stopPropagation() no longer break drag end.
    • Fixing Next.js OOM on Windows when importing via motion package.
    • animateLayout: Improve handling of parallel/interleaved calls.

    Changed

    • animateView: .enter() and .exit() now refer specifically to new and old layers where there are no matching old or new layers.
    • animateView: Interrupted transition setups now return resolved animation rather than throwing.
  15. Motion UIminor2.12.0

    Added

    • curtains/useCurtains: Cover/reveal page and element transitions.
  16. Motion AI Kitminor6.1.0

    Changed

    • Skills: Add MotionScore runtime performance profiling to /motion.
  17. Motionminor12.40.0

    Added

    • path option to transition.
    • arc() for motion along an arc.
  18. Motionminor12.39.0

    Added

    • Support for repeatType and repeatDelay in 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 dragSnapToOrigin no longer leaves the drag transform stranded after a layout swap.
    • LazyMotion: Share React contexts between the framer-motion and framer-motion/m (and therefore motion/react and motion/react-m) CJS bundles so that <m.div> from the /m subpath picks up features loaded by <LazyMotion> from the main entry point.
    • useScroll: Support hydrating target and container refs 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 visualElement hydration order.
    • useAnimate: Now respects skipAnimations.
    • AnimatePresence: Fix object-form initial values not applied on re-entry after exit completes.
    • scroll: Fixed callback progress when tracking an element.
    • useScroll: Fix hardware acceleration when tracking an element.
  19. Motionminor12.38.0

    Added

    • Added layoutAnchor prop 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.
  20. Motionminor12.37.0

    Added

    • Support for hardware accelerating "start" and "end" offsets in scroll and useScroll.
    • Support for oklch, oklab, lab, lch, color, color-mix, light-dark color types.

    Fixed

    • Fix whileInView with client-side navigation.
    • Fix draggable elements when layout updates due to surrounding element re-renders.
    • Improved memory pressure of layout animations.
    • Ensure motion value returned from useSpring reports correct isAnimating().
  21. Motionminor12.36.0

    Added

    • Allow dragSnapToOrigin to accept "x" or "y" for per-axis snapping.
    • Added axis-locked layout animations with layout="x" and layout="y".
    • Added skipInitialAnimation to useSpring.

    Fixed

    • Fixed height and width: auto animations with box-sizing: border-box.
    • Reset component values when exit animation finishes.
    • Ensure anticipate easing returns 1 at p === 1.
    • Fix @emotion/is-prop-valid resolve error in Storybook.
    • Remove data-pop-layout-id from exiting elements when animation interrupted.
    • Ensure we skip WAAPI for non-animatable keyframes.
    • Ensure we skip WAAPI for SVG transforms.
    • Ensure MotionValue props are not passed to SVG.
    • AnimatePresence: Prevent mode="wait" elements from getting stuck when switched rapidly.
  22. Motion AI Kitminor5.4.0

    Added

    • Skills: /motion skill. Includes design guidelines, performance tips, and API gotchas. Can reference the Motion Studio MCP for docs search.
    • Skills: /css-spring skill. Generates CSS spring easing functions via the Motion Studio MCP.
    • Skills: /see-transition skill. Visualise easing curves and springs via the Motion Studio MCP.
    • Skills: Added new motion-ai-kit installer with interactive skill picker.
  23. Motionminor12.35.0

    Added

    • ViewTimeline support for scroll and useScroll.
  24. Motion UIminor2.11.0

    Added

    • Carousel: New wheelSwipeThreshold prop configures the distance of wheel scroll before triggering a swipe.
  25. Motion UIminor2.10.0

    Added

    • AnimateNumber: trend prop to control digit spin direction. - trend={1}: Digits always spin upward, wrapping 9 → 0. - trend={-1}: Digits always spin downward, wrapping 0 → 9. - trend={(oldValue, newValue) => number}: Function for custom logic. - Default (no trend): Auto-detects direction based on value change.

    Changed

    • AnimateNumber: Now uses manual FLIP measurements instead of layout animations.
  26. Motion UIminor2.9.0

    Added

    • useCarousel and useTicker: Provides offset motion value, which contains the unwrapped offset of a Carousel or Ticker.
  27. Motion AI Kitminor5.3.0

    Added

    • Extension: Added support for spring editing.
    • Extension: Visual refresh.
    • Skills: Added Motion Performance Audit skill.
  28. Motion UIminor2.8.0

    Added

    • AnimateView: View animations for React.
  29. Motionminor12.34.0

    Added

    • useScroll: Hardware accelerated animations.
  30. Motionminor12.33.0

    Added

    • <motion>: New propagate.tap prop prevents tap gestures from propagating to parents.