diff --git a/CHANGELOG.md b/CHANGELOG.md index aca5eef531..870f26e833 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,12 @@ Framer Motion adheres to [Semantic Versioning](http://semver.org/). Undocumented APIs should be considered internal and may change without warning. +## [6.5.1] 2022-07-14 + +### Fixed + +- Adding `onChange` handlers in `useTransform` on `useLayoutEffect`. + ## [6.5.0] 2022-07-13 ### Added diff --git a/packages/framer-motion/src/value/use-on-change.ts b/packages/framer-motion/src/value/use-on-change.ts index 8566c3c553..f4d20319a6 100644 --- a/packages/framer-motion/src/value/use-on-change.ts +++ b/packages/framer-motion/src/value/use-on-change.ts @@ -1,4 +1,4 @@ -import { useEffect } from "react" +import { useIsomorphicLayoutEffect } from "../three-entry" import { MotionValue, Subscriber } from "./" import { isMotionValue } from "./utils/is-motion-value" @@ -6,13 +6,13 @@ export function useOnChange( value: MotionValue | number | string, callback: Subscriber ) { - useEffect(() => { + useIsomorphicLayoutEffect(() => { if (isMotionValue(value)) return value.onChange(callback) }, [callback]) } export function useMultiOnChange(values: MotionValue[], handler: () => void) { - useEffect(() => { + useIsomorphicLayoutEffect(() => { const subscriptions = values.map((value) => value.onChange(handler)) return () => subscriptions.forEach((unsubscribe) => unsubscribe()) })