From 7dc864d94160164ae9f835b51aed24f3e4c6f539 Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Thu, 5 Mar 2026 21:34:38 -0500 Subject: [PATCH] Revert "fix: skip derived re-evaluation inside inert effect blocks" (#17869) Reverts sveltejs/svelte#17852, because it isn't a real fix https://github.com/sveltejs/svelte/pull/17868 --- .changeset/chatty-papers-sing.md | 5 --- .../internal/client/reactivity/deriveds.js | 17 ++-------- .../if-block-const-inert-derived/_config.js | 18 ----------- .../if-block-const-inert-derived/main.svelte | 32 ------------------- 4 files changed, 2 insertions(+), 70 deletions(-) delete mode 100644 .changeset/chatty-papers-sing.md delete mode 100644 packages/svelte/tests/runtime-runes/samples/if-block-const-inert-derived/_config.js delete mode 100644 packages/svelte/tests/runtime-runes/samples/if-block-const-inert-derived/main.svelte diff --git a/.changeset/chatty-papers-sing.md b/.changeset/chatty-papers-sing.md deleted file mode 100644 index 4d85b91bfc..0000000000 --- a/.changeset/chatty-papers-sing.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'svelte': patch ---- - -fix: skip derived re-evaluation inside inert effect blocks diff --git a/packages/svelte/src/internal/client/reactivity/deriveds.js b/packages/svelte/src/internal/client/reactivity/deriveds.js index 2c9b9da33e..7df7651294 100644 --- a/packages/svelte/src/internal/client/reactivity/deriveds.js +++ b/packages/svelte/src/internal/client/reactivity/deriveds.js @@ -10,8 +10,7 @@ import { ASYNC, WAS_MARKED, DESTROYED, - CLEAN, - INERT + CLEAN } from '#client/constants'; import { active_reaction, @@ -306,22 +305,10 @@ function get_derived_parent_effect(derived) { * @returns {T} */ export function execute_derived(derived) { - var parent_effect = get_derived_parent_effect(derived); - - // don't update `{@const ...}` in an outroing block - if ( - !async_mode_flag && - !is_destroying_effect && - parent_effect !== null && - (parent_effect.f & INERT) !== 0 - ) { - return derived.v; - } - var value; var prev_active_effect = active_effect; - set_active_effect(parent_effect); + set_active_effect(get_derived_parent_effect(derived)); if (DEV) { let prev_eager_effects = eager_effects; diff --git a/packages/svelte/tests/runtime-runes/samples/if-block-const-inert-derived/_config.js b/packages/svelte/tests/runtime-runes/samples/if-block-const-inert-derived/_config.js deleted file mode 100644 index b803182079..0000000000 --- a/packages/svelte/tests/runtime-runes/samples/if-block-const-inert-derived/_config.js +++ /dev/null @@ -1,18 +0,0 @@ -import { flushSync, tick } from 'svelte'; -import { test } from '../../test'; - -export default test({ - html: '

hello

', - - async test({ assert, target, raf, logs }) { - const [button] = target.querySelectorAll('button'); - - flushSync(() => button.click()); - assert.deepEqual(logs, ['hello']); - - // Let the transition finish and clean up - raf.tick(100); - - assert.htmlEqual(target.innerHTML, ''); - } -}); diff --git a/packages/svelte/tests/runtime-runes/samples/if-block-const-inert-derived/main.svelte b/packages/svelte/tests/runtime-runes/samples/if-block-const-inert-derived/main.svelte deleted file mode 100644 index 58b34d52b9..0000000000 --- a/packages/svelte/tests/runtime-runes/samples/if-block-const-inert-derived/main.svelte +++ /dev/null @@ -1,32 +0,0 @@ - - - - -{#if value} - {@const result = compute(value)} - {#if result.ready} -
-

{result.data}

-
- {/if} -{/if}