From 56013a2c01454388ea5f58642377038f29cdec4a Mon Sep 17 00:00:00 2001 From: Simon H <5968653+dummdidumm@users.noreply.github.com> Date: Mon, 1 Jun 2026 23:39:50 +0200 Subject: [PATCH] fix: check references for blockers on server, too (#18352) We forgot the server in #18309 Fixes #18344 --- .changeset/strong-cups-prove.md | 5 +++++ .../3-transform/server/visitors/shared/utils.js | 2 +- .../Child.svelte | 5 +++++ .../async-derived-prop-closure-hydration/_config.js | 11 +++++++++++ .../async-derived-prop-closure-hydration/main.svelte | 12 ++++++++++++ 5 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 .changeset/strong-cups-prove.md create mode 100644 packages/svelte/tests/runtime-runes/samples/async-derived-prop-closure-hydration/Child.svelte create mode 100644 packages/svelte/tests/runtime-runes/samples/async-derived-prop-closure-hydration/_config.js create mode 100644 packages/svelte/tests/runtime-runes/samples/async-derived-prop-closure-hydration/main.svelte diff --git a/.changeset/strong-cups-prove.md b/.changeset/strong-cups-prove.md new file mode 100644 index 0000000000..ad85a1feba --- /dev/null +++ b/.changeset/strong-cups-prove.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: check references for blockers on server, too diff --git a/packages/svelte/src/compiler/phases/3-transform/server/visitors/shared/utils.js b/packages/svelte/src/compiler/phases/3-transform/server/visitors/shared/utils.js index 62e1c44094..3da6fcf321 100644 --- a/packages/svelte/src/compiler/phases/3-transform/server/visitors/shared/utils.js +++ b/packages/svelte/src/compiler/phases/3-transform/server/visitors/shared/utils.js @@ -343,7 +343,7 @@ export class PromiseOptimiser { * @param {ExpressionMetadata} metadata */ check_blockers(metadata) { - for (const binding of metadata.dependencies) { + for (const binding of metadata.references) { if (binding.blocker) { this.#blockers.add(binding.blocker); } diff --git a/packages/svelte/tests/runtime-runes/samples/async-derived-prop-closure-hydration/Child.svelte b/packages/svelte/tests/runtime-runes/samples/async-derived-prop-closure-hydration/Child.svelte new file mode 100644 index 0000000000..6e5197b2fe --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/async-derived-prop-closure-hydration/Child.svelte @@ -0,0 +1,5 @@ + + + diff --git a/packages/svelte/tests/runtime-runes/samples/async-derived-prop-closure-hydration/_config.js b/packages/svelte/tests/runtime-runes/samples/async-derived-prop-closure-hydration/_config.js new file mode 100644 index 0000000000..37a3f0dae1 --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/async-derived-prop-closure-hydration/_config.js @@ -0,0 +1,11 @@ +import { tick } from 'svelte'; +import { test } from '../../test'; + +export default test({ + mode: ['hydrate'], + + async test({ assert, target }) { + await tick(); + assert.htmlEqual(target.innerHTML, 'foo '); + } +}); diff --git a/packages/svelte/tests/runtime-runes/samples/async-derived-prop-closure-hydration/main.svelte b/packages/svelte/tests/runtime-runes/samples/async-derived-prop-closure-hydration/main.svelte new file mode 100644 index 0000000000..c87d3f8a08 --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/async-derived-prop-closure-hydration/main.svelte @@ -0,0 +1,12 @@ + + +{foo} +