diff --git a/packages/framer-motion/src/render/VisualElement.ts b/packages/framer-motion/src/render/VisualElement.ts index 23e0953d64..d05c8cfabd 100644 --- a/packages/framer-motion/src/render/VisualElement.ts +++ b/packages/framer-motion/src/render/VisualElement.ts @@ -40,6 +40,7 @@ import { findValueType } from "./dom/value-types/find" import { complex } from "../value/types/complex" import { getAnimatableNone } from "./dom/value-types/animatable-none" import { createBox } from "../projection/geometry/models" +import { time } from "../frameloop/sync-time" const propEventHandlers = [ "AnimationStart", @@ -539,7 +540,6 @@ export abstract class VisualElement< } render = () => { - this.isRenderScheduled = false if (!this.current) return this.triggerBuild() this.renderInstance( @@ -550,10 +550,11 @@ export abstract class VisualElement< ) } - private isRenderScheduled = false + private renderScheduledAt = 0.0 scheduleRender = () => { - if (!this.isRenderScheduled) { - this.isRenderScheduled = true + const now = time.now() + if (this.renderScheduledAt < now) { + this.renderScheduledAt = now frame.render(this.render, false, true) } }