diff --git a/.changeset/preserve-async-derived-memo.md b/.changeset/preserve-async-derived-memo.md new file mode 100644 index 0000000000..f65907966e --- /dev/null +++ b/.changeset/preserve-async-derived-memo.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix(runes): preserve derived memoization during async batch reading (#18503) diff --git a/packages/svelte/src/internal/client/runtime.js b/packages/svelte/src/internal/client/runtime.js index 188d16a820..5a2ac09ead 100644 --- a/packages/svelte/src/internal/client/runtime.js +++ b/packages/svelte/src/internal/client/runtime.js @@ -672,7 +672,7 @@ export function get(signal) { var is_new = (derived.f & REACTION_RAN) === 0; - if (is_dirty(derived)) { + if (is_dirty(derived) && (!batch_values?.has(derived) || current_batch?.is_fork)) { if (should_connect) { // set the flag before `update_derived`, so that the derived // is added as a reaction to its dependencies