# Changelog Motion adheres to [Semantic Versioning](http://semver.org/). Undocumented APIs should be considered internal and may change without warning. ## [12.33.1] 2026-02-06 ### Fixed - `AnimatePresence`: Ensure exiting nodes are correctly removed when rapidly switching children. ## [12.33.0] 2026-02-05 ### Added - ``: New `propagate.tap` prop prevents tap gestures from propagating to parents. ## [12.32.0] 2026-02-05 ### Added - `transition.inherit`: When `true`, inherit transition values from less-specific transitions. ## [12.31.3] 2026-02-05 ### Fixed - ``: 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. ## [12.31.2] 2026-02-05 ### Fixed - `onHoverStart` and `onHoverEnd` first argument now correctly typed as `PointerEvent`. - `whileHover`: No longer persists after drag end. - `AnimatePresence`: Allow changing `mode` prop. ## [12.31.1] 2026-02-04 ### Added - Drag constraints updated even when draggable or constraints resize outside of React renders. ## [12.31.0] 2026-02-03 ### Added - `animate`: Support for bi-directional callbacks within animation sequences. ### Fixed - Ensure `onPan` never fires before `onPanStart`. ## [12.30.1] 2026-02-03 ### Fixed - Allow drag to be initiated by child `a` and `button` elements. ## [12.30.0] 2026-02-02 ### 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`. ## [12.29.3] 2026-02-02 ### Fixed - `Reorder`: Fixed viewport autoscroll. ## [12.29.2] 2026-01-26 ### Fixed - Updates to layout animations. ## [12.29.1] 2026-01-22 ### Fixed - `useAnimate`: Now respects reduced motion settings set via `MotionConfig`. ## [12.29.0] 2026-01-22 ### Added - `transformViewBoxPoint`: Scale drag gestures within `` 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`. ## [12.28.2] 2026-01-22 ### 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. ## [12.28.1] 2026-01-21 ### Fixed - Ensure `scale: "0%"` isn't treated as default value. ## [12.28.0] 2026-01-20 ### Added - `useFollowValue` and `followValue`: `useSpring`-style motion values that can accept any transition. ### Fixed - Fix "multiple keyframe" error when using spring animations as default transitions for animation sequences. ## [12.27.5] 2026-01-20 ### Fixed - Ensure pen gesture is correctly cleaned up on drag cancel. - Fix edge case where `DocumentProjectionNode`'s attached element was `null`. ## [12.27.4] 2026-01-20 ### Added - `AnimatePresence`: `anchorY` for vertically positioning popped children. ### Fixed - Fixed path drawing animations in zoomed Safari contexts by switching to unitless values. ## [12.27.3] 2026-01-20 ### Fixed - Ensure drag gestures trigger from keyboard-accessible elements (`button`, `textarea` etc) if these elements have `drag` applied directly. ## [12.27.2] 2026-01-20 ### Fixed - Adding sourcemaps to `motion-dom` and `motion-utils`. - Fix `Reorder` autoscroll within scrollable pages. - Gracefully handle missing elements in animation sequences. ## [12.27.1] 2026-01-19 ### Fixed - Improving projection node cleanup. ## [12.27.0] 2026-01-18 ### Added - Adding new exports for internal use. ## [12.26.2] 2026-01-13 ### Fixed - Internal refactor of projection system into `motion-dom`. ## [12.26.1] 2026-01-12 ### Fixed - Improve overload selection for `useTransform`. ## [12.26.0] 2026-01-12 ### Added - Support for multiple output value maps with `useTransform`. ## [12.25.0] 2026-01-09 ### Added - Support for auto-scrolling when a `Reorder.Item` reaches the edges of its parent scrollable container. ## [12.24.12] 2026-01-08 ### Fixed - Draggable elements now track pointer during page and element scroll. ## [12.24.11] 2026-01-08 ### Fixed - Fixed time sampling of GPU animations under heavy CPU load. ## [12.24.10] 2026-01-07 ### Fixed - Fixing missing import from `motion-dom`. ## [12.24.9] 2026-01-07 ### Fixed - Fixing Radix `Dialog` with `AnimatePresence`. - Ensure drag constraints animation resumes after press interruption. - Prevent drag gesture from triggering when pressing focusable elements. ## [12.24.8] 2026-01-07 ### Fixed - Perform unit conversion when animating to/from `calc()` values. ## [12.24.7] 2026-01-06 ### Fixed - Fix duplicate exit animations in `AnimatePresence`. ## [12.24.6] 2026-01-06 ### Fixed - Remove memory leak from retained `matchMedia` callbacks. ## [12.24.5] 2026-01-06 ### Fixed - Prevent `ref` access error for `AnimatePresence` `popLayout` mode in React 19. ## [12.24.4] 2026-01-06 ### Fixed - Support `ref` functions that return a cleanup callback. ## [12.24.3] 2026-01-06 ### Fixed - Ensure `onAnimationStart` and `onAnimationComplete` callbacks fire for `useSpring`. ## [12.24.2] 2026-01-06 ### Fixed - Ensure `useDragControls `snapToCursor: true` works with initial transforms. ## [12.24.1] 2026-01-06 ### Fixed - Ensure CSS Motion Path properties are applied via `style` on SVG elements. - Ensure `JSX` is correctly imported by `Reorder.Item`. ## [12.24.0] 2026-01-05 ### Added - `{ type: "svg" }` option to `motion.create()` for creating custom SVG components. - `px` default value type for CSS logical properties (`paddingBlock`, `paddingInline`, `marginBlock`, `marginInline`). ### Fixed - Ensure drag gesture updates with latest props every render. - Fix missing `JSX` import error. - Fix `motion-dom` build. - Exclude `src` from distributed package. ## [12.23.28] 2026-01-05 ### Fixed - Fixing `MotionStyle` type with React 19 when `skipLibCheck` is `false`. - Add guard for `process` check for better compat with ESM environments. ## [12.23.27] 2026-01-05 ### Fixed - Improved Intellisense detection for `motion` import. - Adding sourcemaps to release. ## [12.23.26] 2025-12-10 ### Fixed - Moved initialisation of default scale correctors to allow for overwriting existing correctors. ## [12.23.25] 2025-12-01 ### Fixed - Ensure relative projection boxes are re-measured when parent layout changes. ## [12.23.24] 2025-10-10 ### Fixed - Ensure that when a component remounts, it continues to fire animations even when `initial={false}`. ## [12.23.23] 2025-10-10 ### Added - Exporting `PresenceChild` and `PopChild` type for internal use. ## [12.23.22] 2025-09-25 ### Added - Exporting `HTMLElements` and `useComposedRefs` type for internal use. ## [12.23.21] 2025-09-24 ### Fixed - Fixing main-thread `scroll` with animations that contain `delay`. ## [12.23.20] 2025-09-24 ### Fixed - Suppress non-animatable value warning for instant animations. ## [12.23.19] 2025-09-23 ### Fixed - Remove support for changing `ref` prop. ## [12.23.18] 2025-09-19 ### Fixed - `` components now support changing `ref` prop. ## [12.23.17] 2025-09-19 ### Fixed - Ensure `animate()` `onComplete` only fires once, when all values are complete. ## [12.23.16] 2025-09-19 ### Fixed - Fixing `ref` when passed to a child of `AnimatePresence` in `"popLayout"` mode. ## [12.23.15] 2025-09-18 ### Fixed - Fixing `export *` error in RSC. ## [12.23.14] 2025-09-17 ### Fixed - Fixing types of `Reorder.Item` and `Reorder.Group` so incorrect HTML props are correctly flagged. - Reverting rehydration of `externalRef` when it switches. ## [12.23.13] 2025-09-16 ### Fixed - Fixed issue where motion components don't update refs when externalRef changes. The `useMotionRef` function now properly includes `externalRef` in the dependency array to ensure ref callbacks update when the external ref changes. ### Changed - Stopped tracking yarn cache in the repo. ## [12.23.12] 2025-07-29 ### Added - Exporting internal APIs for use in view animations. ## [12.23.11] 2025-07-28 ### Added - Children of variants with `delayChildren: stagger()` will now be staggered correctly alongside their newly-entering siblings. ## [12.23.10] 2025-07-28 ### Fixed - Fixed shared layout animation in situations where no `motion` components have re-rendered between shared element switching. ## [12.23.9] 2025-07-24 ### Changed - Removing redundant `renderRequest` `MotionValue` lifecycle. ## [12.23.8] 2025-07-24 ### Fixed - Ensuring that when an animation is skipped via `duration = 0` that we also set `type = "keyframes"` so that `duration` takes effect. ## [12.23.7] 2025-07-23 ### Fixed - `springValue` cleanup. - Removed additional `removeNode` from `AnimatePresence` when using `popLayout`. ## [12.23.6] 2025-07-11 ### Changed - Added explainer for reduced motion warning. - Refactored `motion` component creation to remove indirection. ## [12.23.5] 2025-07-11 ### Fixed - Fix animation timings within dynamically-generated popups. ## [12.23.4] 2025-07-10 ### Added - Checks before attempting to perform animations on `null`. ## [12.23.3] 2025-07-10 ### Changed - `useScroll`: Re-attempt to initialise scroll animation within a `useEffect` if refs weren't hydrated during the `useLayoutEffect`. Throw if refs are still not hydrated during the `useEffect`. ## [12.23.2] 2025-07-10 ### Added - Added pages for remaining error and warning messages. ## [12.23.1] 2025-07-09 ### Changed - Improved error messages. Some error messages will now link through to detailed documentation and solutions. ## [12.23.0] 2025-07-02 ### Added - Add `.stop()` and `.cancel()` methods to `useDragControls()`. ## [12.22.0] 2025-07-01 ### Added - Allow `delayChildren` to accept `stagger()`. This enables `from` and `ease` options when staggering variant children. ### Deprecated - `staggerChildren` and `staggerDirection` options. ## [12.21.0] 2025-07-01 ### Added - Allow `distanceThreshold` to be configurable via `useDragControls`. ## [12.20.5] 2025-07-01 ### Fixed - Improve performance of projection styles by writing directly to `element.style`. - Only block layout animations when window has changed width. ## [12.20.4] 2025-07-01 ### Fixed - Improve performance of render loop. - Improve performance of types. ## [12.20.3] 2025-07-01 ### Fixed - Always skip layout animation check on tree mount. ## [12.20.2] 2025-07-01 ### Fixed - Updated `Transition` type to be more permissive. ## [12.20.1] 2025-06-30 ### Fixed - Updated `Target` type to match previous definition. ## [12.20.0] 2025-06-30 ### Added - Pass a shadow DOM root element via `AnimatePresence` `root` prop to attach `"popLayout"` styles to a different root element. ## [12.19.4] 2025-06-30 ### Fixed - Ensure animations are removed from scope when finished. ## [12.19.3] 2025-06-27 ### Fixed - Restore some deprecated types. - Add `transformPerspective` to `TargetAndTransition`. - Filter number-indexed and function props from `CSSStyleDeclaration`. ## [12.19.2] 2025-06-27 ### Fixed - React: Prevent duplicate layout animation commits within Suspense boundaries. ## [12.19.1] 2025-06-23 ### Fixed - React: Fix `export *` error message in Next.js. ## [12.19.0] 2025-06-23 ### Added - React: `usePageInView` for tracking document visibility. ## [12.18.2] 2025-06-23 ### Fixed - Fixed es bundle dependency imports for `"motion"`. - Restored `translateX`, `originX` etc values in animation targets. ## [12.18.1] 2025-06-13 ### Fixed - Removed `"react"` import from `"motion-dom"`. ## [12.18.0] 2025-06-13 ### Added - Support for defining a timeline position relative to the start of the most recently added animation (e.g. `<+0.5`, `<-1`) ## [12.17.3] 2025-06-12 ### Changed - Refactored `MotionProps` into vanilla `MotionNodeOptions` type within `"motion-dom"` package. ## [12.17.2] 2025-06-12 ### Changed - Handle colors when creating animatable `"none"` keyframes for complex strings. ## [12.17.1] 2025-06-12 ### Fixed - Fixes `isValidProp` check with Rolldown. ## [12.17.0] 2025-06-10 ### Added - MCP server. ### Fixed - Improved rounding for `linear()` easing curves. ## [12.16.0] 2025-06-03 ### Added - `resize()`. ## [12.15.1] 2025-05-30 ### Fixed - Explicitly set layout animation velocity to zero to prevent persistent `MotionValue` carrying through velocity. ## [12.15.0] 2025-05-27 ### Added - Support for `pathLength`/`pathSpacing`/`pathOffset` for `svgEffect`. - Auto kebab-casing of `data` and `aria` attributes in `attrEffect`. - `attrEffect` applies attributes via JS property where possible. - Auto `transform-box: fill-box` for SVGs with `transform` in `styleEffect`. ## [12.14.0] 2025-05-26 ### Added - Support for `originX`/`Y`/`Z` in `styleEffect`. ### Fixed - Added markers for pure function calls with effects. ## [12.13.0] 2025-05-26 ### Added - `svgEffect`, `propEffect` and `attrEffect`. ### Fixed - Fixed a jump in layout animations in select circumstances. ## [12.12.2] 2025-05-23 ### Fixed - Ensure scroll updates are only triggered after a scroll read. ## [12.12.1] 2025-05-16 ### Fixed - Checks for `instanceof HTMLElement` made compatible with dynamically generated `iframe`s. ## [12.12.0] 2025-05-16 ### Added - `springValue` ### Fixed - Fixed various typos in the type definitions along with a stale documentation link. ## [12.11.4] 2025-05-15 ### Fixed - Only read `transform` from the DOM for initial independent transforms when there's no active projection. ## [12.11.3] 2025-05-14 ### Changed - `useWillChange` now only adds `transform` to `will-change` to prevent issues with prematurely flattened `preserve-3d`. ## [12.11.2] 2025-05-14 ### Fixed - Removed `__VERSION__` placeholder from motion value. - Fixed types for `Reorder` component. ## [12.11.1] 2025-05-14 ### Fixed - Default `scroll` tracking to `document.scrollingElement`. ## [12.11.0] 2025-05-12 ### Added - Added `value.isEffectActive` for internal use. ## [12.10.6] 2025-05-09 ### Fixed - Stop firing `.then()` after `.stop()` and `.cancel()`. ## [12.10.5] 2025-05-09 ### Fixed - Fixed attaching multiple `press` handlers on the same element. ## [12.10.4] 2025-05-08 ### Fixed - Fixed layout animations jumping when interrupted. - Lower memory and runtime overhead of layout animations. ## [12.10.3] 2025-05-08 ### Fixed - Attempting to fix layout animations jumping when interrupted. ## [12.10.2] 2025-05-08 ### Fixed - Fixed `.cancel()` after `.stop()`. ## [12.10.1] 2025-05-07 ### Changed - Main thread `scroll` animations are now lazy, resolving after `"scroll"` events instead of every animation frame. ## [12.10.0] 2025-05-06 ### Added - `styleEffect` now supports: - Default value types - Independent transforms - CSS variables ## [12.9.8] 2025-05-05 ### Fixed - Fixing press after parent is dragged. ## [12.9.7] 2025-05-05 ### Fixed - Fix mixing `PopChild` with Astro view transitions. ## [12.9.6] 2025-05-05 ### Fixed - Fix setting `transformBox` via `style`. ## [12.9.5] 2025-05-05 ### Fixed - Fixed drag `undefined` error in React 19 Strict Mode. - Skip keyframe measurements for values without support for unit conversion. ## [12.9.4] 2025-05-01 ### Fixed - Remove version check for `MotionValue`. ## [12.9.3] 2025-05-01 ### Fixed - Fixed memory leak when unmounting `motion` components. ## [12.9.2] 2025-04-25 ### Fixed - Fixed scroll timeline cache when defining `offset`. - Detect when page scroll is attached to `document.body` and use this instead of `document.documentElement`. ## [12.9.1] 2025-04-24 ### Fixed - Restarting a finished main thread animation with a negative `.speed` now works as expected. ## [12.9.0] 2025-04-24 ### Added - `styleEffect` ## [12.8.3] 2025-04-24 ### Changed - Animating a `MotionValue` to its current value will skip creating the animation. ### Fixed - Ensure `.then()` fires when `.stop()` or `.cancel()` are called. This is undesired but reverts the behaviour to before `12.7.5`. ## [12.8.2] 2025-04-24 ### Changed - Unifying `transform` behaviour for SVG and CSS switched from element measurements for `transform-box: fill-box`. ## [12.8.1] 2025-04-23 ### Fixed - Removing errant `console.trace` on `value.set("none")`. ## [12.8.0] 2025-04-23 ### Added - `mapValue` - `transformValue` ### Changed - Removed support for Framer's internal `CustomValueType`. ## [12.7.5] 2025-04-22 ### Changed - Improved scroll timeline caching. - Replaced WAAPI keyframe generation with `linear()` easing. - Ensure final defined keyframe is always applied to animations when animation finishes. - Moved `instantAnimationState.current` to `MotionGlobalConfig.instantAnimations`. - Changed `delay` from `read` to `setup` frameloop step. ### Fixed - Fixed `.then()` and `await` early resolution. - Fixed replaying main thread animations after finished. - `.speed` works correctly across all animation types. - Various imperative animation control fixes. ## [12.7.4] 2025-04-17 ### Fixed - Removed non-deterministic behaviour from `AnimatePresence`. ## [12.7.3] 2025-04-15 ### Fixed - Fixing `duration` for `animateView` transitions. - Prevent `.commitStyles()` on `pseudoElement` animations. ## [12.7.2] 2025-04-14 ### Fixed - Adding `"sideEffects": false` to `motion-dom` and `motion-utils` packages. ## [12.7.1] 2025-04-14 ### Fixed - Skip `.commitStyles` on `psuedoElement` animations. ## [12.7.0] 2025-04-14 ### Added - Private `layoutCrossfade` allows disabling crossfade of shared layout elements. ## [12.6.5] 2025-04-11 ### Fixed - Polyfilled `sync` and `cancelSync` exports. ## [12.6.4] 2025-04-11 ### Added - Global injection of `WillChangeMotionValue` for internal Framer use. ## [12.6.3] 2025-04-01 ### Changed - Refactored mini `animate` and `animateView` to share the same `NativeAnimation`. Mini `animate` down to `2.3kb`. ### Fixed - Fixed keyboard accessibility of press events. ## [12.6.2] 2025-03-26 ### Fixed - Fixing hardware acceleration for non-`transform` values when a `motion` component has a defined `transformTemplate`. ## [12.6.1] 2025-03-26 ### Fixed - Reverting pointer capture for press gesture. ## [12.6.0] 2025-03-25 ### Changed - Renamed `view` to `animateView`. ### Added - New `interrupt: "wait"` mode as `animateView` default. ## [12.5.0] 2025-03-11 ### Added - Added `motionValue` to vanilla JS entrypoint. ### Removed - Removed `framer-motion-3d` package. ## [12.4.13] 2025-03-11 ### Fixed - Fixed reading initial transform values from elements. ## [12.4.12] 2025-03-11 ### Fixed - Removed pointer capture from pan and drag gestures. ## [12.4.11] 2025-03-10 ### Fixed - Preventing flattening of scroll animations when `type` or `ease` are explicitly set. ## [12.4.10] 2025-03-03 ### Fixed - Adding UMD bundles for `motion-dom` and `motion-utils`. ## [12.4.9] 2025-03-03 ### Fixed - Fixed `Reorder.Item` reordering causing `lostpointercapture` event to fire. ## [12.4.8] 2025-02-26 ### Fixed - Fixed exiting children with `layoutDependency` not animating layout changes because of a stale layout dependency. ## [12.4.7] 2025-02-20 ### Fixed - Fixed `AnimatePresence` not triggering exit animations when a child with `layout` or `drag` is removed. ## [12.4.6] 2025-02-20 ### Fixed - Fixed drag gesture on child elements. ## [12.4.5] 2025-02-19 ### Fixed - Fixed `onClick` handlers not working inside `press` events. ## [12.4.4] 2025-02-18 ### Fixed - Changed press, drag and pan gestures to use pointer capturing for better usage within `iframe` embeds. ## [12.4.3] 2025-02-12 ### Fixed - Restored warning for when animating more than two keyframes with a spring. ## [12.4.2] 2025-02-10 ### Fixed - Preventing `press` from triggering when an element is disabled. ## [12.4.1] 2025-02-06 ### Fixed - Check for `transition` in `initial` when animating removed values. ## [12.4.0] 2025-02-06 ### Added - Added `initial` option to `useInView`. ## [12.3.1] 2025-02-05 ### Fixed - Correctly applying CSS variables at the end of a mini `animate` animation. ## [12.3.0] 2025-02-05 ### Added - Added `usePresenceData` to get custom data passed to `AnimatePresence` in descendant components. ## [12.2.0] 2025-02-05 ### Added - Added unit support to `useSpring`. ## [12.1.0] 2025-02-04 ### Fixed - Bug with `AnimatePresence` in React 19 strict mode. ### Deprecated - Motion 3D. ## [12.0.11] 2025-02-03 ### Fixed - Moving `updateSVGDimensions` to its own file to help with tree-shaking. ## [12.0.10] 2025-02-03 ### Fixed - Providing `MotionValue` to `motion` component from `motion/react-client` entrypoint. ## [12.0.9] 2025-02-03 ### Fixed - Removing React from bundle. ## [12.0.8] 2025-02-03 ### Fixed - Infer type of `children` prop for `motion.create`. ## [12.0.7] 2025-01-28 ### Fixed - Fixed SVG transform animations via `animate`. ## [12.0.6] 2025-01-27 ### Fixed - Discard layout projection snapshots if 0x0. ## [12.0.5] 2025-01-24 ### Fixed - Fix scale correction for CSS variables. ## [12.0.4] 2025-01-24 ### Fixed - Add scale correction for CSS variables. ## [12.0.3] 2025-01-23 ### Fixed - Fixed toggling between shared layout animations multiple times. ### Added - Added private `anchorX` prop to `AnimatePresence`. ### Changed - Simplified `useSpring` for smaller bundlesize. ## [12.0.1] 2025-01-21 ### Fixed - Prevent relative animations from restarting layout animations unnecessarily. ## [12.0.0] 2025-01-20 ### Changed - `press`, `hover` and `inView` now pass the target element as the first argument to the gesture start callback. ## [11.18.2] 2025-01-20 ### Fixed - Animations with `transformTemplate` not hardware accelerated. ## [11.18.1] 2025-01-17 ### Fixed - `AnimatePresence` types in React 19. - SVG with `transform` not always setting styles correctly on mount. ## [11.18.0] 2025-01-14 ### Added - Adding `animateSequence` to perform animation sequences via WAAPI for a tiny bundlesize. ### Fixed - Missing `AnimationControls` type export. ## [11.17.1] 2025-01-13 ### Fixed - Remeasure SVG when size/position changes to ensure correct `transform-origin`. ## [11.17.0] 2025-01-10 ### Added - Added `propagate` to `AnimatePresence`. This prop allows parent exit animations to be propagated to children. ### Removed - Removed `exitBeforeEnter` from `AnimatePresence`. ## [11.16.7] 2025-01-10 ### Fixed - Fixing timelines where a string label is used as the first segment. ## [11.16.6] 2025-01-10 ### Changed - More movement values like `height` and `top` are now blocked by reduced motion. ## [11.16.5] 2025-01-09 ### Fixed - Fixed `scroll` progress being stuck at `1` when a `target` is `100vh`. ## [11.16.4] 2025-01-09 ### Fixed - Fix type of `attachTimeline` when `skipLibCheck` is disabled. ## [11.16.3] 2025-01-09 ### Fixed - Checking return of `press`, `hover`, and `inView` callbacks before calling. ## [11.16.2] 2025-01-09 ### Fixed - Restoring missing type exports. ## [11.16.1] 2025-01-08 ### Fixed - Adding `displayName` to `motion` components. - Ensure `press` doesn't override `tabindex` when explicitly set. ## [11.16.0] 2025-01-06 ### Added - Added `view()` alpha to early access. ## [11.15.0] 2024-12-13 ### Added - Add support for `repeat` in animation sequences. ### Fixed - Clearing scheduled jobs at the end of an animation frame to ensure memory is released should the animation loop settle. ## [11.14.4] 2024-12-13 ### Fixed - Exporting `AnimationSequence` via `"motion"` entrypoint. - Adding support for passing normal components to `motion.create()` in React 19. ## [11.14.3] 2024-12-13 ### Fixed - Fixing `motion-dom` and `motion-utils` entrypoints. ## [11.14.2] 2024-12-13 ### Fixed - Exporting `time` for internal use. - Making `MotionValue.updatedAt` public for internal use. ## [11.14.1] 2024-12-12 ### Fixed - Fixing missing license in `motion-dom` and `motion-utils` packages. ## [11.14.0] 2024-12-12 ### Added - Added `press` gesture in Motion+ early access. ## [11.13.6] 2024-12-10 ### Fixed - Adding React 19 to optional peer dependencies in `"motion"` package also. ## [11.13.5] 2024-12-10 ### Fixed - Adding React 19 to optional peer dependencies in `"framer-motion"` packages. ## [11.13.4] 2024-12-10 ### Fixed - Fixing types for React 19. ## [11.13.3] 2024-12-09 ### Fixed - Attempting to update types to be compatible with both React 18 and 19. ## [11.13.2] 2024-12-04 ### Fixed - Hover gesture now always `passive: true`. ## [11.13.1] 2024-12-03 ### Fixed - SVG elements (like `motion.text`) now update when given a `MotionValue` as children, matching HTML element behavior. - Exporting `DynamicAnimationOptions` type. ## [11.13.0] 2024-12-03 ### Added - Vanilla `hover` gesture in Motion+ early access. ## [11.12.0] 2024-11-27 ### Added - New `visualDuration` option for `spring` animations. - New `spring(visualDuration, bounce)` syntax. ## [11.11.16] 2024-11-14 ### Fixed - Fixing `stagger` with mini `animate`. ## [11.11.16] 2024-11-14 ### Fixed - Ensuring animations passed to `scroll` are scrubbed linearly. - Fixing `mini` types entrypoint. - Exporting easing types from `"motion"`. ## [11.11.15] 2024-11-13 ### Fixed - Fixing `mini` and `react-mini` entrypoints. ## [11.11.14] 2024-11-12 ### Fixed - Fixing fallback entry points for `"motion/react"` etc. ## [11.11.13] 2024-11-12 ### Fixed - Fixing build and entry points for `"motion"`. ## [11.11.12] 2024-11-12 ### Changed - Adding `"motion"` package. - Replaced Motion One (see [upgrade guide](https://motion.dev/docs/upgrade-guide)). ## [11.11.11] 2024-10-31 ### Fixed - Fixing double `update()` call on mount. ## [11.11.10] 2024-10-25 ### Fixed - Removing `will-change` from SSR. ## [11.11.9] 2024-10-15 ### Changed - `will-change` is now no longer automatically managed without `useWillChange`. ## [11.11.8] 2024-10-11 ### Fixed - Fixing fallback `package.json` for entrypoints in older versions of Node. ## [11.11.7] 2024-10-09 ### Fixed - Improving generic value signature for `animate`. ## [11.11.6] 2024-10-09 ### Fixed - Allowing generic motion value types in `animate`. ## [11.11.5] 2024-10-09 ### Fixed - Removed ability to define CSS variables on `style` without casting, as this was conflicting with React `CSSProperties`. ## [11.11.4] 2024-10-08 ### Fixed - Memoize `AnimatePresence` `safeToRemove`. - Remove duplicate `layout="size"` annotation. ## [11.11.3] 2024-10-08 ### Fixed - Remove `as any` requirement for CSS variables. ## [11.11.2] 2024-10-08 ### Fixed - Make `BezierDefinition` `readonly` for easier definition outside a `Transition`. ## [11.11.1] 2024-10-04 ### Fix - Fixed optimised appear effects in granular Suspense environments. ## [11.11.0] 2024-10-03 ### Added - `animate` can now animate any object. ## [11.10.0] 2024-10-02 ### Added - `delay` with seconds now exported from `"framer-motion/dom"`. ### Fixed - Only `transform` is added to `will-change` when a potentially layerising value is animated as `opacity` and `filter` will prematurely flatten `preserve-3d`. ## [11.9.0] 2024-09-27 ### Added - Mini `animate` and `useAnimate` functions. ## [11.8.0] 2024-09-25 ### Added - Easing functions now get compiled into `linear()` easings when animating via WAAPI. ## [11.7.0] 2024-09-25 ### Added - Added support for custom animation generators via `type`. ## [11.6.0] 2024-09-24 ### Added - Added `info` and element tracking to `scroll`. - Added `steps` easing. ### Changed - Values added to `will-change` now stay there for their lifespan to prevent GPU thrashing and weird Safari subpixel jitters. ## [11.5.6] 2024-09-20 ### Fixed - Ensuring updating motion values during `render` doesn't lock rendering for an element. ## [11.5.5] 2024-09-19 ### Fixed - Changed values of child variants now animate even when the parent variant name hasn't changed. ## [11.5.4] 2024-09-05 ### Fixed - Improving tree-shakability. ## [11.5.3] 2024-09-05 ### Fixed - `Reorder` components now import `motion` proxy. ## [11.5.2] 2024-09-04 ### Added - Changing `motion()` deprecation warning to `warnOnce`. ## [11.5.1] 2024-09-04 ### Added - Exporting `findSpring` for internal use. ## [11.5.0] 2024-09-04 ### Added - `motion.create()` and `m.create()`. ### Deprecrated - `motion()` and `m()`. ## [11.4.0] 2024-09-03 ### Added - Support for React Server Components, including new entrypoints for `motion` and `m` components. ## [11.3.31] 2024-08-29 ### Fixed - Detects conflicts between optimised animations and rendered `style`. - Resumes optimised animations where possible once layout measurements are complete. ## [11.3.30] 2024-08-23 ### Fixed - Removed double `"change"` handler on externally-provided `MotionValue`s. ## [11.3.29] 2024-08-21 ### Fixed - Selective cancellation of optimised appear animations. ## [11.3.28] 2024-08-15 ### Fixed - Use `startTime` instead of `elapsed` to sync optimised animations. ## [11.3.27] 2024-08-14 ### Changed - Allow manual setting of `startTime` via animation options (currently for internal use only). ## [11.3.26] 2024-08-14 ### Fixed - Improving synchronisation between DOM animations on externally-provided `MotionValue`s and internal `MotionValue`s. - Fixing unit conversion on DOM animations with externally-provided `MotionValue`s. ## [11.3.25] 2024-08-14 ### Changed - Improve calculation of `startTime` to prefer the immediacy of animation creation over keyframe resolution, but fall back to the latter if the former would lead to a perceptual jump. ## [11.3.24] 2024-08-08 ### Fixed - Fixing incorrect version publish. ## [11.3.23] 2024-08-07 ### Fixed - Improving optimised appear animation check from `data-appear-id` to active recording of started animations. - Only cancelling optimised appear animations from layout animations when they're animating `transform`. ## [11.3.22] 2024-08-07 ### Fixed - Fixing spring animations with explicit velocities that animate to their current value. ## [11.3.21] 2024-07-27 ### Changed - Removing default transforms from generated `transform` string provided to `transformTemplate`. ## [11.3.20] 2024-07-27 ### Changed - Improved performance of `transform` by up to 30% when providing many default transforms as `MotionValue`s. ## [11.3.19] 2024-07-27 ### Fixed - Fixed problem with `AnimatePresence` not rerendering children unless their presence had changed. ## [11.3.18] 2024-07-26 ### Fixed - Improved correctness of `AnimatePresence` and made safe to use with concurrent rendering. ## [11.3.17] 2024-07-24 ### Added - `domMin` feature bundle. ## [11.3.16] 2024-07-24 ### Changed - Exporting `UseScrollOptions` type. ## [11.3.15] 2024-07-24 ### Changed - Improved types for `inView()`'s `margin` property. ## [11.3.14] 2024-07-24 ### Fixed - Wrapping `usePresence`'s `safeToRemove` callback in `useCallback` leading to fewer re-renders. ## [11.3.13] 2024-07-24 ### Fixed - Fixing `position: fixed` layout animations while scrolling. ## [11.3.12] 2024-07-23 ### Fixed - Improving `useSpring` types so it accepts `MotionValue` or `MotionValue` but always returns `MotionValue`. ## [11.3.11] 2024-07-23 ### Fixed - Removing `"react"` import from DOM-only bundle. ## [11.3.10] 2024-07-23 ### Fixed - Changing `isBrowser` check from `document` to `window`. ## [11.3.9] 2024-07-23 ### Changed - Improve performance of `window.MotionDebug` check. ## [11.3.8] 2024-07-19 ### Changed - Improve performance of layout animation calculated projection comparisons. ## [11.3.7] 2024-07-18 ### Changed - Active render scheduling check to prevent unnecessary `Set` lookups. ## [11.3.6] 2024-07-17 ### Changed - Minor performance improvements for layout animations. ## [11.3.5] 2024-07-16 ### Fixed - Ensuring DOM bundle doesn't include `react` and `react-dom` as dependencies. ## [11.3.4] 2024-07-16 ### Changed - Check for `display: contents` elements now against component props instead of `Element.style`. ## [11.3.3] 2024-07-16 ### Changed - Frameloop now uses a single `Set` vs `Set` and `Array`, leading to smaller bundlesize and better performance under heavy load. ## [11.3.2] 2024-07-11 ### Fixed - No longer adding `background-color` to `will-change`. ## [11.3.1] 2024-07-11 ### Updated - Externally-provided `MotionValue`s are no longer permanently added to `will-change`. ## [11.3.0] 2024-07-10 ### Updated - Animations automatically optimised via `will-change`. ## [11.2.14] 2024-07-09 ### Updated - Improved performance of core render loop. ## [11.2.13] 2024-07-04 ### Fixed - Checking for `null` before interpolating color values. ## [11.2.12] 2024-06-25 ### Fixed - Fixing `dragConstraints={ref}` mixed with layout animations. ## [11.2.10] 2024-05-31 ### Fixed - Changing invalid number interpolation from error to warning and immediate mix. ## [11.2.9] 2024-05-29 ### Fixed - Fixing animation of CSS variables when leading space is present. ## [11.2.8] 2024-05-29 ### Fixed - Ensuring instant animations return animation controls. ## [11.2.7] 2024-05-29 ### Fixed - Only allow layout animations to cancel optimised appear animations when on the same node or an ancestor. ## [11.2.6] 2024-05-22 ### Fixed - Fixed optimised appear animations interrupted by layout animations triggered by a state update within `useLayoutEffect`. ## [11.2.5] 2024-05-21 ### Fixed - Fixing layout animations within portals. Tag `motion` root within portal with `data-framer-portal-id` attribute. ## [11.2.4] 2024-05-16 ### Fixed - Batching triggering animations with `useSpring`. ## [11.2.3] 2024-05-16 ### Fixed - `MotionValue`s created with `undefined` can track velocity correctly. ## [11.2.2] 2024-05-15 ### Fixed - Fixed visual jump when interrupting an optimised appear animation. ## [11.2.1] 2024-05-15 ### Changed - Improved performance of resolving variants by lazy resolving current `MotionValue` state. ## [11.2.0] 2024-05-14 ### Added - Binary visibility interpolation i.e `display: ["block", "none"]` now maintains the visible state throughout the animation. ## [11.1.9] 2024-05-07 ### Changed - Reinstating async event handlers to fix issues with user code and Suspence within Framer. ## [11.1.8] 2024-05-06 ### Fixed - Animating between keyframe unit types when one keyframe is `0` and the other is an explicitly defined keyframe, e.g `y: ["100%", 0]`. ## [11.1.7] 2024-04-19 ### Changed - Updating types for `motion.div`. ## [11.1.6] 2024-04-19 ### Changed - Binding `stop` to `MainThreadAnimation` ## [11.1.5] 2024-04-18 ### Changed - Exporting `DOMMotionComponents`. ## [11.1.4] 2024-04-18 ### Fixed - Fixing types of `motion.div` in certain TS5 environment configurations. ### Changed - Skip removal of existing motion value when `undefined`. ## [11.1.3] 2024-04-17 ### Fixed - ESM compat with CJS bundle. ## [11.1.2] 2024-04-16 ### Fixed - Ensuring transforms unset during unit conversion are restored. ## [11.1.1] 2024-04-16 ### Changed - Updating JSX transform. ## [11.1.0] 2024-04-16 ### Changed - TypeScript 5 upgrade. ## [11.0.28] 2024-04-11 ### Fixed - Ensure CSS var token is set as final animation keyframe. ## [11.0.27] 2024-04-10 ### Fixed - Skipping animations with `duration: 0`. ## [11.0.26] 2024-04-10 ### Fixed - Adding `perspective()` to projection transform. - Changing scheduling of `useTransform` to ensure frames are up-to-date. ## [11.0.25] 2024-04-03 ### Fixed - Ensuring `motion(Fragment)` nodes are skipped from layout projection. ## [11.0.24] 2024-03-29 ### Fixed - Changes in `style` are visible once a value is no longer present in animation props. ## [11.0.23] 2024-03-28 ### Fixed - Fixed layout animations when combined with `z` transforms. ## [11.0.22] 2024-03-26 ### Fixed - Fixed pre-generation of no-op WAAPI animations. ## [11.0.21] 2024-03-26 ### Fixed - Fixed interrupting WAAPI spring animations. ## [11.0.20] 2024-03-21 ### Fixed - Fixed interrupting shared element animations that contain `rotate` or `skew` transforms. ## [11.0.19] 2024-03-21 ### Fixed - Fixed layout animations when combined with `skew` transforms. ## [11.0.18] 2024-03-20 ### Fixed - Default `duration` doesn't override `duration: 0` WAAPI animations. - Fix error when trying to animate unmounted element. - Avoid resolving WAAPI animation when stopping unresolved animation. ## [11.0.17] 2024-03-20 ### Fixed - Interruption of WAAPI animations now animates from correct value. ## [11.0.16] 2024-03-20 ### Fixed - Restored animation promise handling to match behaviour of <11.0.11. ## [11.0.15] 2024-03-19 ### Fixed - Fixed measurements when more than one transform changes unit type. ## [11.0.14] 2024-03-15 ### Fixed - Fixed animation controls in instances where keyframes resolve to be unanimatable. ## [11.0.13] 2024-03-13 ### Added - Added default value types for `backgroundPositionX` and `backgroundPositionY`. ### Fixed - Fixed `height: auto` animations. ## [11.0.12] 2024-03-12 ### Fixed - Updated `@emotion/is-valid-prop` as peer dependency. ## [11.0.11] 2024-03-12 ### Changed - Keyframes now resolved asynchronously. - External event handlers now fired synchronously. - CSS variables and unit conversion now supported with >2 keyframe animations. - Removed WAAPI animation of `background-color`. ## [11.0.10] 2024-03-12 ### Fixed - Improved speed and stability of regexes. ## [11.0.9] 2024-03-12 ### Added - Added support for Content Security Policy (CSP) nonces via `MotionConfig`. ## [11.0.8] 2024-02-29 ### Fixed - Ensure optimised appear animations are cancelled before layout animation measurements. ## [11.0.7] 2024-02-29 ### Fixed - Strip comments from strings before testing if they're CSS variables to prevent significant performance degradation. ## [11.0.6] 2024-02-23 ### Updated - Added support for `motion(Fragment)` for controlling variants. For internal Framer use only. ## [11.0.5] 2024-02-13 ### Updated - Performance updates. ## [11.0.4] 2024-02-13 ### Fixed - Tighten check for `navigator.userAgent`. ## [11.0.3] 2024-01-24 ### Fixed - Fixed layout animation bug in Framer. ## [11.0.2] 2024-01-23 ### Fixed - Fixed velocity calculations when interrupting WAAPI animations. ## [11.0.1] 2024-01-23 ### Removed - Support for internal `transformValues` prop. ## [11.0.0] 2024-01-23 ### Changed - Replaced velocity-check jobs in favour of passive detection. - Post-commit render moved to a microtask. ## [10.18.0] 2024-01-10 ### Added - `globalTapTarget` for use in Framer. ## [10.17.12] 2024-01-09 ### Fixed - Fixed `animate` sequencing for `MotionValue`s. ## [10.17.11] 2024-01-09 ### Fixed - Fixed `layout` prop crashing Motion 3D. ## [10.17.10] 2024-01-05 ### Fixed - Export `UseInViewOptions`. ## [10.17.9] 2024-01-05 ### Fixed - Improve error message when trying to animate multiple keyframes via spring. ## [10.17.8] 2024-01-05 ### Fixed - Adding `null` safeguard for `useAnimationControls`. ## [10.17.7] 2024-01-05 ### Fixed - Fix touch event filtering for hover gesture. ## [10.17.6] 2024-01-04 ### Fixed - Ensure cancelled WAAPI animations can't finish. ## [10.17.5] 2024-01-04 ### Fixed - Fixing final keyframe when using `repeatType` `"reverse"` and `"mirror"`. - Display warning if scroll `container` is `position: static`. - Move more scroll measurements to `read` frame lifecycle. - Adding `amount` to `useInView` dependencies. ## [10.17.4] 2024-01-03 ### Fixed - Ensure keyframe animations don't rerun if all values are the same. ## [10.17.3] 2024-01-03 ### Fixed - Unset gestures correctly animate back to values defined in parent variant. ## [10.17.2] 2024-01-03 ### Fixed - Fixed issues with duration-based springs appearing stuck or snapping. ## [10.17.1] 2024-01-03 ### Fixed - Fixed issue with `dragSnapToOrigin` not continuing animation when interrupted. ## [10.17.0] 2024-01-01 ### Added - Adding `MotionGlobalConfig.skipAnimations` to globally disable animations when testing. ## [10.16.16] 2023-12-08 ### Fixed - `circInOut` easing fixed. - Improved optimised animation handoff. ## [10.16.15] 2023-12-07 ### Fixed - Ensure `animateChanges` only runs in layout effect in initial render. ## [10.16.13] 2023-12-05 ### Fixed - Ensure animations don't attempt to fire when `initial` equals `animate`. ## [10.16.13] 2023-12-05 ### Fixed - Improved animation skipping for keyframe lists. ## [10.16.12] 2023-12-01 ### Fixed - Use single animation to detect document paint ready before triggering optimised animations. - Measure one time for optimised animation start and one for handoff to emulate frame scheduling. ## [10.16.11] 2023-12-01 ### Fixed - Ensure animation is never skipped if it's an interrupting animation. ## [10.16.10] 2023-11-30 ### Fixed - Fixing appear animation optimisation when React portal is present. ## [10.16.9] 2023-11-30 ### Fixed - Skipping no-op animations. ## [10.16.8] 2023-11-29 ### Fixed - Added `disableInstantAnimation` private API. - Ensure optimised appear animations don't run post-hydration. ## [10.16.7] 2023-11-29 ### Fixed - Fixing pan events within React portal. ## [10.16.6] 2023-11-29 ### Fixed - Fixing `Reorder` component types. - Fixing `Reorder.Item` order calculation. - Fixing broken `dragConstraints` if component re-renders during resize. ## [10.16.5] 2023-11-14 ### Fixed - Fixing `AnimatePresence` fast rerender bug. ## [10.16.4] 2023-09-05 ### Fixed - Changed handoff `startTime` source from `performance.now()` to `document.timeline.currentTime`. ## [10.16.3] 2023-09-04 ### Fixed - Improved compatibility of custom `RefObject` and `MutableRefObject` types. - Fixing `useScroll` dependencies array. - Fixing optimised handoff to WAAPI animations. ## [10.16.2] 2023-08-30 ### Fixed - Improved performance of frameloop scheduling. - Fixed crasher when using SVGs as scroll animation targets. ## [10.16.1] 2023-08-21 ### Fixed - SVGs mount read/writes are now batched. ## [10.16.0] 2023-08-16 ### Added - New function syntax for `useTransform`. ### Improved - Improved handoff animation performance. ## [10.15.2] 2023-08-14 ### Fixed - Numerical CSS variables are now read correctly. ## [10.15.1] 2023-08-07 ### Fixed - Replacing `requestAnimationFrame` timestamp with `performance.now()` to avoid [timestamp bug in Chrome](https://bugs.chromium.org/p/chromium/issues/detail?id=1470675#makechanges). ## [10.15.0] 2023-07-28 ### Added - Updated types for public `inView` API. ## [10.14.0] 2023-07-27 ### Added - `scroll()` now accepts animations from `animate()` to create hardware-accelerated animations. ## [10.13.2] 2023-07-27 ### Fixed - Removed animation resync for optimised animation handoff. - Fixed offset not working with useScroll. ## [10.13.1] 2023-07-24 ### Added - Fixed subpixel layout rounding in Chrome. ## [10.13.0] 2023-07-19 ### Added - `scroll()`, a universal API for powering scroll-driven animations via `ScrollTimeline`. ## [10.12.23] 2023-07-19 ### Fixed - Fixing subpixel layout support in Webkit. ## [10.12.22] 2023-07-17 ### Fixed - Supporting subpixel layouts in layout animations. ## [10.12.21] 2023-07-14 ### Fixed - Transforming values if new values have been read from props. ## [10.12.20] 2023-07-13 ### Fixed - Fixing race condition with animation `Promise`. - Attempt to read initial animation from props before reading from DOM. ## [10.12.19] 2023-06-30 ### Fixed - Fixing unit conversion for `translateX`/`translateY`. ## [10.12.18] 2023-06-30 ### Fixed - When layout animation is forced to be instant via `useInstantTransition`, ignore the delay option. ## [10.12.17] 2023-06-23 ### Fixed - Fixing `useInstantTransition` when called on subsequent frames. - Fixing reverse animation with negative speed finishes too early when the time is set to the duration. ## [10.12.16] 2023-05-24 ### Fixed - Fixing unit conversion when animating `translateX`/`translateY`. ## [10.12.15] 2023-05-24 ### Fixed - Fixed timing bug when mixing `layout` prop and `animate()`. - Removing errant log from `resolveConstraints`. ## [10.12.14] 2023-05-23 ### Fixed - Ensure new `layout` components animate correctly on the first re-render. ## [10.12.13] 2023-05-23 ### Fixed - Fixed scale correction in elements that have finished layout animations. ## [10.12.12] 2023-05-15 ### Fixed - Ensuring zero units like `"0px"` can be used as keyframe templates. ## [10.12.11] 2023-05-15 ### Fixed - Fixing ending layout animations immediately on resize. ## [10.12.10] 2023-05-10 ### Fixed - Fixing persisting `AnimatePresence` child when exit animation is interrupted. ## [10.12.9] 2023-05-05 ### Fixed - Fixing jumpy layer when a layout changes after a pending animation has been scheduled. ## [10.12.8] 2023-05-05 ### Fixed - Moving layout animations to `queueMicrotasks()`, ensuring layout animations don't fire until all synchronous effects have executed. ## [10.12.7] 2023-05-02 ### Fixed - Improve handling of `"none"` keyframes. ## [10.12.6] 2023-05-02 ### Fixed - Fixing relative layout animations when mixing `type: false` and `type: "tween", duration: 0`. ## [10.12.5] 2023-05-01 ### Changed - Exporting `visualElementStore` for internal use. ## [10.12.4] 2023-04-18 ### Fixed - Fixing types for `attrX`, `attrY` and `attrScale` values. ## [10.12.3] 2023-04-18 ### Fixed - Fixing CSS variable interpolation inside complex strings. ## [10.12.2] 2023-04-14 ### Added - Support for `attrScale`. Animate the `scale` SVG attribute. ## [10.12.1] 2023-04-14 ### Added - Creating `sync` and `cancelSync` as legacy APIs for use within Framer. ## [10.12.0] 2023-04-14 ### Added - Exporting `frame` and `cancelFrame` as a public API. ## [10.11.6] 2023-04-12 ### Fixed - Fixed performance regression introduced with previous fix. ## [10.11.5] 2023-04-11 ### Fixed - Propagating relative nodes in layout animations. ## [10.11.4] 2023-04-11 ### Fixed - Fixing optimised transform animations. ## [10.11.3] 2023-04-11 ### Fixed - Calling `.play()` on finished animations now correctly restarts them. ## [10.11.2] 2023-04-06 ### Fixed - Fixing WAAPI offsets with springs in animation sequences. ## [10.11.0] 2023-04-06 ### Added - Adding springs to animation sequences. ### Fixed - Fixing "keyframes must be of same type" error with some animation ## [10.10.0] 2023-03-29 ### Fixed - Adding `.duration` to `animate()`. sequences. ## [10.9.4] 2023-03-29 ### Fixed - Removing log from `useSpring`. ## [10.9.3] 2023-03-29 ### Fixed - Improving scroll animation startup time. ## [10.9.2] 2023-03-28 ### Fixed - Fixing animation scope with animation sequences. ## [10.9.1] 2023-03-24 ### Fixed - Recalculating and rerendering relative targets when layout is remeasured. ## [10.9.0] 2023-03-24 ### Added - Animation sequencing. ## [10.8.5] 2023-03-22 ### Fixed - Fixed use of multiple easing functions with WAAPI animations. ## [10.8.4] 2023-03-21 ### Changed - Fixing `from` option in `stagger()`. ## [10.8.3] 2023-03-21 ### Changed - Fixing `duration: 0` animations never ending. ## [10.8.2] 2023-03-21 ### Changed - Further loosening `animate()` overloads. ## [10.8.1] 2023-03-21 ### Changed - Loosening `animate()` overloads. ## [10.8.0] 2023-03-21 ### Added - `stagger()` ### Fixed - SVG and SVG path types for `animate()`. ## [10.7.0] 2023-03-21 ### Changed - Default transitions no longer need to be namespaced under `default`. ## [10.6.1] 2023-03-20 ### Fixed - Complex string types interpolate correctly with WAAPI spring easing. ## [10.6.0] 2023-03-17 ### Added - `cancel()`, `complete()` and `speed` to `animate()`. ### Changed - `"easeIn"`, `"easeOut"` and `"easeInOut"` easing functions are now WAAPI spec-compliant. ### Fixed - `.stop()` stops animations permanently. - `useSpring` timing. - `animate()` with `repeat: 1` and `repeatType` `"reverse"` or `"mirror"` correctly applies final keyframe. ## [10.5.0] 2023-03-16 ### Added - `useAnimate()` provides a composable way to use `animate()`. ## [10.4.0] 2023-03-16 ### Added - `animate()` now supports DOM elements and DOM selectors. ## [10.3.4] 2023-03-16 ### Fixed - Updating README. ## [10.3.3] 2023-03-16 ### Fixed - Using frame timestamp, when available, to sample time. ## [10.3.2] 2023-03-15 ### Fixed - Applying target CSS variable at the end of animation. ## [10.3.1] 2023-03-14 ### Fixed - Fixed `time` `Promise` on instant animation. ## [10.3.0] 2023-03-14 ### Added - `time`, `play()`, `pause()` and `then()` to animations created with `animate()`. ## [10.2.5] 2023-03-13 ### Fixed - Adding de-opt to projection tree when relative target has changed. ## [10.2.4] 2023-03-10 ### Changed - Refactored `animate` to resolve for `time` instead of `timeDelta`. ### Fixed - `delay` will now apply to `"inertia"` animations. ## [10.2.3] 2023-03-07 ### Fixed - Unifying `AnimationPlaybackControls` types. - Changing `Feature` type to fix Next build errors. ## [10.2.2] 2023-03-07 ### Fixed - Restoring `DeprecatedLayoutGroupContext` for legacy Smart Components in Framer. ## [10.2.1] 2023-03-07 ### Fixed - Passing low `restSpeed` and `restDelta` to `useSpring()`. ## [10.2.0] 2023-03-07 ### Added - Vanilla JS entry point `framer-motion/dom`. ## [10.1.0] 2023-03-06 ### Added - Frame-batched event handlers. This means external event handlers are now batched on the next animation frame, allowing React to correctly batch state updates. ## [10.0.2] 2023-03-05 ### Fixed - Fixing "Non-numeric `offset`" error in older browsers. ## [10.0.1] 2023-02-27 ### Changed - Reducing keyframe pregeneration duration by 75%. ## [10.0.0] 2023-02-24 ### Added - `background-color` animations are now hardware accelerated. ### Removed - Removing fallback for `IntersectionObserver`. Use a polyfill for support in older browsers. - Removed `DeprecatedLayoutGroupContext`. ### Changed - Using `exitBeforeEnter` with `AnimatePresence` now throws an error. - Using `value.onChange` will now throw a warning with instructions to change to `value.on("change", callback)`. - Using `AnimateSharedLayout` now throws an error. ### Fixed - `repeat: Infinity` no longer de-opts from pre-generated WAAPI animations. ## [9.1.7] 2023-02-24 ### Fixed - Switching `const enum` for types. ## [9.1.6] 2023-02-23 ### Added - Exporting `scroll` for internal use inside Framer. ## [9.1.5] 2023-02-23 ### Fixed - Changing `Feature` to `Feature`. ## [9.1.4] 2023-02-23 ### Fixed - Fixing types of `useScroll`. ## [9.1.3] 2023-02-23 ### Updated - Limiting propagation of dirty projection nodes for improved layout animation performance. ## [9.1.2] 2023-02-23 ### Updated - Replacing `type enum` with `const enum` for smaller bundlesize. ## [9.1.1] 2023-02-23 ### Updated - Removing external dependencies. ## [9.1.0] 2023-02-23 ### Added - Hardware acceleration of `clipPath`, `filter` and `transform` styles. ## [9.0.7] 2023-02-21 ### Fixed - Improving types of `color.parse()`. ## [9.0.6] 2023-02-21 ### Added - Exporting animation types for internal Framer use. ## [9.0.5] 2023-02-21 ### Added - Adding legacy Popmotion exports for internal Framer use. ## [9.0.4] 2023-02-16 ### Updated - 25% speed improvement for transform string creation. ## [9.0.3] 2023-02-14 ### Updated - Refactored `motion` component features to load without React components. - Deprecated fallback behavior for missing `IntersectionObserver`. ## [9.0.2] 2023-02-07 ### Changed - `Reorder.Item` no longer throws an error within `MotionConfig strict`. ## [9.0.1] 2023-02-02 ### Removed - Tap events no longer suspend `tabindex` attribute for the duration of the gesture. ## [9.0.0] 2023-02-01 ### Added - Tap events are now keyboard accessible. ### Changed - `whileFocus` only triggers according to `focus-visible` rules. ## [8.5.5] 2023-01-30 ### Fixed - Ensuring `Animation.cancel()` is called on finished WAAPI animations. ## [8.5.4] 2023-01-27 ### Fixed - Reducing size of prop filtering. ## [8.5.3] 2023-01-26 ### Fixed - Manually recording optimised appear `startTime` to fix inaccuracies of Firefox's `Animation.currentTime`. ## [8.5.2] 2023-01-23 ### Fixed - Updated optimised appear animations to defer animations until Chrome releases paint holding. ## [8.5.1] 2023-01-19 ### Fixed - Changed `restSpeed` and `restDelta` defaults for granular spring animations. ## [8.5.0] 2023-01-18 ### Added - `layoutRoot` prop. When component has `layout` and `layoutRoot` props, it will perform layout animations instantly but all children will perform layout animations relative to it. ## [8.4.7] 2023-01-18 ### Fixed - Fixed right-click filtering. ## [8.4.6] 2023-01-17 ### Fixed - Fixed WAAPI deoptimisation with layout animations. - Reduced number of animations triggered for components that have gesture event handlers but no corresponding `while-` props. ## [8.4.5] 2023-01-17 ### Fixed - Only trigger `animateChanges` in a `useLayoutEffect` when optimised appear animations are present. - Resync optimised appear handoff animations before cancelling WAAPI animations to ensure seamless visual handoff. ## [8.4.4] 2023-01-17 ### Fixed - Filtering `values` prop. ## [8.4.3] 2023-01-13 ### Fixed - When in Reduced Motion mode, `transition` no longer overrides instant transitions. ## [8.4.2] 2023-01-11 ### Fixed - Events sourced from `pointercancel` no longer being added to pan gesture history. ## [8.4.1] 2023-01-11 ### Fixed - `delay` no longer getting doubled with pregenerated WAAPI keyframes. ## [8.4.0] 2023-01-10 ### Added - Exporting `frameData` and `sync` for internal Framer use. ## [8.3.4] 2023-01-10 ### Fixed - Detection of hex colors with alpha values within complex strings. ## [8.3.3] 2023-01-09 ### Fixed - Stop filtering `pen` hover events. ## [8.3.2] 2023-01-09 ### Fixed - Allow `useMotionTemplate` to accept static values. ## [8.3.1] 2023-01-09 ### Fixed - Memoisation of tap callbacks. ## [8.3.0] 2023-01-09 ### Added - `motion` components can accept a `MotionValue` as `children`. ## [8.2.4] 2023-01-06 ### Fixed - Stop applying scale correction to an element's styles when there's no active projection transform. ## [8.2.3] 2023-01-06 ### Changed - Improved memoisation of internal event handlers. ## [8.2.2] 2023-01-06 ### Fixed - Removed ability to trigger animations via `useAnimationControls()` during render lifecycle. This would be a source of silent or subtle errors. ## [8.2.1] 2023-01-06 ### Fixed - Variant `transition` fixed in Motion 3D. ## [8.2.0] 2023-01-06 ### Added - Exporting easing functions. ## [8.1.9] 2023-01-05 ### Fixed - Preventing infinite keyframe pre-generation. ## [8.1.8] 2023-01-05 ### Fixed - Sampling of animations with delay/repeat settings when interrupting WAAPI animations. ## [8.1.7] 2023-01-04 ### Fixed - Swapping `style` value between `MotionValue` and static value. ## [8.1.6] 2023-01-04 ### Fixed - Minification of `process.env.NODE_ENV`. ## [8.1.5] 2023-01-03 ### Changed - Display warning in development mode when Reduced Motion is enabled on device. ## [8.1.4] 2023-01-03 ### Fixed - Ensuring child variant components fire `onAnimationStart` when an animation is triggered by a parent. ## [8.1.3] 2023-01-02 ### Fixed - Fixed `times`. ## [8.1.2] 2023-01-02 ### Fixed - Fixed `extends` error in `LayoutCamera` and `LayoutOrthographicCamera` components. ## [8.1.1] 2023-01-02 ### Fixed - Fixing error when `Transition.type` is invalid. ## [8.1.0] 2023-01-02 ### Added - `MotionValue.jump` can be used to "jump" a `MotionValue` to a new value, bypassing active springs, ending current animations and resetting to `velocity` to `0`. ## [8.0.4] 2023-01-02 ### Fixed - Cleaning up animations when a `MotionValue` has no active `"change"` subscribers. - Changing `useMotionValueEvent` subscription to `useInsertionEffect`. ## [8.0.3] 2023-01-02 ### Fixed - Use range for tslib dependency. - Fixing multitouch with drag and pan gestures. ## [8.0.2] 2022-12-23 ### Fixed - Fixing defaults for hardware-accelerated animations. ## [8.0.1] 2022-12-21 ### Added - Warning for unhydrated refs passed to `useScroll()` options. ## [8.0.0] 2022-12-21 ### Removed - Removed polyfilled support for mouse/touch events. - Removed drag pointerup patch for Safari over `` elements. ### Changed - `DragControls.start` now accepts `PointerEvent` only. ## [7.10.3] 2022-12-20 ### Changed - Firing `animateChanges` in `useLayoutEffect` rather than `useEffect` to ensure optimised appear animations are handed off before paint. ## [7.10.2] 2022-12-16 ### Fixed - Adding support for all easing functions with WAAPI. ## [7.10.1] 2022-12-16 ### Fixed - Fixed type inference of `useMotionValueEvent`. ## [7.10.0] 2022-12-15 ### Added - `.on()` event method to `MotionValue`. - `"animationStart"`, `"animationComplete"`, `"animationCancel"` and `"change"` events for `MotionValue`. - `useMotionValueEvent` helper method for adding events. ## [7.9.1] 2022-12-14 ### Fixed - Fixing mapping Motion easing names to WAAPI. ## [7.9.0] 2022-12-14 ### Added - Hardware-accelerated `opacity` animations. ## [7.8.1] 2022-12-14 ### Changed - Refactored animation pipeline to better accomodate WAAPI. ## [7.9.0] 2022-12-14 ### Added - Hardware-accelerated `opacity` animations. ## [7.8.1] 2022-12-14 ### Changed - Refactored animation pipeline to better accommodate WAAPI. ## [7.8.0] 2022-12-13 ### Added - Added private APIs for starting initial animations before React hydration and handing off to the component after hydration. ## [7.7.3] 2022-12-13 ### Fixed - Fixed spring effect of `useSpring`. ## [7.7.2] 2022-12-12 ### Removed - Reduced `??` operators to reduce bundlesize. ## [7.7.1] 2022-12-12 ### Changed - Removed `style-value-types` and `framesync` as external dependencies. ## [7.7.0] 2022-12-12 ### Added - Added support for `"startOffset"`, `"textLength"` and `"lengthAdjust"` SVG attributes. ### Removed - Removed ability to define `"inertia"` animation as `"decay"` (officially removed in `3.0.0`). ### Removed - Removed legacy repeat options (officially removed in `3.0.0`). ## [7.6.19] 2022-12-05 ### Fixed - Animation of `viewBox` for SVG elements. ## [7.6.18] 2022-12-02 ### Changed - Removed `popmotion` as external dependency. ## [7.6.17] 2022-12-01 ### Fixed - Manually firing callback with latest callback when `useOnChange` is provided new motion value (affects `useSpring`). ## [7.6.16] 2022-12-01 ### Fixed - Fixing `useOnChange` to resubscribe when provided a new motion value (affects `useSpring`). ## [7.6.15] 2022-11-28 ### Fixed - Rounding tree scale to `1` to prevent unnecessary `scale` transforms. ## [7.6.14] 2022-11-28 ### Fixed - Nothing to see here. ## [7.6.12] 2022-11-24 ### Fixed - `isTransformDirty` node skipping logic. ## [7.6.11] 2022-11-24 ### Fixed - Treat `` components as HTML. ### Updated - Further layout animation performance enhancements. ## [7.6.10] 2022-11-24 ### Updated - Removing read of (currently unused) `position` style as it's erroneously breaking a test in Framer. ## [7.6.9] 2022-11-22 ### Updated - Only updating projection calculations for dirty nodes. ## [7.6.8] 2022-11-22 ### Updated - Reducing number of scroll reads during layout animations. ## [7.6.7] 2022-11-15 ### Fixed - Removed instantiation of externally-provided motion values. ## [7.6.6] 2022-11-11 ### Fixed - Minor layout animation refactors. ## [7.6.5] 2022-11-07 ### Fixed - `VisualElement` changed to `class` implementation. - Fixed issue with relative layout animations when switching relative parents. ## [7.6.4] 2022-11-01 ### Fixed - Updated `buildTransform` types to only expect required arguments. ## [7.6.3] 2022-11-01 ### Added - Exposing `buildTransform` for internal use. ## [7.6.2] 2022-10-27 ### Added - Internal option for `useScroll` to use `useEffect` instead of `useLayoutEffect`. ## [7.6.1] 2022-10-18 ### Fixed - Exporting `CycleState` and `Cycle` types. ## [7.6.0] 2022-10-18 ### Added - `delay()`: An alternative to `window.setTimeout()` that is locked to the animation framerate. ## [7.5.4] 2022-10-17 ### Fixed - Fixed bug relative layout animations within rotated layers. - Fixed bug with `layout="preserve-aspect"` where layers that do change size but aren't moved are reprojected to the old size and stay there. ## [7.5.3] 2022-10-04 ### Fixed - If the initial style was derived from the `initial` prop, and that style is removed from `animate`, while **also** being removed from `initial`, it won't animate back to the originally-defined value. ## [7.5.2] 2022-10-04 ### Fixed - Gracefully handle `undefined` values in `values` prop. ## [7.5.1] 2022-09-30 ### Fixed - `useTransform` correctly cleans up any scheduled animation frames when it unmounts. ## [7.5.0] 2022-09-27 ### Added - `useAnimationFrame` now passes `delta` to provided callbacks as the second argument. ## [7.4.0] 2022-09-26 ### Added - Added internal `values` prop that allows the provision of motion values to use exclusively for performing animations on. ## [7.3.6] 2022-09-20 ### Fixed - Increasing threshold for what's considered a similar aspect ratio in `"preserve-ratio"` layout animations. ## [7.3.5] 2022-09-14 ### Fixed - `isMotionValue` no longer crashing when provided `null`. ## [7.3.4] 2022-09-13 ### Fixed - Run feature detection based on rendered props. ## [7.3.3] 2022-09-13 ### Fixed - Ensuring children dynamic components re-render when context changes. ## [7.3.2] 2022-09-07 ### Added - `isMotionComponent` returns true if the provided component is a `motion` component. - `unwrapMotionComponent` returns the rendered component. ## [7.3.1] 2022-09-07 ### Fixed - Fixing application of `rotateZ`. ## [7.3.0] 2022-09-06 ### Added - `layout="preserve-ratio"` performs a position-only transition if the aspect ratio has changed. ### Fixed - `layout="position"` now works with shared element transitions. ## [7.2.1] 2022-08-23 ### Added - Various filesize reductions. ## [7.2.0] 2022-08-14 ### Added - `AnimatePresence`'s new `mode="popLayout"` prop will "pop" exiting elements from the document layout flow, allowing sibling `layout` elements to animate to their new layout as soon as exiting starts. ### Deprecated - `exitBeforeEnter` - replace with `mode="wait"`. ## [7.1.2] 2022-08-16 ### Fixed - Fixing `useWillChange` export. ## [7.1.1] 2022-08-15 ### Changed - Upping TypeScript output `target` to `"ES6"`. ### Updated - `typescript@4.7` ## [7.1.0] 2022-08-11 ### Added - `useWillChange` for automatically managing the `will-change` style. ## [7.0.3] 2022-08-11 ### Fixed - Trimming CSS vars. ## [7.0.2] 2022-08-11 ### Fixed - Correctly parsing slash-delimited opacities within colors. - Exporting types correctly for Typescript 4.7. ## [7.0.1] 2022-08-10 ### Changed - Replacing internal `useId` with React 18's `useId`. ## [7.0.0] 2022-08-04 ### Updated - `react@18` - `react-three-fiber@8` ### Fixed - Drag to reorder items no longer jumping in React 18. ## [6.5.2] 2022-07-27 ### Fixed - Fix types for `mixer` option in `useTransform`. ### Update - `style-value-types@5.1.0` ## [6.5.1] 2022-07-14 ### Fixed - Adding `onChange` handlers in `useTransform` on `useLayoutEffect`. ## [6.5.0] 2022-07-13 ### Added - `useScroll` for creating scroll-linked animations. ### Deprecated - `useViewportScroll` and `useElementScroll`. ## [6.4.3] 2022-07-08 ### Fixed - Split module to improve ability to code-split and tree-shake `` and `domMax`. ## [6.4.2] 2022-07-06 ### Added - `useInView` now automatically respects `rootMargin` within an iframe. ## [6.4.1] 2022-07-05 ### Added - Renaming `useAnimation` to `useAnimationControls`. `useAnimation` will stay as backwards compatible alias. ## [6.4.0] 2022-07-05 ### Added - `useInView`. ## [6.3.16] 2022-06-27 ### Fixed - Fixing layout animations within `position: fixed` elements. Provide `position: fixed` elements the `layoutScroll` prop to fix. ## [6.3.15] 2022-06-24 ### Fixed - Explicitly declaring `children` prop for components. ## [6.3.14] 2022-06-24 ### Fixed - Exposing more internal types. ## [6.3.13] 2022-06-22 ### Fixed - Fix some missing types by replacing `@internalRemarks` comment with `@privateRemarks`. ## [6.3.12] 2022-06-21 ### Changed - Rolling up published type definitions. ## [6.3.11] 2022-06-08 ### Fixed - Fixed scale correction during rotation & layout animations. ## [6.3.10] 2022-06-03 ### Fixed - Fixing version mismatch warning. ## [6.3.9] 2022-06-03 ### Fixed - Providing path to types via `package.json`'s `exports` field to fix types in TypeScript 4.7. - Safer `process.env.NODE_ENV` check. ## [6.3.8] 2022-06-03 ### Fixed - Restore scroll position after measuring `height` when doing unit conversion animation. ## [6.3.7] 2022-06-03 ### Fixed - Will display a warning if different versions of Motion are mixed. ## [6.3.6] 2022-05-31 ### Fixed - All events are now passive unless a user provides an explicit event listener. ## [6.3.5] 2022-05-30 ### Fixed - Added `initial` prop to Motion 3D types. ## [6.3.4] 2022-05-25 ### Fixed - Updating `reducedMotion` prop in `MotionConfig` now correctly updates throughout the tree. ## [6.3.3] 2022-04-28 ### Fixed - Re-enabling layout animations on `svg` elements. ## [6.3.2] 2022-04-26 ### Fixed - Fixing internal type errors in React 18. - Adding deprecation notice to `AnimateSharedLayout`. ## [6.3.1] 2022-04-22 ### Fixed - SSR in Deno. ## [6.3.0] 2022-04-14 ### Added - Adding `layout` prop to `Reorder.Item`. - `onLayoutAnimationStart`. ### Fixed - Ensure `cycle` is properly memoised. ## [6.2.10] 2022-04-12 ### Fixed - Fixed `useSpring` dependencies if properties change between renders. - Fixed `children` types of `AnimatePresence` and `LayoutGroup`. ## [6.2.9] 2022-04-06 ### Fixed - Fixing `process` in ESM environments. ## [6.2.8] 2022-02-23 ### Changed - Fixing race conditions for variants changed by state vs by gesture. ## [6.2.7] 2022-02-21 ### Changed - Replaced undocumented `LayoutGroup` prop `inheritId` with `inherit`. ## [6.2.6] 2022-02-10 ### Fixed - Remove `useId` from React 18. ## [6.2.5] 2022-02-08 ### Fixed - Improving compatibility with React 18. ## [6.2.4] 2022-02-03 ### Fixed - Fixed layout animations with Framer's `Stack` gap Safari polyfill. ## [6.2.3] 2022-01-25 ### Added - Adding `useReducedMotionConfig` for internal Framer use. ## [6.2.2] 2022-01-21 ### Fixed - Fixing `onBeforeLayoutMeasure`. ## [6.2.1] 2022-01-21 ### Added - Ensure `useReducedMotion` detects reduced motion on load. ## [6.2.0] 2022-01-21 ### Added - `reducedMotion` option to `MotionConfig`. ## [6.1.0] 2022-01-20 ### Added - Added `viewport.fallback` option to disable `IntersectionObserver` polyfill. ## [6.0.0] 2022-01-19 ### Changed - `framer-motion/three` is now `framer-motion-3d`. ## [5.6.0] 2022-01-12 ### Added - `isValidProp` prop to `MotionConfig` that allows the injection of custom detection of valid React props. ## [5.5.8] 2022-01-12 ### Fixed - Removing `transformTemplate` prop correctly rerenders element. ## [5.5.7] 2022-01-11 ### Fixed - Fixing crossfade for % or px unit border radius. [Issue](https://github.com/motiondivision/motion/issues/1413) ## [5.5.6] 2022-01-07 ### Fixed - `MotionConfig` propagates changes to transition. ## [5.5.5] 2021-12-17 ### Fixed - Using `dpr` prop in layout animation calculations. ## [5.5.4] 2021-12-16 ### Fixed - Improving performance of `LayoutCamera`. - Removing `data-projection-id` in static mode. ## [5.5.3] 2021-12-15 ### Fixed - Improving performance of `LayoutCamera` and fixing final flash. ## [5.5.2] 2021-12-15 ### Fixed - Reimplemented dynamic resolution scaling for `LayoutCamera`. ## [5.5.1] 2021-12-14 ### Fixed - Removed dynamic resolution scaling from `LayoutCamera` to fix crash in iOS. ## [5.5.0] 2021-12-14 ### Added - `LayoutCamera` and `LayoutOrthographicCamera`. ## [5.4.5] 2021-12-09 ### Fixed - Passing `MotionConfigContext` through from DOM into 3D. ## [5.4.4] 2021-12-08 ### Fixed - Fixing variant animations across DOM and 3D boundaries via `MotionCanvas`. ## [5.4.3] 2021-12-07 ### Fixed - Fixing export paths. [PR by @edoardolincetto](https://github.com/motiondivision/motion/pull/1385). ## [5.4.2] 2021-12-07 ### Fixed - Sharing `MotionContext` across Motion and Motion 3D environments in CommonJS environments. ## [5.4.1] 2021-12-06 ### Fixed - 3D entry point overwriting ES modules with dropped exports. ## [5.4.0] 2021-12-06 ### Added - `useAnimationFrame` ## [5.3.3] 2021-11-24 ### Fixed - Fixing animating to CSS variables with `SVGElement`. [Issue](https://github.com/motiondivision/motion/issues/1334) - Unsetting `z-index` for resting `Reorder.Item` components. [Issue](https://github.com/motiondivision/motion/issues/1313) - Forward native drag listeners to `draggable` elements. [Issue](https://github.com/motiondivision/motion/issues/1248) - Authors can now support browsers without `Proxy` by using `motion("div")` syntax. [Issue](https://github.com/motiondivision/motion/issues/1178) ## [5.3.2] 2021-11-23 ### Fixed - Ensuring forced renders are batched so sibling `AnimatePresence` renders are triggered together. [Issue](https://github.com/motiondivision/motion/issues/1358) - Viewport enter/leave event handlers are passed `IntersectionObserverEntry` or `null` if `IntersectionObserver` is not supported on the device. [Issue](https://github.com/motiondivision/motion/issues/1364) - No longer applying touch scroll-disabling styles if `dragListener` is set to `false`. [Issue](https://github.com/motiondivision/motion/issues/1341) ## [5.3.1] 2021-11-19 ### Added - `useInstantTransition` hook for internal use. ### Fixed - Removing `layoutDependency` from forwarded props. [Issue](https://github.com/motiondivision/motion/issues/1350) - `Reorder.Item` correctly fires `onDrag`. [Issue](https://github.com/motiondivision/motion/issues/1348) - Fires `onPressStart` and `onHoverStart` **after** triggering animations. - Replay keyframes when variant changes. [Issue](https://github.com/motiondivision/motion/issues/1346) - Correctly SSR final keyframe when `initial` is `false`. ## [5.3.0] 2021-11-11 ### Added - `whileInView`, `onViewportEnter` and `onViewportLeave` props. ## [5.2.1] 2021-11-05 ### Fixed - Fixing unit conversion for `x` and `y` styles. [Issue](https://github.com/motiondivision/motion/issues/1336) ## [5.2.0] 2021-11-04 ### Added - Enable animation between hsla and rgba/hex. ### Fixed - Fixing HSLA color interpolation. [Issue](https://github.com/motiondivision/motion/issues/1324) ## [5.1.0] 2021-11-02 ### Added - Adding path drawing support for `circle`, `ellipse`, `line`, `path`, `polygon`, `polyline` and `rect` components. - Add SSR support for `pathLength`. ### Fixed - Fixed SSR for `pathLength`. - Downgrading `whileFocus` to lowest gesture priority. [Issue](https://github.com/motiondivision/motion/issues/1221) - Fixed path length for elements with `vectorEffect="non-scaling-stroke"` [Issue](https://github.com/motiondivision/motion/issues/521) - Stripping `dragSnapToOrigin` from DOM output. [PR by @Evalon](https://github.com/motiondivision/motion/pull/1326) ## [5.0.2] 2021-11-02 ### Fixed - Convert x/y from percent to pixels before drag. [Issue](https://github.com/motiondivision/motion/issues/424) - Dynamic functions passed to `controls.start()` can now return variant names. [Issue](https://github.com/motiondivision/motion/issues/503) - Factors in padding when measuring elements for `width`/`height` unit conversion. [Issue](https://github.com/motiondivision/motion/issues/368) ## [5.0.1] 2021-11-01 ### Added - `onAnimationStart` is now called with the definition of the triggering animation. ### Fixed - Removing context memoisation to ensure removed values are correctly animated to. - Adding unmount check to `AnimatePresence` before updating state. [PR by @ctrlplusb](https://github.com/motiondivision/motion/pull/796) - Fixing types for multi-input `useTransform`. [PR by @kena0ki](https://github.com/motiondivision/motion/pull/843) - Fixing `staggerChildren` for value-specific transitions. [Issue](https://github.com/motiondivision/motion/issues/1081) - Fixes animation between `0` and non-number/pixel keyframe array. [Issue](https://github.com/motiondivision/motion/issues/1308) ## [5.0.0] 2021-10-27 ### Added - `Reorder` components to create drag-to-reorder interfaces. - `LayoutGroup` allows namespacing `layoutId` and group elements that may affect each-other's layout on re-render. - `layoutDependency` prop to restrict when components are measured. - `layoutScroll` prop to hint to layout animations when a element is scrollable. - Layout animations are auto-completed when the viewport resizes. - `layout="size"` for size-only animations [PR by @bhollis](https://github.com/motiondivision/motion/pull/1154). ### Fixed - Various layout projection improvements. ### Changed - `AnimateSharedLayout` is deprecated. ## [4.1.17] 2021-05-17 ### Fixed - Fixing SVG `gradientTransform`. - Removing hover event suspension during layout measurements. ## [4.1.16] 2021-05-12 ### Fixed - Use with changing external refs. ## [4.1.15] 2021-05-11 ### Fixed - Correctly firing `onAnimationComplete` when a spring animation defined by `bounce` and no `duration` is completed. ## [4.1.14] 2021-05-11 ### Fixed - Narrowing the edge cases within which drag could lock the projection viewport box. - Comparing prev scale to correct axis. ## [4.1.13] 2021-05-07 ### Fixed - Call function ref if it changes between renders. ## [4.1.12] 2021-05-07 ### Fixed - Layout measurements for drag gesture don't happen until the gesture is confirmed to start. - Prevent occasional flash when projection hasn't yet been hydrated. - Unifying layout batcher between drag and layout animations. - Suspending hover events globally during layout measurements. ## [4.1.11] 2021-04-28 ### Fixed - Layout projection fix. ## [4.1.10] 2021-04-26 ### Fixed - Allow a component to have `transform` reset before measuring child layout. ## [4.1.9] 2021-04-23 ### Fixed - Further nested drag improvements for external motion values. ## [4.1.8] 2021-04-22 ### Fixed - Nested drag improvements for external motion values. ## [4.1.7] 2021-04-21 ### Fixed - Nested drag improvements. ## [4.1.6] 2021-04-20 ### Fixed - Nested drag improvements. ## [4.1.5] 2021-04-19 ### Fixed - Layout projection improvements. ## [4.1.4] 2021-04-19 ### Fixed - Disabling hover events when a drag is active. ## [4.1.3] 2021-04-07 ### Fixed - Animating to/between `0rem` and other non-specifically handled unit types. ## [4.1.2] 2021-04-01 ### Fixed - Clamping `borderRadius` to `0` and above during crossfade. ## [4.1.1] 2021-04-01 ### Fixed - Animating from `undefined` to number (including units) now animates from `0`. ## [4.1.0] 2021-03-31 ### Added - Relative layout animations - Adding `transition.crossfade` and `transition.layout` for crossfade and layout-specific transitions. ### Fixed - Various layout projection improvements. ## [4.0.3] 2021-03-24 ### Fixed - Replaced layout animation tree traversal with flat array traversal of **just** projecting elements. ## [4.0.2] 2021-03-19 ### Fixed - Various layout animation bugfixes. ### Upgraded - Upgraded `popmotion`, `framesync`, `style-value-types` and `tslib` to `latest`. ## [4.0.1] 2021-03-23 ### Fixed - Adding `package.json` to `exports` so it can be imported by Node. ## [4.0.0] 2021-03-18 ### Added - Added the new `LazyMotion` component to defer the loading of animations and gestures. ### Removed - The deprecated `motion.custom()`. Use `motion()` instead. ## [3.10.6] 2021-03-18 ### Fixed - Various variant bugs. ## [3.10.5] 2021-03-15 ### Fixed - Added specific `default` and `require` fields to the `exports` field for CJS compatibility. ## [3.10.4] 2021-03-15 ### Added - `exports` field to `package.json`. ### Fixed - `useMotionValue` now forces re-render on the Framer canvas when the underlying `MotionValue` updates. ## [3.10.3] 2021-03-10 ### Fixed - Reduced memory consumption in static mode by not loading `VisualElement`. ## [3.10.2] 2021-03-09 ### Fixed - Improved memory consumption of `SubscriptionManager`. ## [3.10.1] 2021-03-09 ### Fixed - New layout animations now only trigger when the target viewport box has changed. ## [3.10.0] 2021-03-03 ### Added - `useVelocity`. ## [3.9.3] 2021-03-03 ### Fixed - Exporting `AnimationPlaybackControls` and `AnimationOptions` for `animate()`. - Fixed passing dynamic function to `controls.start()`. ## [3.9.2] 2021-03-02 ### Fixed - Crossfader now only returns values for the lead and follow components. ## [3.9.1] 2021-03-02 ### Fixed - Drag now passing velocity to `useSpring` correctly. ## [3.9.0] 2021-03-02 ### Added - `dragElastic` now accepts per-axis elastic settings. ## [3.8.2] 2021-03-01 ### Fixed - `perspective` now correctly set as its own `style`. `transformPerspective` still builds into `transform`. ## [3.8.1] 2021-03-01 ### Changed - Refactoring `AnimationType` is improve bundle-splitting. ## [3.8.0] 2021-03-01 ### Fixed - Code-splitting for Webpack. ## [3.7.0] 2021-02-23 ### Added - `motion()` creates custom `motion` components. - `forwardMotionProps` boolean to optionally forward `MotionProps` to custom components. ### Changed - Custom `motion` components no longer forward `MotionProps` by default. ### Deprecated - `motion.custom` ### Fixed - Listing React 17 as a `peerDependency`. ## [3.6.7] 2021-02-22 ### Fixed - More permissive check for previously-unencountered values. ## [3.6.6] 2021-02-22 ### Fixed - Safer `hasOwnProperty` check for `null` values. ## [3.6.5] 2021-02-22 ### Fixed - Only fire `onPanEnd` if `onPanStart` has triggered. ## [3.6.4] 2021-02-22 ### Fixed - Adding polyfill `performance.now` in `framesync`. ## [3.6.3] 2021-02-22 ### Fixed - Only crossfading defined `borderRadius` borders during shared element transitions. ## [3.6.2] 2021-02-20 ### Fixed - `AnimatePresence` now correctly unmounts children if it contains no `motion` components. ## [3.6.1] 2021-02-19 ### Fixed - `onAnimationComplete` on child variant components now fire as expected. ## [3.6.0] 2021-02-19 ### Added - `onAnimationComplete` now provides the definition of the triggering animation. ## [3.5.3] 2021-02-19 ### Fixed - Fixing bug with `afterChildren` and `exit` animations. ## [3.5.2] 2021-02-18 ### Added - Setting `sideEffects: false` in `package.json` to help code splitting in Webpack. ## [3.5.1] 2021-02-18 ### Fixed - `onTapCancel` is now being correctly cleaned up. ## [3.5.0] 2021-02-18 ### Added - Adding `transition` prop to `MotionConfig` to set a default `transition` for an entire tree. ## [3.4.2] 2021-02-18 ### Added - `onBeforeLayoutMeasure` prop, currently a Framer internal. ## [3.4.1] 2021-02-18 ### Fixed - De-duplicating features in nested `MotionConfig`s to avoid key error. ## [3.4.0] 2021-02-18 ### Changed - Main `motion` component concurrent-safe. ### Fixed - Crossfading elements can now never fall out of positional/style sync due to mismatched animations or framelag. - Fixing SVG double translation transform (props + transform style). - `animate` `onComplete` now firing correctly. - Only firing keyframe animation when all values have changed. - Removing forced re-renders for variant trees. - Variant stagger order now determined by DOM APIs. - Fixed default spring for `scale`, `opacity` etc from being overdamped to being critically damped when animating to `0`. ## [3.3.0] 2020-02-03 - Fixing errant publish. ## [3.2.1] 2020-01-11 ### Added - Exporting `useVariantContext` for internal Framer use. ## [3.2.0] 2020-01-08 ### Added - Support for hex `alpha`, ie `#FFF0` and `#FFFFFF00`. - Support for default `filter` values. For example, when animating from `brightness(50%)`, the animation will start from `brightness(100%)`rather than`brightness(0%)`. ## [3.1.5] 2020-01-08 ### Fixed - Hover events are now blocked while layout is being measured. ## [3.1.4] 2020-01-05 ### Fixed - Blocking layout animations to/from zero bounding boxes. - `onTapCancel` now fires correctly on touch screens. - `createDomMotionComponent` types. ## [3.1.3] 2020-01-04 ### Fixed - Fixed types for `pathSpacing` and `pathOffset`. ## [3.1.2] 2020-01-04 ### Fixed - `snapToCursor` respects drag axis. ## [3.1.1] 2020-12-18 ### Updated - Updated dependencies. ## [3.1.0] 2020-12-18 ### Added - `whileFocus` ## [3.0.1] 2020-12-18 ### Fixed - Error when mixing `initial={false}` and `animate={controls}`. ## [3.0.0] 2020-12-16 ### Added - `whileDrag` - Adding Safari-prefixed `userSelect` css to draggable elements. - `whileHover`, `whileTap` and `exit` all now accept variant lists. ### Changed - New behaviour for when values are removed from animation props (`animate`, `whileHover`, `exit` etc). The value will be searched for in active props of a lower priority running (`style` <- `animate` <- `whileHover` <- `whileTap` <- `whileDrag` <- `exit`). This may introduce subtle behavioural changes, hence the major. ### Removed - The deprecated `useInvertedScale` hook. Use the `layout` prop instead. - The deprecated `yoyo`, `flip` and `loop` options. Use `repeat` and `repeatType` options instead. ### Fixed - Correctly applying `transform` on SVG elements. - Lazy-initialising viewport scroll, VisualElement.axisProgress, and reduced motion `MotionValue`s, for increased startup performance. - Improved measurement scheduling for `drag` components and nested `AnimateSharedLayout` trees. - Robust calculation of `treeScale`. ## [2.9.5] 2020-11-16 ### Added - Updating `package.json` to be compatible with React 17. ## [2.9.4] 2020-10-21 ### Added - Exporting internal API `startVisualElementAnimation` for use in Framer. ## [2.9.3] 2020-10-19 ### Added - Exporting `Target` type. ## [2.9.2] 2020-10-19 ### Fixed - Over-eager variant propagation. ## [2.9.1] 2020-10-12 ### Fixed - Reverting `matchMedia` listener to legacy `addListener` to fix in Safari. ## [2.9.0] 2020-10-12 ### Added - Refactor has reduced complete bundle size to 27kb and `m` component bundle size to 12.5kb. ### Fixed - Removing whitespace from resolved CSS variables. ## [2.8.0] 2020-10-09 ### Added - `animate` function for low-level single `MotionValue` or arbitrary value animations. ## [2.7.8] 2020-10-07 ### Changed - Reverting previous behaviour to allow manual triggering of updating drag constraints via `useDragControls`. ## [2.7.8] 2020-10-07 ### Changed - If `dragConstraints` is set to a ref on a non-draggable component, we resolve the constraints on mount in order to pass them to `onMeasureDragConstraints`. ## [2.7.7] 2020-10-01 ### Fixed - `duration` and `bounce` are now overridden by `damping`, `stiffness`, and `mass`. This fixes an issue in Framer where legacy transitions were breaking. ## [2.7.6] 2020-09-29 ### Fixed - When a `transform` is provided to `style` as a `MotionValue` and then replaced with a number on a subsequent render, we create a new `MotionValue` for it. ## [2.7.5] 2020-09-26 ### Fixed - Manually setting a `from` in `transition`. ## [2.7.4] 2020-09-26 ### Fixed - Blocks propagation of variants from parent if a component's `animate` prop is set to `AnimationControls`. `inherit` can be used to force inheritence `true` or `false`. ## [2.7.3] 2020-09-25 ### Fixed - Blocks touch viewport scrolling from draggable components on a per-axis basis. - Reinstating `sideEffects: false` now that the `blockViewportScroll` method has been removed. ## [2.7.2] 2020-09-24 ### Added - `createDomMotionComponent` for legacy browser support. ## [2.7.1] 2020-09-23 ### Fixed - Reverting `sideEffects: false`, as viewport touch scroll blocking is a side effect. ## [2.7.0] 2020-09-23 ### Added - Duration-based springs. ## [2.6.15] 2020-09-18 ### Fix - Fixing dynamic type imports in generated types. ## [2.6.14] 2020-09-18 ### Fix - No longer unsetting transform motion values from `style` if their current value is `0`. - Correct `useDomEvent` types to allow any `EventTarget`. - Fix memory leak error in `AnimatePresence`. ### Change - Added `sideEffects: false` to `package.json`. - Added `bundlesize` bundle budgeting. ## [2.6.13] 2020-09-12 ### Fix - `drag` + `layout` components no longer reset position to center. ## [2.6.12] 2020-09-11 ### Change - Reduced full bundle size by 0.8kb by replacing `import * from "popmotion"` with a named map of specifically just the easing functions. ## [2.6.11] 2020-09-11 ### Fixed - Reinstating default keyframes duration of `0.8` seconds. ## [2.6.10] 2020-09-10 ### Fixed - `dragElastic={0}` gesture end animations now work correctly. ## [2.6.9] 2020-09-09 ### Fixed - Ensure `AnimatePresence` children re-render when children exit. ## [2.6.8] 2020-09-08 ### Fixed - Ensure useTransform uses the latest handler. ## [2.6.7] 2020-09-08 ### Added - Scale correction for `borderRadius` and `boxShadow` found in `style`. - Fixed conflict between `initial` and `style`. `initial` will now take precedence on initial render. - Support for CSS variables in scale-corrected `boxShadow` styles. ## [2.6.6] 2020-09-03 ### Fixed - Correctly mapping `times` option to Popmotion's `offset`. ## [2.6.5] 2020-08-28 ### Changed - Tweaked `restSpeed` defaults for smoother halting of physical (px) springs. ### Fixed - Critical-damped spring equations in Popmotion. ## [2.6.4] 2020-08-28 ### Fixed - Forcing array targets to use keyframes animations. ## [2.6.3] 2020-08-27 ### Fixed - Coercion to type `auto`. ## [2.6.2] 2020-08-26 ### Fixed - Fixing detection of transition definitions and application of default transitions. - When animating to/from `0` and a unit type, `0` will be coerced to that unit type rather than needing unit conversion via DOM measurement. ## [2.6.1] 2020-08-26 ### Fixed - Updating `useDragControls` documentation to reflect that triggering events should be `usePointerDown`, as mouse events work differently on touch screens. - `AnimatePresence.custom` is passed throughout the tree for all exit variants. - Animating the `viewBox` attribute of `svg` elements now correctly sets the `viewBox` attribute instead of `view-box`. ### Upgrade - Typescript 4. ## [2.6.0] 2020-08-24 ### Fixed - Reverting relative `dragConstraints` resolution that was erroneously changed in `2.1.3`. ## [2.5.5] 2020-08-20 ### Fixed - Tweaked `restDelta` in `popmotion@9.0.0-rc.7` for smoother `opacity` transitions. ## [2.5.4] 2020-08-20 ### Fixed - Fixed jumpy drag transitions resulting from existing animations not being correctly stopped. ## [2.5.3] 2020-08-20 ### Fixed - Improved velocity check for underdamped springs. ## [2.5.2] 2020-08-20 ### Fixed - Drag transitionEnd conflicting with layout animations. ## [2.5.1] 2020-08-18 ### Fixed - Occasional glitchy movement with `type: "spring"` and `repeatType: "mirror"` ## [2.5.0] 2020-08-18 ### Added - New repeat syntax - Support for repeated springs ### Fixed - Fixed support for `null` in keyframes animations. - Fixed `delay` propagation. ## [2.4.3] 2020-08-18 ### Changed - Upgrading to Popmotion 9 RC. ## [2.4.1] 2020-08-12 ### Fixed - Adding defensive check for `visualElement.box` in `MeasureLayout`. ## [2.4.0] 2020-08-12 ### Added - Upgraded `useTransform` to accept multiple `MotionValue`s. - Support for `transformPerspective` style. - Internal: `_dragX` and `_dragY` external `MotionValue` targets for drag gesture. - Internal: Support for rotate in `AnimateSharedLayout` within Framer. - Internal: `onViewportBoxUpdate`, `onLayoutMeasure` and `onLayoutUpdate` event handlers added to `HTMLVisualElement`. ### Fixed - Fixed `AnimateSharedLayout` within React `17.0.0-rc.0`. - Drag now works directly on `x` and `y` transforms unless `layout` or `layoutId` are also set. ### Changed - Marked `useInvertedScale` as deprecated. ## [2.3.0] 2020-07-28 ### Added - `useMotionTemplate`, a hook for combining MotionValues using a string template literal. ## [2.2.0] 2020-07-27 ### Added - `m` component is a lightweight, featureless version of the `motion` component. - `MotionConfig` is used to dynamically provide features to `m` components via context. ## [2.1.4] 2020-07-24 ### Added - Drag Cypress test suite. ### Fixed - Application of relative drag constraints. - User-set transforms were only updating when layout transforms updated. - Fixing drag on SVG components. ## [2.1.3] 2020-07-23 ### Fixed - HSLA interpolation when either HSLA contains a decimal. - Whitespace-syntax color support. - `onLayoutAnimationComplete` now firing correctly. ## [2.1.2] 2020-07-22 ### Fixed - Respecting `transformTemplate` for layout animations. - Fixed `this.box is undefined` errors. ### Changed - Internal refactoring to improve tree-shaking and allow for dynamic feature injection. ## [2.1.1] 2020-07-20 ### Fixed - Performance improvements to layout delta calculations. ## [2.1.0] 2020-07-17 ### Added - `layout="position"` for position-only layout animations. ## [2.0.1] 2020-07-16 ### Fixed - Fixed issue with draggable components staying stuck when they're getting render-thrashed. ## [2.0.0] 2020-07-15 ### Added - `layout` prop for automatic layout animations. - `AnimateSharedLayout` and `layoutId` for shared layout animations. - `onMeasureDragConstraints` prop that fires when `dragConstraints` are measured. - `useIsPresent`, a read-only version of `usePresence`. - Allow `dragConstraints` to be a ref that is smaller than the draggable element. ### Removed - `positionTransition` and `layoutTransition` props (use `layout={true}` instead). - `Point` type in favour of `Point2D`. - `useAnimatedState`: Moved to Framer library. - `dragOriginX`, `dragOriginY` props. - `stylefire` as a dependency. ### Fixed - Removing a `MotionValue` from `style` now correctly unsets it from the element. ### Changed - Using `Proxy` to generate `motion` components. This saves ~0.5kb from the bundle size and ensures compatibility with all DOM elements and Web Components. - `x` and `y` transform values won't change as a result of a drag gesture as this now works via layout projection. - Drag events now report `point` as the pointer relative to the viewport, in line with other pointer events. - Changed build process and using Terser for uglification. Reduces bundle size by ~1.2kb. ([@stokesman](https://github.com/stokesman) in [#596](https://github.com/motiondivision/motion/pull/596)) ## [1.11.1] 2020-06-16 ### Fixed - Using `useIsomorphicEffect` for `useElementScroll` and `useViewportScroll`.([@thebuilder](https://github.com/thebuilder) in [#592](https://github.com/motiondivision/motion/pull/592)) ## [1.11.0] 2020-05-15 ### Added - Added a `useElementScroll` hook that allows the creation of scroll motion values for HTML elements. ([@souporserious](https://github.com/souporserious) in [#195](https://github.com/motiondivision/motion/pull/195)) ## [1.10.3] 2020-03-23 ### Fix - Replacing the functionality of `DragControls` `e.preventDefault()` with CSS and HTML attributes. ([@inventingwithmonster](https://github.com/inventingwithmonster) in [#495](https://github.com/motiondivision/motion/pull/495)) ## [1.10.2] 2020-03-23 ### Fix - Fixing `PresenceChild` losing correct count of exiting children if it re-renders. ([@inventingwithmonster](https://github.com/inventingwithmonster) in [#490](https://github.com/motiondivision/motion/pull/490)) ### Changed - Removed developer warning when using `usePresence` outside of an `AnimatePresence` block. ## [1.10.1] 2020-03-23 ### Fix - Fixing `AnimatePresence` children not re-rendering when their exiting siblings have been removed from the tree (which broke siblings `positionTransition` and `layoutTransition`). ([@inventingwithmonster](https://github.com/inventingwithmonster) in [#489](https://github.com/motiondivision/motion/pull/489)) - Adding `null` check for `getTranslateFromMatrix` ([@JoyalJoyMadeckal](https://github.com/JoyalJoyMadeckal) in [#482](https://github.com/motiondivision/motion/pull/482)) ## [1.10.0] 2020-03-19 ### Added - `AnimatePresence` now supports multiple `usePresence` children within a given sub-tree. ## [1.9.1] 2020-03-06 ### Fixed - Ensuring drag momentum animations happen on `_dragValueX` and `_dragValueY` if provided. ([@inventingwithmonster](https://github.com/inventingwithmonster) in [#473](https://github.com/motiondivision/motion/pull/473)) ## [1.9.0] 2020-03-02 ### Added - `usePresence` hook. ([@inventingwithmonster](https://github.com/inventingwithmonster) in [#473](https://github.com/motiondivision/motion/pull/473)) - `repository` field in `package.json`. ([@iamstarkov](https://github.com/iamstarkov) in [#469](https://github.com/motiondivision/motion/pull/469)) ## [1.8.4] 2020-02-05 ### Added - `dragListener` prop to disable drag event listeners. ## [1.8.3] 2020-01-28 ### Added - Updated documentation for `DragControls.start`. ## [1.8.2] 2020-01-28 ### Downgrade - Downgraded `api-extractor` to `@7.3` as `7.7.7` broke `Method` name indexing. ## [1.8.1] 2020-01-28 ### Added - Updated documentation for `useDragControls`. ## [1.8.0] 2020-01-27 ### Added - `useDragControls` allows imperative initiation of a drag gesture. ## [1.7.3] 2020-01-24 ### Fixed - Updated `transformTemplate` to provide an empty string if all transform values are default. ## [1.7.2] 2020-01-20 ### Fixed - Changed definition of `staggerDirection` from `1 | -1` to `number` to reduce the need for casting externally-defined types. ## [1.7.1] 2020-01-20 ### Added - Added support for `TargetResolver` in `exit` types. ### Fixed - Filtering `onAnimationStart` from forwarded props. ## [1.7.0] 2019-12-12 ### Added - Support for `prefers-reduced-motion` via the `useReducedMotion` hook. ## [1.6.18] 2019-12-10 ### Fixed - Various `StrictMode`-related bugs including `layoutTransition` origin calculation. - Only applying drag constraints during a `useEffect` to allow render-triggered animations a chance to start (thereby blocking the application of constraints). ## [1.6.17] 2019-11-21 ### Added - `controls.set` can now accept a function that will resolve once for each child. ## [1.6.16] 2019-11-21 ### Fixes - Fixing `ref` hydration in `useLayoutEffect`. (Note: This release effectively reverts `1.6.10`. Each child of `AnimatePresence` with a unique `key` should be given a unique `ref`). - Moving callback ref mutation in `use-drag` and `use-pan-gesture` to a `useEffect`. ## [1.6.15] 2019-10-24 ### Added - Quick start section to README. ## [1.6.14] 2019-10-14 ### Fix - Making position change detection more intelligent. ## [1.6.13] 2019-10-14 ### Fix - Fixing undefined `this.props` error for `AnimatePresence.exitBeforeEnter`. ## [1.6.12] 2019-10-10 ### Fix - Support strings in `motion.custom` for Web Component support. ## [1.6.11] 2019-10-09 ### Fix - Inconsistency in handling `x`/`y` between SVG and HTML. Now always a shorthand for `translateX` and `translateY`. ## [1.6.10] 2019-10-09 ### Fix - Fixing the use of externally-provided `ref`s with single-child `AnimatePresence` components. ## [1.6.9] 2019-10-08 ### Fix - Exit variant propagation. - Cancelling exit animations. ## [1.6.8] 2019-10-02 ### Fix - Fixed exit animation when `animate={useAnimation()}`. - Fixed exit animations when another animation is playing concurrently and finishes first. - Upgrade `stylefire@6.0.11` to fix `clipPath` in Webkit. - Allow `motion.custom` to accept custom prop types. - Support clicks within draggable components on iOS Safari. - Making `inherit` public API. ## [1.6.7] 2019-08-30 ### Fix - Restoring React-style behaviour for transform `style` properties when a component `isStatic`. ## [1.6.6] 2019-08-29 ### Fix - Adding `@emotion/is-prop-valid` as an optional dependency to ensure we filter out arbitrary props passed along by Emotion and Styled Components. ## [1.6.5] 2019-08-27 ### Fix - Value-specific `delay`. ## [1.6.4] 2019-08-27 ### Upgrade - `stylefire@6.0.10` ## [1.6.3] 2019-08-19 ### Fixed - Ensuring `onDragEnd` always fires after if `onDragStart` fired. ## [1.6.2] 2019-08-14 ### Fixed - Invalid property in SVGs. ## [1.6.1] 2019-08-12 ### Fixed - Making `useInvertedScale` public and changing const to function. ## [1.6.0] 2019-08-12 ### Added - `layoutTransition` - `EventInfo` now passed as second argument to `onHoverStart` and `onHoverEnd`. - `useDomEvent` hook for attaching events directly to an `Element`. ### Fixed - Simplifying event system. - Applying values in `animate.transitionEnd` if not initial animation. - Made drag constraints only apply if a value isn't animating. - Don't throw error if `useInvertedScale` is provided arguments. ## [1.5.0] 2019-08-02 ### Added - `useInvertedScale` for inverting parent scales. ## [1.4.2] 2019-07-31 ### Fixed - `positionTransition` on exiting components within `AnimatePresence`. ## [1.4.1] 2019-07-30 ### Fixed - Pan and drag gestures with `PointerEvent`. ## [1.4.0] 2019-07-29 ### Added - `AnimatePresence.exitBeforeEnter`. - Added explicit support for custom components as children of `AnimatePresence`. ### Fixed - Fixing issue with drag constraints (ref-based) being reset, while dragging, on unrelated parent component updates. - Updated rollup config to list `tslib` as an external dependency. - Ensuring unmounting components don't call `onAnimationComplete`. - Adding error message when no initial value is set, or can be read or inferred. - Ensuring color alpha is always within bounds. - Ensuring variants propagate on unmount. ## [1.3.0] 2019-07-24 - Added `onAnimationStart`. ### Fixed ## [1.2.6] 2019-07-23 ### Fixed - Make sure `select`, `input`, `textarea` loose focus when blocking default behaviour in a draggable element. ## [1.2.5] 2019-07-23 ### Fixed - Value type conversion for currently-hidden elements. - Fixing unit type conversions when non-positional transforms are applied. - Fixing variant propagation via `useAnimation()` when the parent component has no `variants` prop set. - Fixing unsetting `whileHover` and `whileTap` if they contain `transitionEnd` values. - Child components within variant trees now animate to `animate` as set by their parent. - Checking animation props for array variants as well as strings. - If unencountered value is animated, first attempt to extract an initial value from keyframes definition. Also upgrading `stylefire` to gracefully handle transform requests. ## [1.2.4] 2019-07-15 ### Added - `isValidMotionProp` function. ### Fixed - Improving types for `SVGTextElement` components. ## [1.2.3] 2019-07-11 ### Fixed - Don't load `positionTransition` functionality component server-side. - In development mode, ensuring all child keys are unique. ## [1.2.2] 2019-07-11 ### Upgrade - Typescript to `3.5`. ## [1.2.1] 2019-07-10 ### Fixed - Removing re-entering children from exiting list in `AnimatePresence`. ## [1.2.0] 2019-07-09 ### Added - Supporting `positionTransition` as a function that resolves when the component has moved. - Adding `dragOriginX` and `dragOriginY` props. ### Fixed - Excluding `positionTransition` from SVG type. ## [1.1.4] 2019-07-08 ### Updated - Exporting `AnimatePresenceProps`. ## [1.1.3] 2019-07-08 ### Fixed - Fixing `positionTransition` on server-side. ## [1.1.2] 2019-07-08 ### Fixed - Upgrade to `AnimatePresence` algo. ## [1.1.1] 2019-07-05 ### Changed - Moving UMD global from `FramerMotion` to `Motion`. - Removed `@emotion/is-valid-prop`, saving ~1.9kb from bundle. - Using a slimmed-down version of Popmotion, saving ~3kb from bundle. - Removing `async` markers, saving ~0.7kb from bundle. ### Fixed - Cancelling `drag` and `pan` gestures on component unmount. - Previously unseen props in `animate` animate correctly. - Fixing reading SVG attributes from DOM. - Fixed unit type conversion not working with previously-undefined values. - Calling `onAnimationComplete` when `while` overrides are unset. - Preventing initial animation if `animate` is a map of props and `initial={false}`. This went previously unseen as both values were equivalent, but `onAnimationComplete` would fire on mount. ## [1.1.0] 2019-07-03 ### Added - `AnimatePresence` component for controlling mount/unmount animations. - `positionTransition` prop for animating when the layout of a component changes. ## [1.0.5] 2019-07-02 ### Fixed - Fixing SVG path props. ## [1.0.4] 2019-07-01 ### Fixed - Moving SVG path props to `MotionStyle` type. - Changing `MakeMotion` to accept either `MotionValue` OR `MotionValue`. ## [1.0.3] 2019-07-01 ### Fixed - Moving `dragConstraints` to a ref if a component re-renders mid gesture. - Only applying `dragConstraints` on render if component isn't currently dragging. ## [1.0.2] 2019-06-28 ### Fixed - Making `when` type more permissive for passing in implicitly typed, pre-defined `variants`. - Not blocking default browser behaviour when dragging is initiated on draggable element's `select`, `input`, `textarea` elements. ## [1.0.1] 2019-06-27 ### Fixed - Fixing `useSpring` unsubscriptions. ## [1.0.0] 2019-06-26 ### Added - Improved SVG support. ## [0.20.2] 2019-06-20 ### Fixed - Ensuring each `MotionValue` receives one `MotionValuesMap` update subscriber. ## [0.20.1] 2019-06-20 ### Fixed - Adding `x`/`y` `MotionValue`s to the `useDrag` dependency list. - Ensure hover events only fire as a result of mouse interactions. ## [0.20.0] 2019-06-18 ### Feature - Allowing SVG `motion` components to accept `MotionValue`s via attributes. - Adding SVG attribute types to `Target`. ## [0.19.2] 2019-06-13 ### Fixed - Detecting `originZ` as a `transform-origin` value. ## [0.19.1] 2019-06-13 ### Added - `initial={false}` to shadow contents of `animate` thereby disabling on mount animation. - `AnimationControls.set` for imperative setting of values. ### Fixed - Resolve animations only after a defined `delay` to ensure `velocity` is only resolved as an animation begins on a value. ## [0.19.0] 2019-06-13 ### Upgraded - `stylefire@5.0.0` - Changes `originX`/`Y` default to `"50%"`. ## [0.18.6] 2019-06-13 ### Added - Production and prototype environment-specific tsdocs. ## [0.18.5] 2019-06-07 ### Fixed - Properly cleaning up event listeners in tap gesture. - Only starting pan gesture when pointer has moved more than one point. - Applying `transformPagePoint` to `dragConstraints` when it's a `RefObject` to ensure it works in scaled environments. - Fixing `dragElastic` behaviour when `dragMomentum={false}`. ## [0.18.4] 2019-05-30 ### Fixed - Preventing default browser behaviours on draggable elements. ## [0.18.3] 2019-05-30 ### Fixed - Fixing drag when a multitouch gesture starts. ## [0.18.2] 2019-05-22 ### Fixed - Application of `delay`. ## [0.18.1] 2019-05-21 ### Fixed - Fixed regex detection for fallbacks containing a decimal. ## [0.18.0] 2019-05-21 ### Added - `dragConstraints` can now be set as a `React.RefObject`. ### Fixed - Support CSS variables with metadata - Fixing circular CSS dependencies ## [0.17.2] 2019-05-15 ### Fixed - Even if a `motion` component **wasn't** inheriting variant changes, it'd still register with its parent, meaning it'd be considered during stagger duration calculations. - Only firing `onDragEnd` if dragging has actually happened. ## [0.17.1] 2019-05-13 ### Fixed - `dragTransition` now listed as a `useDraggable` dependency. ## [0.17.0] 2019-05-09 ### Added - Experimental `useAnimatedState` Hook for animating arbitrary values. ## [0.16.11] 2019-05-08 ### Fixed - Disabling the animation of `zIndex`. - Making components without variants or animation-controlling props invisible to `staggerChildren`. ## [0.16.10] 2019-05-07 ### Updated - API ### Fixed - Variant propagation when rerendering children ## [0.16.9] 2019-05-07 ### Fixed - Using `transition` and `transitionEnd` as direct values on the `animate` prop on subsequent renders. - Rounding `zIndex`. - `AnimationControls.start` now accepts the same `AnimationDefinition` as `ValueAnimationControls.start`. ## [0.16.8] 2019-05-06 ### Fixed - Cancelling pan gesture when the move events have no mouse button. ## [0.16.7] 2019-05-06 ### Fixed - Fixing propagation of unsetting variant overrides. - Making variant inheritance more permissive. ## [0.16.6] 2019-05-02 ### Fixed - Improved handling of attempting to animate between non-animatable and animatable values. ## [0.16.5] 2019-05-01 ### Added - Adds array and object support to `transform`. ### Fixed - Makes boxShadow and other complex value type support more robust. - Fixing overwriting `transform`. ## [0.16.4] 2019-04-30 - Updating deps. ## [0.16.3] 2019-04-30 ### Added - `shadow` to `CustomValueTypes`. ## [0.16.2] 2019-04-30 ### Fixed - Fixed propagation of `initial` in `static` mode. - Fixing animations from values that are read as "none". ## [0.16.1] 2019-04-25 ### Fixed - Filtering pointer events not from the primary pointer (ie non-left clicks for mouse). - Fixing drag in Android devices by adding aggressive viewport scroll blocking. This will need dialling back down when it comes to open sourcing Motion so, for instance, a horizontal carousel doesn't block vertical scrolling. ## [0.16.0] 2019-04-19 ### Added - `custom` prop for dynamic variants. ### Removed - `useAnimation` no longer takes `variants` or `defaultTransition` arguments (provide these to the component). ### Fixed - Improving comparison for `animate` prop to account for keyframe arrays. - Adding drag point in `onDragStart` and `onDragEnd` callbacks. ## [0.15.2] 2019-04-17 ### Added - Support for CSS variables. ### Fixed - `onDragEnd` not returning transformed point. - Fixing use of `variants` prop with `useAnimation`. ## [0.15.1] 2019-04-16 ### Added - `HTMLMotionProps` and `SVGMotionProps`. ## [0.15.0] 2019-04-16 ### Added - `onPanSessionStart` event handler. ### Changed - `useViewportScrollValues` => `useViewportScroll`. ### Added - `ease` can now be an array for keyframes animations. ### Removed - `easings` prop. ## [0.14.3] 2019-04-12 ### Fixed - Only firing `value.onChange` when value actually changes. ## [0.14.2] 2019-04-11 ### Fixed - Updating `hey-listen`. ## [0.14.1] 2019-04-11 ### Added - Explicit support for the `radius` value. ## [0.14.0] 2019-04-10 ### Changed - Making special value support configurable ## [0.13.0] 2019-04-08 ### Changed - `useTransformedValue` => `useTransform` ### Added - `transform(value, input, output, options)` overload. ## [0.12.2] 2019-04-08 ### Changed - Added new methods to `safeWindow` SSR window mocking. ### Fixed - Deleting unused props from `style` object rather than setting to `undefined`. [#99](https://github.com/motiondivision/motion/pull/99) ## [0.12.1] 2019-04-03 ### Fixed - `size` works with `while` gestures. ## [0.12.0] 2019-04-03 ### Changed - `useCycle([...args])` -> `useCycle(...args)` ### Added - `static` components reflect changes in `initial`. ### Fixed - Dragging doesn't break during re-renders. - `useCycle` setter is independent from render cycle. ### Removed - `useCycle` no longer has the ability to start at a different index. ## [0.11.1] 2019-04-02 ### Added - `onDragTransitionEnd` ### Upgraded - Popmotion libraries. ## [0.11.0] 2019-04-01 ### Changed - `value.addUpdateSubscription` => `value.onChange` - `value.addRenderSubscription` => `value.onRenderRequest` (and made internal) ### Upgraded - `popmotion@8.6.5` ### Fixed - Variants propagate to children even if not present on parent. ## [0.10.2] 2019-03-27 ### Changed - Updating docs to avoid single-letter `event` vars. ## [0.10.1] 2019-03-27 ### Fixed - Fixing `TargetAndTransform` type to omit CSS-native `rotate` property. ## [0.10.0] 2019-03-26 ### Changed - `press` -> `whileTap` - `hover` -> `whileHover` ## [0.9.4] 2019-03-26 ### Fixed - Fixing HTML types. ## [0.9.3] 2019-03-25 ### Added - Exporting `MotionTransform` type. ## [0.9.2] 2019-03-22 ### Added - Added support for `CustomValueType` in `unwrapMotionValue`. ## [0.9.0] 2019-03-22 ### Added - Added `dragDirectionLock` prop. ### Removed - `"lockDirection"` from `dragEnabled`. ### Changed - Renamed `dragEnabled` to `drag`. ## [0.8.8] 2019-03-20 ## [0.8.7] 2019-03-20 ### Added - Adding `transition` argument to `animation.start()`. ### Fixed - No longer fire tap gesture if parent is dragging. - Adjusting default `inertia` settings to more naturally incorporate velocity. - Killing drag momentum on subsequent `pressDown`. - Preventing pan velocity from adjusting draggable parents that have not received `dragPropagation`. - Updating of `dragConstraints` repositions the draggable element to adhere to the new values ## [0.8.6] 2019-03-19 ### Added - `Point.relativeTo` - `transform` ### Fixed - Statefull style bug. - Fixing `Promise` resolution with `animate.start()` when fired pre-mount. ## [0.8.5] 2019-03-15 ### Fix - Blocking extra gesture props from being passed to DOM. - Upgrading `@popmotion/popcorn` to fix Jest bug. ## [0.8.4] 2019-03-15 ### Fix - Fixing `style` set as `null`. ## [0.8.3] 2019-03-14 ### Update - Adding support for custom values. ## [0.8.2] 2019-03-14 ### Update - Updating tsdocs for `MotionValue`. ## [0.8.1] 2019-03-12 ### Update - Updating dependencies. ## [0.8.0] 2019-03-12 ### Changed - `originX`, `originY`, `pathLength`, `pathOffset` changed from percent to progress value types. ## [0.7.5] 2019-03-11 ### Added - Exporting `AnimationControls`. ## [0.7.4] 2019-03-11 ### Added - Exporting `animationControls` and `motionValue` for internal use. ## [0.7.3] 2019-03-08 ### Added - Passing `panInfo` through to `onDragStart` and `onDragEnd`. ## [0.7.2] 2019-03-07 ### Fixed - `easings` property on `keyframes` now maps correctly to easing functions. ## [0.7.1] 2019-03-07 ### Fixed - Enforcing keyframes animation if target is array. - Orchestration props in `transition` prop weren't being respected by variants with no `transition` of their own. ## [0.7.0] 2019-03-07 ### Added - Animation targets can be set as `keyframes`. ## [0.6.8] 2019-03-05 ### Fixed - Updating `dragConstraints` when they change. ## [0.6.7] 2019-03-04 ### Updated - Removing GPU-acceleration for `static` components. - Adding `customStyles` plugin. ## [0.6.6] 2019-02-29 ### Updated - `stylefire@2.4.3` ## [0.6.4] 2019-02-22 ### Added - Exporting `MotionContext`. ### Update - Updated `popmotion@8.6.3` to improve synchronisation across tweens when yoyoing. ## [0.6.3] 2019-02-21 ### Fixed - If `transformPagePoint` is present, transforming initial point. ## [0.6.2] 2019-02-21 ### Fixed - Recognising `press` when it's the lone gesture. ## [0.6.1] 2019-02-20 ### Fixed - Fixed an issue where values set to `style` would overwrite `animate` values even if they hadn't changed. ## [0.6.0] 2019-02-20 ### Added - `static` prop. Set `static` on a motion component to prevent animation and interaction. ### Removed - `render` ## [0.5.2] 2019-02-20 ### Fixed - Animating unit-converting values on mount. ## [0.5.1] 2019-02-19 ### Added - Exporting `MotionComponents`, `CustomMotionComponent`, `HTMLMotionComponents` and `SVGMotionComponents` types. - Exporting `safeWindow`. ## [0.5.0] 2019-02-19 ### Added - `onDrag` event listener - Exporting `MotionStyles` type. ### Changed - `tap` -> `press` ## [0.4.5] 2019-02-15 ### Fixed - Fixing `originX` and `originY` SSR. - Updating `style` props to overwrite CSS `rotate`, `scale` and `perspective`. ## [0.4.3] 2019-02-14 ### Fixed - Rendering `initial` properties via Stylefire when component mounts to ensure its in-sync with all transform values set in `initial` that might not later be rendered. - Exporting `htmlElements`, `svgElements` and `createMotionComponent` as their exclusion was causing errors with the output declaration file. ## [0.4.2] 2019-02-14 ### Changed - Exporting `useExternalRef`. ## [0.4.1] 2019-02-13 ### Changed - Simplifying inline tsdocs. ## [0.4.0] 2019-02-12 ### Changed - Standardizing `(event, pointInfo)` as signature for gesture callbacks. ### Fixed - Gesture priority bugs ## [0.3.2] 2019-02-08 ### Changed - Added TSDocs for `useCycle` ## [0.3.0] 2019-02-05 ### Changed - `duration` and `delay` are now defined as seconds. - `tapActive` -> `tap` - `hoverActive` -> `hover` - `drag` -> `dragEnabled`