diff --git a/.changeset/afraid-donuts-whisper.md b/.changeset/afraid-donuts-whisper.md
new file mode 100644
index 000000000000..df9eea40ad9c
--- /dev/null
+++ b/.changeset/afraid-donuts-whisper.md
@@ -0,0 +1,5 @@
+---
+'svelte': patch
+---
+
+fix: migration script messing with attributes
diff --git a/packages/svelte/src/compiler/migrate/index.js b/packages/svelte/src/compiler/migrate/index.js
index 8c2429b1c9dc..080babdfb7c7 100644
--- a/packages/svelte/src/compiler/migrate/index.js
+++ b/packages/svelte/src/compiler/migrate/index.js
@@ -1309,7 +1309,7 @@ const template = {
parent.type === 'RegularElement' ||
parent.type === 'SvelteElement' ||
parent.type === 'SvelteFragment') &&
- parent.attributes.some((attr) => (attr.type = 'LetDirective'))
+ parent.attributes.some((attr) => attr.type === 'LetDirective')
)
) {
aliased_slot_name = `${name}_render`;
diff --git a/packages/svelte/tests/migrate/samples/slot-dont-mess-with-attributes/input.svelte b/packages/svelte/tests/migrate/samples/slot-dont-mess-with-attributes/input.svelte
new file mode 100644
index 000000000000..53f38e0332df
--- /dev/null
+++ b/packages/svelte/tests/migrate/samples/slot-dont-mess-with-attributes/input.svelte
@@ -0,0 +1,5 @@
+
+
+
diff --git a/packages/svelte/tests/migrate/samples/slot-dont-mess-with-attributes/output.svelte b/packages/svelte/tests/migrate/samples/slot-dont-mess-with-attributes/output.svelte
new file mode 100644
index 000000000000..39a6ff795760
--- /dev/null
+++ b/packages/svelte/tests/migrate/samples/slot-dont-mess-with-attributes/output.svelte
@@ -0,0 +1,15 @@
+
+
+
+ {@render children?.()}
+
\ No newline at end of file