Changelog

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

  1. Motionminor14.6.0

    Added

    • Reorder: Grab-and-move keyboard reordering.
    • processFrame: Manually process the frameloop at t.
    • stepFrames: For tests, synchronously advance frameloop time by duration.

    Fixed

    • Improved tree-shaking.
    • motion: Fix layoutId elements jumping in some situations.
    • Reorder: Make auto-scroll speed independent of refresh rate.
    • drag: Fix animations when disabling drag from within onDrag.
    • Fix shared layout animations applying an element's own scale/x/y twice.
    • Fix replaying mount animation when an element takes over a layoutId.
    • motion: Fix updating SVG styles.
    • useTransform: Improving value resolution.

    Changed

    • MotionGlobalConfig.useManualTiming:
  2. Motionminor14.5.0

    Added

    • scopeMotion/useScopeMotion: Scope animations and gestures to set default transitions, specify root elements, match media, and easy cleanup.
    • Reorder: Pass moved to onReorder as second argument.

    Fixed

    • drag: With direction lock, apply the move that sets the lock. Before, a fast drag released in that frame didn't move.
    • press: Improve cleanup of keyboard accessibility events.
    • Reorder: Stop double-counting window scroll during drag.
    • motion: Ensure we animate from the latest props when parent Activity is made visible.
    • useInView: Observe ref if contents change after mount.
  3. Motionminor14.4.0

    Added

    • drag: Drag gesture added to JavaScript API.
  4. 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.
  5. 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.
  6. Motionminor14.2.0

    Added

    • Hardware accelerated independent transforms like x, y, scaleX etc.
  7. 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.
  8. 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.
  9. 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.
  10. 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
  11. 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.
  12. 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.
  13. Motionpatch13.4.6

    Fixed

    • AnimatePresence: mode="wait" no longer drops new children if exit completes during a React transition.
  14. 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.
  15. 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.
  16. Motionpatch13.4.3

    Fixed

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

    Fixed

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

    Fixed

    • animate: CSS variable writes on SVGs apply to style attribute.
  19. Motionminor13.4.0

    Added

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

    Fixed

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

    Added

    • Reorder: Multidimensional reorder.
    • Reorder: Automatic axis detection.
    • Reorder: RTL support.
  24. 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.
  25. 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.
  26. Motionpatch12.42.2

    Fixed

    • animateView: Cropped group layers now animate border-radius from the old to new radius.
  27. Motionpatch12.42.1

    Fixed

    • animateView: Old layer fade out now cancelled when defining .new().
  28. 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.
  29. 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.
  30. Motionminor12.40.0

    Added

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