From e0c90fbc7daec7e105cca1149bb3699424a9405e Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Mon, 25 Aug 2025 12:36:51 -0400 Subject: [PATCH] fix, albeit one i don't fully understand --- packages/svelte/src/internal/client/reactivity/async.js | 6 ++++-- packages/svelte/src/internal/client/reactivity/batch.js | 4 ++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/svelte/src/internal/client/reactivity/async.js b/packages/svelte/src/internal/client/reactivity/async.js index 1ea1bbe561..65d004137f 100644 --- a/packages/svelte/src/internal/client/reactivity/async.js +++ b/packages/svelte/src/internal/client/reactivity/async.js @@ -73,11 +73,13 @@ function capture() { var previous_effect = active_effect; var previous_reaction = active_reaction; var previous_component_context = component_context; + var previous_batch = current_batch; return function restore() { set_active_effect(previous_effect); set_active_reaction(previous_reaction); set_component_context(previous_component_context); + previous_batch?.activate(); if (DEV) { set_from_async_derived(null); @@ -176,8 +178,8 @@ export function unset_context() { * @param {() => Promise} fn */ export async function async_body(fn) { - const unsuspend = suspend(); - const active = /** @type {Effect} */ (active_effect); + var unsuspend = suspend(); + var active = /** @type {Effect} */ (active_effect); try { await fn(); diff --git a/packages/svelte/src/internal/client/reactivity/batch.js b/packages/svelte/src/internal/client/reactivity/batch.js index 60fa03c56c..d115c40df7 100644 --- a/packages/svelte/src/internal/client/reactivity/batch.js +++ b/packages/svelte/src/internal/client/reactivity/batch.js @@ -680,6 +680,10 @@ export function suspend() { batch.decrement(); } + if (batch === current_batch) { + batch.deactivate(); + } + unset_context(); }; }