From 11a2d8e9371b2a1b456f05af7cd4adc0bf212e62 Mon Sep 17 00:00:00 2001 From: ComputerGuy <63362464+Ocean-OS@users.noreply.github.com> Date: Fri, 22 Aug 2025 11:33:48 -0700 Subject: [PATCH] fix: only emit `for_await_track_reactivity_loss` in async mode (#16644) Helps with #16610 (but does not fix it yet) --- .changeset/tender-masks-bow.md | 5 +++++ .../phases/3-transform/client/visitors/ForOfStatement.js | 7 ++++++- 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 .changeset/tender-masks-bow.md diff --git a/.changeset/tender-masks-bow.md b/.changeset/tender-masks-bow.md new file mode 100644 index 0000000000..224db5fc37 --- /dev/null +++ b/.changeset/tender-masks-bow.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: only emit `for_await_track_reactivity_loss` in async mode diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/ForOfStatement.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/ForOfStatement.js index a5d2751812..8ae67f49d1 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/ForOfStatement.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/ForOfStatement.js @@ -8,7 +8,12 @@ import { dev, is_ignored } from '../../../../state.js'; * @param {ComponentContext} context */ export function ForOfStatement(node, context) { - if (node.await && dev && !is_ignored(node, 'await_reactivity_loss')) { + if ( + node.await && + dev && + !is_ignored(node, 'await_reactivity_loss') && + context.state.options.experimental.async + ) { const left = /** @type {VariableDeclaration | Pattern} */ (context.visit(node.left)); const argument = /** @type {Expression} */ (context.visit(node.right)); const body = /** @type {Statement} */ (context.visit(node.body));