diff --git a/.changeset/rude-terms-confess.md b/.changeset/rude-terms-confess.md
new file mode 100644
index 0000000000..a24774952e
--- /dev/null
+++ b/.changeset/rude-terms-confess.md
@@ -0,0 +1,5 @@
+---
+'svelte': patch
+---
+
+fix: wrap async `children` in `$$renderer.async`
diff --git a/packages/svelte/src/compiler/phases/3-transform/server/visitors/shared/component.js b/packages/svelte/src/compiler/phases/3-transform/server/visitors/shared/component.js
index d0de750c0e..e463ea785a 100644
--- a/packages/svelte/src/compiler/phases/3-transform/server/visitors/shared/component.js
+++ b/packages/svelte/src/compiler/phases/3-transform/server/visitors/shared/component.js
@@ -242,7 +242,12 @@ export function build_inline_component(node, expression, context) {
params.push(pattern);
}
- const slot_fn = b.arrow(params, b.block(block.body));
+ const slot_fn = b.arrow(
+ params,
+ node.fragment.metadata.has_await
+ ? b.block([create_async_block(b.block(block.body))])
+ : b.block(block.body)
+ );
if (slot_name === 'default' && !has_children_prop) {
if (
diff --git a/packages/svelte/tests/server-side-rendering/samples/async-children/_expected.html b/packages/svelte/tests/server-side-rendering/samples/async-children/_expected.html
new file mode 100644
index 0000000000..04d9709792
--- /dev/null
+++ b/packages/svelte/tests/server-side-rendering/samples/async-children/_expected.html
@@ -0,0 +1 @@
+1
\ No newline at end of file
diff --git a/packages/svelte/tests/server-side-rendering/samples/async-children/component.svelte b/packages/svelte/tests/server-side-rendering/samples/async-children/component.svelte
new file mode 100644
index 0000000000..73b5a2f823
--- /dev/null
+++ b/packages/svelte/tests/server-side-rendering/samples/async-children/component.svelte
@@ -0,0 +1,4 @@
+
+{@render children()}
\ No newline at end of file
diff --git a/packages/svelte/tests/server-side-rendering/samples/async-children/main.svelte b/packages/svelte/tests/server-side-rendering/samples/async-children/main.svelte
new file mode 100644
index 0000000000..ae0fc571b3
--- /dev/null
+++ b/packages/svelte/tests/server-side-rendering/samples/async-children/main.svelte
@@ -0,0 +1,7 @@
+
+
+ {@const one = await 1}
+ {one}
+
\ No newline at end of file