From 30b04a1e8c741534740dfdf0be7df83990caf420 Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Sun, 26 Oct 2025 12:01:37 -0400 Subject: [PATCH] fix --- .../svelte/src/internal/client/reactivity/async.js | 12 ++++++++---- .../samples/async-derived-module/_config.js | 2 +- .../runtime-runes/samples/async-derived/_config.js | 2 +- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/packages/svelte/src/internal/client/reactivity/async.js b/packages/svelte/src/internal/client/reactivity/async.js index cd88f6e47e..75a71c31d9 100644 --- a/packages/svelte/src/internal/client/reactivity/async.js +++ b/packages/svelte/src/internal/client/reactivity/async.js @@ -345,10 +345,14 @@ export function run(thunks) { promises.push(promise); } - promise.then(() => { - boundary.update_pending_count(-1); - batch.decrement(blocking); - }); + promise + // wait one more tick, so that template effects are + // guaranteed to run before `$effect(...)` + .then(() => Promise.resolve()) + .then(() => { + boundary.update_pending_count(-1); + batch.decrement(blocking); + }); return promises; } diff --git a/packages/svelte/tests/runtime-runes/samples/async-derived-module/_config.js b/packages/svelte/tests/runtime-runes/samples/async-derived-module/_config.js index 7ab79eb825..318f88bcc9 100644 --- a/packages/svelte/tests/runtime-runes/samples/async-derived-module/_config.js +++ b/packages/svelte/tests/runtime-runes/samples/async-derived-module/_config.js @@ -68,8 +68,8 @@ export default test({ assert.deepEqual(logs, [ 'outside boundary 1', '$effect.pre 42 1', - '$effect 42 1', 'template 42 1', + '$effect 42 1', '$effect.pre 84 2', 'template 84 2', 'outside boundary 2', diff --git a/packages/svelte/tests/runtime-runes/samples/async-derived/_config.js b/packages/svelte/tests/runtime-runes/samples/async-derived/_config.js index c866dce406..7239643464 100644 --- a/packages/svelte/tests/runtime-runes/samples/async-derived/_config.js +++ b/packages/svelte/tests/runtime-runes/samples/async-derived/_config.js @@ -34,8 +34,8 @@ export default test({ assert.deepEqual(logs, [ 'outside boundary 1', '$effect.pre 1a 1', - '$effect 1a 1', 'template 1a 1', + '$effect 1a 1', '$effect.pre 2a 2', 'template 2a 2', 'outside boundary 2',