From f67dc0b0bd11d0aab90aca0f4c20c237fd8278f4 Mon Sep 17 00:00:00 2001 From: Dominic Gannaway Date: Wed, 6 Mar 2024 15:28:33 +0000 Subject: [PATCH] fix: ensure performance.now() and requestAnimationFrame() are polyfilled in ssr --- .changeset/pink-bikes-agree.md | 5 +++++ packages/svelte/src/internal/client/timing.js | 12 ++++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) create mode 100644 .changeset/pink-bikes-agree.md 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() };