diff --git a/packages/svelte/src/internal/client/reactivity/sources.js b/packages/svelte/src/internal/client/reactivity/sources.js index 6340c6f0b4..69967ab3b9 100644 --- a/packages/svelte/src/internal/client/reactivity/sources.js +++ b/packages/svelte/src/internal/client/reactivity/sources.js @@ -289,7 +289,10 @@ export function mark_reactions(signal, status, partial = false) { continue; } - set_signal_status(reaction, status); + if (status === DIRTY || (flags & DIRTY) === 0) { + // don't make a DIRTY signal MAYBE_DIRTY + set_signal_status(reaction, status); + } if ((flags & DERIVED) !== 0) { mark_reactions(/** @type {Derived} */ (reaction), MAYBE_DIRTY, partial); diff --git a/packages/svelte/tests/runtime-runes/samples/async-derived-unchanging/_config.js b/packages/svelte/tests/runtime-runes/samples/async-derived-unchanging/_config.js index 749640823c..4232136964 100644 --- a/packages/svelte/tests/runtime-runes/samples/async-derived-unchanging/_config.js +++ b/packages/svelte/tests/runtime-runes/samples/async-derived-unchanging/_config.js @@ -35,7 +35,7 @@ export default test({ await Promise.resolve(); await Promise.resolve(); - assert.equal(p.innerHTML, `${i}: ${i}`); + assert.equal(p.innerHTML, `${i}: ${Math.min(i, 3)}`); } } });