diff --git a/.changeset/eighty-days-wave.md b/.changeset/eighty-days-wave.md
new file mode 100644
index 0000000000..86da3748e8
--- /dev/null
+++ b/.changeset/eighty-days-wave.md
@@ -0,0 +1,5 @@
+---
+'svelte': patch
+---
+
+fix: correctly ensure prop bindings are reactive when bound
diff --git a/packages/svelte/src/compiler/phases/3-transform/client/utils.js b/packages/svelte/src/compiler/phases/3-transform/client/utils.js
index 35283aed72..7d662629da 100644
--- a/packages/svelte/src/compiler/phases/3-transform/client/utils.js
+++ b/packages/svelte/src/compiler/phases/3-transform/client/utils.js
@@ -186,7 +186,7 @@ export function get_prop_source(binding, state, name, initial) {
state.analysis.accessors ||
(state.analysis.immutable
? binding.reassigned || (state.analysis.runes && binding.mutated)
- : binding.mutated)
+ : binding.updated)
) {
flags |= PROPS_IS_UPDATED;
}
diff --git a/packages/svelte/tests/runtime-legacy/samples/binding-value-prop/Field.svelte b/packages/svelte/tests/runtime-legacy/samples/binding-value-prop/Field.svelte
new file mode 100644
index 0000000000..b3bfeab84f
--- /dev/null
+++ b/packages/svelte/tests/runtime-legacy/samples/binding-value-prop/Field.svelte
@@ -0,0 +1,5 @@
+
+
+
diff --git a/packages/svelte/tests/runtime-legacy/samples/binding-value-prop/_config.js b/packages/svelte/tests/runtime-legacy/samples/binding-value-prop/_config.js
new file mode 100644
index 0000000000..11ff60ca1e
--- /dev/null
+++ b/packages/svelte/tests/runtime-legacy/samples/binding-value-prop/_config.js
@@ -0,0 +1,22 @@
+import { flushSync } from 'svelte';
+import { ok, test } from '../../test';
+
+export default test({
+ accessors: false,
+ html: `\naaa`,
+ ssrHtml: `\naaa`,
+
+ test({ assert, target }) {
+ const input = target.querySelector('input');
+ ok(input);
+
+ const event = new window.Event('input');
+
+ input.value = 'aaa2';
+ input.dispatchEvent(event);
+
+ flushSync();
+
+ assert.htmlEqual(target.innerHTML, `\naaa2`);
+ }
+});
diff --git a/packages/svelte/tests/runtime-legacy/samples/binding-value-prop/main.svelte b/packages/svelte/tests/runtime-legacy/samples/binding-value-prop/main.svelte
new file mode 100644
index 0000000000..4352cb65cd
--- /dev/null
+++ b/packages/svelte/tests/runtime-legacy/samples/binding-value-prop/main.svelte
@@ -0,0 +1,9 @@
+
+
+ {$value}