diff --git a/packages/svelte/src/compiler/migrate/index.js b/packages/svelte/src/compiler/migrate/index.js
index 909b95ff5c..c14b577319 100644
--- a/packages/svelte/src/compiler/migrate/index.js
+++ b/packages/svelte/src/compiler/migrate/index.js
@@ -927,6 +927,9 @@ function handle_identifier(node, state, path) {
} else if (node.name === '$$slots' && state.analysis.uses_slots) {
if (parent?.type === 'MemberExpression') {
state.str.update(/** @type {number} */ (node.start), parent.property.start, '');
+ if (parent.property.name === 'default') {
+ state.str.update(parent.property.start, parent.property.end, 'children');
+ }
}
// else passed as identifier, we don't know what to do here, so let it error
}
diff --git a/packages/svelte/tests/migrate/samples/slots/input.svelte b/packages/svelte/tests/migrate/samples/slots/input.svelte
index cc1fbd1f98..d7bbede906 100644
--- a/packages/svelte/tests/migrate/samples/slots/input.svelte
+++ b/packages/svelte/tests/migrate/samples/slots/input.svelte
@@ -9,4 +9,6 @@
{/if}
+{#if $$slots.default}foo{/if}
+
diff --git a/packages/svelte/tests/migrate/samples/slots/output.svelte b/packages/svelte/tests/migrate/samples/slots/output.svelte
index 9f3059d39d..b04dbdea18 100644
--- a/packages/svelte/tests/migrate/samples/slots/output.svelte
+++ b/packages/svelte/tests/migrate/samples/slots/output.svelte
@@ -19,4 +19,6 @@
{@render bar?.()}
{/if}
+{#if children}foo{/if}
+
{@render dashed_name?.()}
\ No newline at end of file