diff --git a/.changeset/khaki-schools-reflect.md b/.changeset/khaki-schools-reflect.md
new file mode 100644
index 000000000..4de81a006
--- /dev/null
+++ b/.changeset/khaki-schools-reflect.md
@@ -0,0 +1,5 @@
+---
+'@astrojs/compiler': patch
+---
+
+Fix issue with head content being pushed into body
diff --git a/internal/parser.go b/internal/parser.go
index 18275683a..12c610163 100644
--- a/internal/parser.go
+++ b/internal/parser.go
@@ -392,6 +392,7 @@ func (p *parser) addExpression() {
HandledScript: false,
Loc: p.generateLoc(),
})
+
}
func isFragment(data string) bool {
@@ -942,6 +943,7 @@ func inHeadIM(p *parser) bool {
case StartExpressionToken:
p.addExpression()
p.afe = append(p.afe, &scopeMarker)
+ p.templateStack = append(p.templateStack, inExpressionIM)
if p.originalIM == nil {
p.setOriginalIM()
}
diff --git a/internal/printer/printer_test.go b/internal/printer/printer_test.go
index 938e3c4e8..bbcfb40cb 100644
--- a/internal/printer/printer_test.go
+++ b/internal/printer/printer_test.go
@@ -551,6 +551,7 @@ import type data from "test"
}
`,
+
want: want{
code: `${$$renderComponent($$result,'Layout',Layout,{"title":"Welcome to Astro."},{"default": () => $$render` + BACKTICK + `
${$$maybeRenderHead($$result)}
p+h2 ${dummyKey}
- ` + BACKTICK + `
- );
+ ` + BACKTICK + `
+ );
})
}