Changelog

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

  1. Motionminor14.4.0

    Added

    • drag: Drag gesture added to JavaScript API.
  2. Motionpatch14.3.1

    Fixed

    • AnimatePresence: Fire onExitComplete after exiting children unmount.
    • AnimatePresence: popLayout children that don't accept ref are now popped when root component is <motion> element.
    • Fix interpolation of axis rotate and skew transforms during shared layout animation.
    • Fix layout animations when layout is enabled after mount.
    • Fix drag jumping to 0 after animate x/y to CSS variable.
    • arc: Fix path animations with animate.
    • Ensure shared elements are freed from memory when unmounted.
    • Fix accelerated independent transform animations vanishing when they start from a float residue.
  3. 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.
  4. Motionminor14.2.0

    Added

    • Hardware accelerated independent transforms like x, y, scaleX etc.
  5. Motionpatch14.1.1

    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.
  6. 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.
  7. Motion UIpatch4.0.2

    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 to grid no longer hides the item paged to.
    • Gallery: Switching away from grid no longer resizes its items to the next arrangement's item size as they fade out.
  8. Motion UIpatch4.0.1

    Added

    • Gallery: rearrange option and shift() preset set the state an item fades in from when it changes places without flying there.
    • Gallery: rearrangeFrom option sets where the stagger starts as the detail strip opens or closes.
    • Gallery: gather option. Items collapse behind the active one when switching to grid.

    Fixed

    • Gallery: Items no longer fly across the view when loop or arrange changes. 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.
  9. 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.
  10. Motion UImajor4.0.0

    Added

    • Gallery: 2D and 3D gallery animations with list and detail view.

    Changed

    • Requires motion@^14.1.0.
    • Improved tree shaking.

    Removed

    • animateLayout moved to motion.
  11. Motionmajor14.0.0

    Changed

    • Removed internal APIs restored in 13.5.1 for compatibility with framer-motion 13.0–13.4. Future removed internal APIs won't cause cross-compatibility issues since pinning internal framer-motion, motion-dom and motion-utils dependencies.
  12. Motionpatch13.5.1

    Changed

    • <motion>: Fall back to the attribute in readSVGValue when computed style is empty.
    • <motion>: Internal changes to animateChanges for size reductions.

    Fixed

    • scroll: Temporarily reverted removal of internal observeTimeline API to fix compatibility with previous 13.x APIs. Moving to pinned dependencies before removing in 14.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>: Fix sortNodePosition throwing when a sibling hasn't mounted
  13. 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.
  14. Motionpatch13.4.7

    Changed

    • scroll/useScroll: More offsets are now hardware accelerated via ViewTimeline.

    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 and ViewTimeline.
    • scroll/useScroll: Remove ScrollTimeline/ViewTimeline observer in favour of main-thread scroll tracking.
  15. Motionpatch13.4.6

    Fixed

    • AnimatePresence: mode="wait" no longer drops new children if exit completes during a React transition.
  16. Motion UImajor3.0.0

    Changed

    • Requires motion@^13.0.0.
    • motion is now a peer dependency of motion-plus and motion-plus-dom, so it must be explicitly installed alongside them.
  17. Motionpatch13.4.5

    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.
  18. Motion Studiominor2.1.0

    Added

    • Unlock free Ultramotion allowance for all members.
    • Allow undo/redo via Ultramotion.
  19. Motionpatch13.4.4

    Changed

    • scroll: 44% smaller.
    • useScroll: 33% smaller.
    • Scroll callbacks: 50% faster.
    • Removed ScrollTimeline support for JS callbacks as benchmarked no improvement over scrollInfo.

    Fixed

    • useDragControls: Fixed snapToCursor origin drift on repeated calls.
    • drag: Improved pointerend timing.
    • spring: Check invalid spring values before applying.
    • AnimatePresence: Ensure children don't stick during reentry.
  20. Motionpatch13.4.3

    Fixed

    • <motion>: Ensure animations replay when Suspense reveals memoized content.
  21. Motionpatch13.4.2

    Fixed

    • Reorder: Don't scale position of elements at origin 0 when dragConstraints changes.
    • Unrecognised easing names no longer throw.
  22. Motionpatch13.4.1

    Fixed

    • animate: CSS variable writes on SVGs apply to style attribute.
  23. Motion Studiomajor2.0.0

    Added

    • First release.
  24. Motionminor13.4.0

    Added

    • AnimateView: View transitions for React 19.3, built on React's ViewTransition.
  25. 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.
  26. 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.
  27. Motionpatch13.1.1

    Fixed

    • Guard animation window access in non-browser runtimes.
    • AnimatePresence: Improved compat with React 19 strict mode.
  28. Motionminor13.1.0

    Added

    • Reorder: Multidimensional reorder.
    • Reorder: Automatic axis detection.
    • Reorder: RTL support.
  29. Motionmajor13.0.0

    Changed

    • Removed optional @emotion/is-prop-valid dependency 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 rendering propagate with no motion children.
  30. 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.