diff --git a/packages/svelte/src/internal/client/dom/task.js b/packages/svelte/src/internal/client/dom/task.js index 468482111e..e941ed2eae 100644 --- a/packages/svelte/src/internal/client/dom/task.js +++ b/packages/svelte/src/internal/client/dom/task.js @@ -12,7 +12,12 @@ export const request_idle_callback = export const schedule_yield = // @ts-ignore typeof scheduler === 'undefined' - ? (/** @type {() => void} */ cb) => setTimeout(cb, 1) + ? (/** @type {() => void} */ cb) => { + // For Safari, we fallback to using MessageChannel + const channel = new MessageChannel(); + channel.port1.onmessage = cb; + channel.port2.postMessage(undefined); + } : async (/** @type {() => void} */ fn) => { // @ts-ignore await scheduler.yield();