diff --git a/.changeset/slow-gorillas-yawn.md b/.changeset/slow-gorillas-yawn.md new file mode 100644 index 0000000000..376b4d041c --- /dev/null +++ b/.changeset/slow-gorillas-yawn.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +breaking: avoid flushing queued updates on mount/hydrate diff --git a/packages/svelte/src/internal/client/render.js b/packages/svelte/src/internal/client/render.js index 21cc096325..a3895ac331 100644 --- a/packages/svelte/src/internal/client/render.js +++ b/packages/svelte/src/internal/client/render.js @@ -79,8 +79,7 @@ export function set_text(text, value) { */ export function mount(component, options) { const anchor = options.anchor ?? options.target.appendChild(empty()); - // Don't flush previous effects to ensure order of outer effects stays consistent - return flush_sync(() => _mount(component, { ...options, anchor }), false); + return _mount(component, { ...options, anchor }); } /** diff --git a/packages/svelte/tests/runtime-browser/samples/bind-playbackrate/_config.js b/packages/svelte/tests/runtime-browser/samples/bind-playbackrate/_config.js index c2718e2850..c94ad0ee3c 100644 --- a/packages/svelte/tests/runtime-browser/samples/bind-playbackrate/_config.js +++ b/packages/svelte/tests/runtime-browser/samples/bind-playbackrate/_config.js @@ -1,8 +1,10 @@ +import { flushSync } from 'svelte'; import { test, ok } from '../../assert'; export default test({ mode: ['client'], async test({ assert, target }) { + flushSync(); const audio = target.querySelector('audio'); const button = target.querySelector('button'); ok(audio); diff --git a/packages/svelte/tests/runtime-browser/samples/head-script/_config.js b/packages/svelte/tests/runtime-browser/samples/head-script/_config.js index b40d4e22e2..ba2680cac1 100644 --- a/packages/svelte/tests/runtime-browser/samples/head-script/_config.js +++ b/packages/svelte/tests/runtime-browser/samples/head-script/_config.js @@ -1,7 +1,9 @@ +import { flushSync } from 'svelte'; import { test } from '../../assert'; export default test({ test({ assert, window }) { + flushSync(); document.dispatchEvent(new Event('DOMContentLoaded')); assert.equal(window.document.querySelector('button')?.textContent, 'Hello world'); } diff --git a/packages/svelte/tests/runtime-browser/samples/sole-script-tag/_config.js b/packages/svelte/tests/runtime-browser/samples/sole-script-tag/_config.js index 650e9241ea..bc81a48fb1 100644 --- a/packages/svelte/tests/runtime-browser/samples/sole-script-tag/_config.js +++ b/packages/svelte/tests/runtime-browser/samples/sole-script-tag/_config.js @@ -1,3 +1,4 @@ +import { flushSync } from 'svelte'; import { test } from '../../assert'; export default test({ @@ -5,6 +6,7 @@ export default test({ // Needs to be in this test suite because JSDOM does not quite get this right. mode: ['client'], test({ window, assert }) { + flushSync(); // In here to give effects etc time to execute assert.htmlEqual(window.document.body.innerHTML, 'this should be executed'); }