Changelog

Always in Motion. Follow the latest releases to Motion, Motion+ and Motion Studio.

Stay in the loop

Subscribe for the biggest news & updates.

Added

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

Fixed

  • Ticker: Improve accessibility attributes.

  • Cursor: Fix when using with browser-native drag gestures.

  • Updating ref type inference for Typewriter, Ticker and ScrambleText.

Added

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

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.

Fixed

  • splitText: Ensure split text elements retain vertical positioning.

  • Carousel: Fix focus from breaking item reprojection.

Added

  • Extension: Added support for spring editing.

  • Extension: Visual refresh.

  • Skills: Added Motion Performance Audit skill.

Added

  • AnimateView: View animations for React.

Fixed

  • useScroll: Hardware accelerated animations.

Fixed

  • Improve detection of detached elements with vanilla layout animations.

Fixed

  • AnimatePresence: Ensure exiting nodes are correctly removed when rapidly switching children.

Motion+

Motion+

Level up your animations with Motion+

Unlock the full vault of 290+ Motion examples, premium APIs, private Discord and GitHub, and powerful VS Code animation editing tools.

One-time payment, lifetime updates.

Added

  • transition.inherit: When true, inherit transition values from less-specific transitions.

Fixed

  • <motion />: Ensure animation state is reset after being re-suspended.

  • Prevent stale values when mixing transitionEnd and transition.type: false.

  • Drag: Fix "sticky" throw velocity on initial interaciton.

  • Drag: Ensure catching a thrown element kills its velocity.

Fixed

  • onHoverStart and onHoverEnd first argument now correctly typed as PointerEvent.

  • whileHover: No longer persists after drag end.

  • AnimatePresence: Allow changing mode prop.

Added

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

Added

  • Drag constraints updated even when draggable or constraints resize outside of React renders.

Added

  • animate: Support for bi-directional callbacks within animation sequences.

Fixed

  • Ensure onPan never fires before onPanStart.

Fixed

  • Allow drag to be initiated by child a and button elements.

Added

  • MotionConfig: Add skipAnimations option.

Fixed

  • animate: Prevent error when calling stop() on removed elements.

  • animateLayout: Fixing shared element animations when animate called before animateLayout.

Fixed

  • Reorder: Fixed viewport autoscroll.

Fixed

  • scrambleText: Fixed delay handling.

Added

  • scrambleText: Now supports string MotionValue.

Changed

  • ScrambleText: Removing span.

Added

  • Typewriter: onChange callback.

Fixed

  • ScrambleText: Switch from useEffect to useLayoutEffect.

Fixed

  • Updates to layout animations.

Added

  • splitText: Added preserveHyphens option.

Added

  • Typewriter: Added cursorBlinkRepeat option for capping the number of times a cursor blinks after typing stops.

Fixed

  • scrambleText and ScrambleText: Default duration is now 1.

Added

  • scrambleText and ScrambleText: Added scramble text for vanilla JS and React.

Added

  • transformViewBoxPoint: Scale drag gestures within <svg> elements where viewBox and rendered width/height are mismatched.

  • trackContentSize: New scroll and useScroll option for tracking changes to content size.

Fixed

  • Add React 19 test suite to CI.

  • Fix types with motion.create().

  • Shared element animations now respect layoutDependency.

Added

  • Add default value type px for fontSize.

Fixed

  • Removed default value type from radius.

  • Ensure LazyMotion animates initial state even when state has changed before Motion is loaded.

Motion is supported by the best in the industry.