diff --git a/.changeset/kind-elephants-behave.md b/.changeset/kind-elephants-behave.md new file mode 100644 index 0000000000..f52dc1fd36 --- /dev/null +++ b/.changeset/kind-elephants-behave.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: ensure clearing of old values happens independent of root flushes diff --git a/packages/svelte/src/internal/client/runtime.js b/packages/svelte/src/internal/client/runtime.js index a5d26412a4..a69181da98 100644 --- a/packages/svelte/src/internal/client/runtime.js +++ b/packages/svelte/src/internal/client/runtime.js @@ -692,6 +692,7 @@ function flush_queued_root_effects() { var collected_effects = process_effects(root_effects[i]); flush_queued_effects(collected_effects); } + old_values.clear(); } } finally { is_flushing = false; @@ -701,7 +702,6 @@ function flush_queued_root_effects() { if (DEV) { dev_effect_stack = []; } - old_values.clear(); } } diff --git a/packages/svelte/tests/runtime-runes/samples/onmount-prop-access/Component.svelte b/packages/svelte/tests/runtime-runes/samples/onmount-prop-access/Component.svelte new file mode 100644 index 0000000000..b5da702fa7 --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/onmount-prop-access/Component.svelte @@ -0,0 +1,12 @@ + diff --git a/packages/svelte/tests/runtime-runes/samples/onmount-prop-access/_config.js b/packages/svelte/tests/runtime-runes/samples/onmount-prop-access/_config.js new file mode 100644 index 0000000000..0d24e265d3 --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/onmount-prop-access/_config.js @@ -0,0 +1,7 @@ +import { test } from '../../test'; + +export default test({ + async test({ assert, logs }) { + assert.deepEqual(logs, [1]); + } +}); diff --git a/packages/svelte/tests/runtime-runes/samples/onmount-prop-access/main.svelte b/packages/svelte/tests/runtime-runes/samples/onmount-prop-access/main.svelte new file mode 100644 index 0000000000..92746760a4 --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/onmount-prop-access/main.svelte @@ -0,0 +1,14 @@ + + +{#key key} + +{/key}