diff --git a/packages/svelte/src/internal/client/runtime.js b/packages/svelte/src/internal/client/runtime.js index 9958b8553e..e5fb3f1afe 100644 --- a/packages/svelte/src/internal/client/runtime.js +++ b/packages/svelte/src/internal/client/runtime.js @@ -1432,6 +1432,8 @@ export function prop(props, key, flags, initial) { } value = /** @type {V} */ (initial); + + if (setter) setter(value); } var getter = () => { diff --git a/packages/svelte/tests/runtime-legacy/samples/binding-backflow/Child.svelte b/packages/svelte/tests/runtime-legacy/samples/binding-backflow/Child.svelte index 4e0f779b12..e2865f9662 100644 --- a/packages/svelte/tests/runtime-legacy/samples/binding-backflow/Child.svelte +++ b/packages/svelte/tests/runtime-legacy/samples/binding-backflow/Child.svelte @@ -16,5 +16,5 @@ export let updates = []; $: updates = [...updates, value]; - +
child: {value?.foo} | updates: {updates.length}
diff --git a/packages/svelte/tests/runtime-legacy/samples/binding-backflow/_config.js b/packages/svelte/tests/runtime-legacy/samples/binding-backflow/_config.js index 9e1561f40e..7eefd6a75c 100644 --- a/packages/svelte/tests/runtime-legacy/samples/binding-backflow/_config.js +++ b/packages/svelte/tests/runtime-legacy/samples/binding-backflow/_config.js @@ -34,7 +34,7 @@ export default test({ p = parents['reactive_mutate']; assert.deepEqual(p.value, { foo: 'kid' }); - assert.equal(p.updates.length, 2); + assert.equal(p.updates.length, 1); p = parents['init_update']; assert.deepEqual(p.value, { foo: 'kid' }); @@ -42,6 +42,6 @@ export default test({ p = parents['init_mutate']; assert.deepEqual(p.value, { foo: 'kid' }); - assert.equal(p.updates.length, 2); + assert.equal(p.updates.length, 1); } });