diff --git a/packages/svelte/src/compiler/migrate/index.js b/packages/svelte/src/compiler/migrate/index.js
index f42b859b22..58eeccf428 100644
--- a/packages/svelte/src/compiler/migrate/index.js
+++ b/packages/svelte/src/compiler/migrate/index.js
@@ -755,22 +755,12 @@ const template = {
next();
return;
}
- // by default we overwrite until the end of the node - 1
- let end = node.end - 1;
- // if it has some children we need to overwrite from start to start of the fragment
- if (node.fragment.nodes.length > 0) {
- end = node.fragment.nodes[0].start;
- } else if (!source.endsWith('/>')) {
- // special case `` it has no fragment but
- // we still can't remove to the node end
- end = node.start + source.lastIndexOf('><', node.end) + 1;
- }
- // if at has some attributes we stop at the start of the first
- if (node.attributes.length > 0) {
- end = node.attributes[0].start;
- }
// overwrite the open tag
- state.str.overwrite(node.start + 1, end - 1, `${state.names.svelte_self}`);
+ state.str.overwrite(
+ node.start + 1,
+ node.start + 1 + 'svelte:self'.length,
+ `${state.names.svelte_self}`
+ );
// if it has a fragment we need to overwrite the closing tag too
if (node.fragment.nodes.length > 0) {
const start_closing =
diff --git a/packages/svelte/tests/migrate/samples/svelte-self-name-conflict/output.svelte b/packages/svelte/tests/migrate/samples/svelte-self-name-conflict/output.svelte
index 833fdfbe8e..827d06c3a3 100644
--- a/packages/svelte/tests/migrate/samples/svelte-self-name-conflict/output.svelte
+++ b/packages/svelte/tests/migrate/samples/svelte-self-name-conflict/output.svelte
@@ -6,7 +6,7 @@
{#if false}
-
+
diff --git a/packages/svelte/tests/migrate/samples/svelte-self/output.svelte b/packages/svelte/tests/migrate/samples/svelte-self/output.svelte
index 9d9df592cf..7e7ebae215 100644
--- a/packages/svelte/tests/migrate/samples/svelte-self/output.svelte
+++ b/packages/svelte/tests/migrate/samples/svelte-self/output.svelte
@@ -5,7 +5,7 @@
{#if false}
-
+