diff --git a/.changeset/curvy-beds-cover.md b/.changeset/curvy-beds-cover.md
new file mode 100644
index 000000000000..f338cafffa0e
--- /dev/null
+++ b/.changeset/curvy-beds-cover.md
@@ -0,0 +1,5 @@
+---
+'svelte': patch
+---
+
+fix: ensure each block references to imports are handled correctly
diff --git a/packages/svelte/src/compiler/phases/2-analyze/index.js b/packages/svelte/src/compiler/phases/2-analyze/index.js
index 188b06081311..89c2e19c3fa4 100644
--- a/packages/svelte/src/compiler/phases/2-analyze/index.js
+++ b/packages/svelte/src/compiler/phases/2-analyze/index.js
@@ -505,7 +505,11 @@ export function analyze_component(root, source, options) {
if (is_reference(node, parent)) {
const binding = context.state.scope.get(node.name);
- if (binding && binding.kind === 'normal') {
+ if (
+ binding &&
+ binding.kind === 'normal' &&
+ binding.declaration_kind !== 'import'
+ ) {
binding.kind = 'state';
binding.mutated = binding.updated = true;
}
diff --git a/packages/svelte/tests/runtime-legacy/samples/each-block-ref-import/_config.js b/packages/svelte/tests/runtime-legacy/samples/each-block-ref-import/_config.js
new file mode 100644
index 000000000000..052cdd27c4b2
--- /dev/null
+++ b/packages/svelte/tests/runtime-legacy/samples/each-block-ref-import/_config.js
@@ -0,0 +1,6 @@
+import { test } from '../../test';
+
+export default test({
+ html: ``,
+ ssrHtml: ``
+});
diff --git a/packages/svelte/tests/runtime-legacy/samples/each-block-ref-import/main.svelte b/packages/svelte/tests/runtime-legacy/samples/each-block-ref-import/main.svelte
new file mode 100644
index 000000000000..26f629eb06f0
--- /dev/null
+++ b/packages/svelte/tests/runtime-legacy/samples/each-block-ref-import/main.svelte
@@ -0,0 +1,7 @@
+
+
+{#each foo.bar as bar}
+
+{/each}
\ No newline at end of file
diff --git a/packages/svelte/tests/runtime-legacy/samples/each-block-ref-import/utils.js b/packages/svelte/tests/runtime-legacy/samples/each-block-ref-import/utils.js
new file mode 100644
index 000000000000..e4b44346570b
--- /dev/null
+++ b/packages/svelte/tests/runtime-legacy/samples/each-block-ref-import/utils.js
@@ -0,0 +1,9 @@
+export const foo = {
+ get bar() {
+ return [
+ {
+ value: ''
+ }
+ ];
+ }
+};