diff --git a/.changeset/hip-penguins-unite.md b/.changeset/hip-penguins-unite.md
new file mode 100644
index 000000000000..79fd69c24ae2
--- /dev/null
+++ b/.changeset/hip-penguins-unite.md
@@ -0,0 +1,5 @@
+---
+'svelte': patch
+---
+
+fix: visit expression when destructuring state declarations
diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/VariableDeclaration.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/VariableDeclaration.js
index e717077917f5..b8d692698dd7 100644
--- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/VariableDeclaration.js
+++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/VariableDeclaration.js
@@ -148,7 +148,7 @@ export function VariableDeclaration(node, context) {
const { inserts, paths } = extract_paths(declarator.id, tmp);
declarations.push(
- b.declarator(tmp, value),
+ b.declarator(tmp, /** @type {Expression} */ (context.visit(value))),
...inserts.map(({ id, value }) => {
id.name = context.state.scope.generate('$$array');
context.state.transform[id.name] = { read: get_value };
diff --git a/packages/svelte/tests/runtime-runes/samples/destructure-state-from-props/Child.svelte b/packages/svelte/tests/runtime-runes/samples/destructure-state-from-props/Child.svelte
new file mode 100644
index 000000000000..0996a02b6065
--- /dev/null
+++ b/packages/svelte/tests/runtime-runes/samples/destructure-state-from-props/Child.svelte
@@ -0,0 +1,6 @@
+
+
+{foo}
\ No newline at end of file
diff --git a/packages/svelte/tests/runtime-runes/samples/destructure-state-from-props/_config.js b/packages/svelte/tests/runtime-runes/samples/destructure-state-from-props/_config.js
new file mode 100644
index 000000000000..345654535b42
--- /dev/null
+++ b/packages/svelte/tests/runtime-runes/samples/destructure-state-from-props/_config.js
@@ -0,0 +1,5 @@
+import { test } from '../../test';
+
+export default test({
+ html: `bar`
+});
diff --git a/packages/svelte/tests/runtime-runes/samples/destructure-state-from-props/main.svelte b/packages/svelte/tests/runtime-runes/samples/destructure-state-from-props/main.svelte
new file mode 100644
index 000000000000..518f73314474
--- /dev/null
+++ b/packages/svelte/tests/runtime-runes/samples/destructure-state-from-props/main.svelte
@@ -0,0 +1,5 @@
+
+
+
\ No newline at end of file