diff --git a/packages/svelte/src/index-client.js b/packages/svelte/src/index-client.js index 92e35ac558..816e2b0a11 100644 --- a/packages/svelte/src/index-client.js +++ b/packages/svelte/src/index-client.js @@ -208,15 +208,15 @@ export function afterUpdate(fn) { * @returns {void} */ export function onAnimationFrame(fn) { - onMount(() => { - let frame = -1; + if (component_context === null) { + lifecycle_outside_component('onAnimationFrame'); + } - function next() { + user_effect(() => { + let frame = requestAnimationFrame(function next() { frame = requestAnimationFrame(next); fn(); - } - - next(); + }); return () => { cancelAnimationFrame(frame);