From 83e1823e548912b85d7bef8500f19f01577af26e Mon Sep 17 00:00:00 2001 From: Dominic Gannaway Date: Tue, 21 Jan 2025 19:35:36 +0000 Subject: [PATCH 1/2] fix: address regression with untrack --- .changeset/ninety-chefs-know.md | 5 +++++ packages/svelte/src/internal/client/reactivity/sources.js | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 .changeset/ninety-chefs-know.md diff --git a/.changeset/ninety-chefs-know.md b/.changeset/ninety-chefs-know.md new file mode 100644 index 000000000000..b5eac6a07ada --- /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 d10008dae28b..c2448c9ee5fe 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 { From c79c902e0d83c8d04f6a945b3fea329f5c2ff4aa Mon Sep 17 00:00:00 2001 From: Dominic Gannaway Date: Tue, 21 Jan 2025 19:42:09 +0000 Subject: [PATCH 2/2] add test --- .../untracked-derived-local/_config.js | 5 ++ .../untracked-derived-local/main.svelte | 47 +++++++++++++++++++ 2 files changed, 52 insertions(+) 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/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 000000000000..1fe92ed2d7c2 --- /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 000000000000..0873eb741dd1 --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/untracked-derived-local/main.svelte @@ -0,0 +1,47 @@ + + + + +{test}