diff --git a/.changeset/fair-files-cover.md b/.changeset/fair-files-cover.md new file mode 100644 index 000000000000..1009773e5bd2 --- /dev/null +++ b/.changeset/fair-files-cover.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: treat each blocks with async dependencies as uncontrolled diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/shared/fragment.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/shared/fragment.js index 3588f2843a24..c7f843af4822 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/shared/fragment.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/shared/fragment.js @@ -105,7 +105,7 @@ export function process_children(nodes, initial, is_element, context) { is_element && // In case it's wrapped in async the async logic will want to skip sibling nodes up until the end, hence we cannot make this controlled // TODO switch this around and instead optimize for elements with a single block child and not require extra comments (neither for async nor normally) - !(node.body.metadata.has_await || node.metadata.expression.has_await) + !(node.body.metadata.has_await || node.metadata.expression.is_async()) ) { node.metadata.is_controlled = true; } else {