From 09510c8c5c0888578446781e54f2229428e21bfc Mon Sep 17 00:00:00 2001 From: Dominic Gannaway Date: Tue, 21 Jan 2025 20:01:14 +0000 Subject: [PATCH] fix: address regression with untrack (#15079) * fix: address regression with untrack * add test --- .changeset/ninety-chefs-know.md | 5 ++ .../src/internal/client/reactivity/sources.js | 2 +- .../untracked-derived-local/_config.js | 5 ++ .../untracked-derived-local/main.svelte | 47 +++++++++++++++++++ 4 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 .changeset/ninety-chefs-know.md create mode 100644 packages/svelte/tests/runtime-runes/samples/untracked-derived-local/_config.js create mode 100644 packages/svelte/tests/runtime-runes/samples/untracked-derived-local/main.svelte diff --git a/.changeset/ninety-chefs-know.md b/.changeset/ninety-chefs-know.md new file mode 100644 index 0000000000..b5eac6a07a --- /dev/null +++ b/.changeset/ninety-chefs-know.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: address regression with untrack diff --git a/packages/svelte/src/internal/client/reactivity/sources.js b/packages/svelte/src/internal/client/reactivity/sources.js index d10008dae2..c2448c9ee5 100644 --- a/packages/svelte/src/internal/client/reactivity/sources.js +++ b/packages/svelte/src/internal/client/reactivity/sources.js @@ -116,7 +116,7 @@ export function mutable_state(v, immutable = false) { */ /*#__NO_SIDE_EFFECTS__*/ function push_derived_source(source) { - if (active_reaction !== null && (active_reaction.f & DERIVED) !== 0) { + if (active_reaction !== null && !untracking && (active_reaction.f & DERIVED) !== 0) { if (derived_sources === null) { set_derived_sources([source]); } else { diff --git a/packages/svelte/tests/runtime-runes/samples/untracked-derived-local/_config.js b/packages/svelte/tests/runtime-runes/samples/untracked-derived-local/_config.js new file mode 100644 index 0000000000..1fe92ed2d7 --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/untracked-derived-local/_config.js @@ -0,0 +1,5 @@ +import { test } from '../../test'; + +export default test({ + html: `3` +}); diff --git a/packages/svelte/tests/runtime-runes/samples/untracked-derived-local/main.svelte b/packages/svelte/tests/runtime-runes/samples/untracked-derived-local/main.svelte new file mode 100644 index 0000000000..0873eb741d --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/untracked-derived-local/main.svelte @@ -0,0 +1,47 @@ + + + + +{test}