summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.changeset/flat-coats-crash.md5
-rw-r--r--packages/astro/src/runtime/server/index.ts4
2 files changed, 7 insertions, 2 deletions
diff --git a/.changeset/flat-coats-crash.md b/.changeset/flat-coats-crash.md
new file mode 100644
index 000000000..c493e3559
--- /dev/null
+++ b/.changeset/flat-coats-crash.md
@@ -0,0 +1,5 @@
+---
+'astro': patch
+---
+
+Fix edge case where default slots could be rendered too early for Astro components. Slots are now only rendered on demand.
diff --git a/packages/astro/src/runtime/server/index.ts b/packages/astro/src/runtime/server/index.ts
index 61ad2d0e7..0a1543e72 100644
--- a/packages/astro/src/runtime/server/index.ts
+++ b/packages/astro/src/runtime/server/index.ts
@@ -150,9 +150,8 @@ export async function renderComponent(
slots: any = {}
) {
Component = await Component;
- const children = await renderSlot(result, slots?.default);
-
if (Component === Fragment) {
+ const children = await renderSlot(result, slots?.default);
if (children == null) {
return children;
}
@@ -197,6 +196,7 @@ Did you mean to add ${formatList(probableRendererNames.map((r) => '`' + r + '`')
throw new Error(message);
}
+ const children = await renderSlot(result, slots?.default);
// Call the renderers `check` hook to see if any claim this component.
let renderer: SSRLoadedRenderer | undefined;
if (metadata.hydrate !== 'only') {