diff --git a/.changeset/pink-bikes-agree.md b/.changeset/pink-bikes-agree.md new file mode 100644 index 000000000000..7e0881f6fb56 --- /dev/null +++ b/.changeset/pink-bikes-agree.md @@ -0,0 +1,5 @@ +--- +"svelte": patch +--- + +fix: ensure performance.now() and requestAnimationFrame() are polyfilled in ssr diff --git a/packages/svelte/src/internal/client/timing.js b/packages/svelte/src/internal/client/timing.js index cd7dce04b868..161e92a73329 100644 --- a/packages/svelte/src/internal/client/timing.js +++ b/packages/svelte/src/internal/client/timing.js @@ -1,5 +1,13 @@ +import { noop } from '../common.js'; + +const is_client = typeof window !== 'undefined'; + +const request_animation_frame = is_client ? requestAnimationFrame : noop; + +const now = is_client ? () => performance.now() : () => Date.now(); + /** @type {import('./types.js').Raf} */ export const raf = { - tick: /** @param {any} _ */ (_) => requestAnimationFrame(_), - now: () => performance.now() + tick: /** @param {any} _ */ (_) => request_animation_frame(_), + now: () => now() };