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}
+