diff --git a/packages/svelte/src/internal/client/reactivity/effects.js b/packages/svelte/src/internal/client/reactivity/effects.js index a4e0ff21c9..68a1555032 100644 --- a/packages/svelte/src/internal/client/reactivity/effects.js +++ b/packages/svelte/src/internal/client/reactivity/effects.js @@ -407,9 +407,13 @@ export function destroy_effect_children(signal, remove_dom = false) { signal.first = signal.last = null; while (effect !== null) { - without_reactive_context(() => { - /** @type {Effect} */ (effect).ac?.abort(STALE_REACTION); - }); + const controller = effect.ac; + + if (controller !== null) { + without_reactive_context(() => { + controller.abort(STALE_REACTION); + }); + } var next = effect.next; diff --git a/packages/svelte/src/internal/client/runtime.js b/packages/svelte/src/internal/client/runtime.js index fe46461b16..22a1890e0f 100644 --- a/packages/svelte/src/internal/client/runtime.js +++ b/packages/svelte/src/internal/client/runtime.js @@ -282,6 +282,7 @@ export function update_reaction(reaction) { without_reactive_context(() => { /** @type {AbortController} */ (reaction.ac).abort(STALE_REACTION); }); + reaction.ac = null; }