fix(core): prevent SSR crash when head/body projected through a headless Slot#8668
Merged
Conversation
🦋 Changeset detectedLatest commit: 6cd4a33 The changes in this PR will be included in the next version bump. This PR includes changesets to release 5 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
@qwik.dev/core
@qwik.dev/router
eslint-plugin-qwik
create-qwik
@qwik.dev/optimizer
commit: |
e41a012 to
f7b9492
Compare
…ess Slot A headless component (renders only <Slot/>) that projects the document root gets a useOn placeholder <script> injected to anchor a document/window handler. When it wraps <head>/<body>, that placeholder landed as a direct child of <html> — invalid HTML that throws Code(Q12): SsrError(tag). It now defers into <head> via additionalHeadNodes. Mostly hit in dev, since HMR injects such a handler into every component.
f7b9492 to
5fd7174
Compare
Contributor
built with Refined Cloudflare Pages Action⚡ Cloudflare Pages Deployment
|
Varixo
requested changes
May 27, 2026
1f2eeca to
11efadb
Compare
11efadb to
3c0c064
Compare
Varixo
requested changes
May 27, 2026
Move $deferRootPlaceholder$ from the Container interface to the SSRContainer interface and cast at the call site (avoids an optional field on Container).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What is it?
Description
SSR crashed with
Code(Q12): SsrError(tag)when<head>/<body>were projected through a headless component (e.g. a Provider that renders only<Slot/>, like a root context provider).Such a component gets a
useOnplaceholder<script>injected to anchor a document/window handler. When it wraps<head>/<body>, that placeholder ended up as a direct child of<html>— invalid HTML, which threw. It now defers into<head>, mirroring how$appendStyle$already routes root-level styles intoadditionalHeadNodesinstead of emitting them inline at the<html>frame.Mostly hit in dev, since HMR injects such a handler into every component — so any
<Slot/>-wrapped head/body broke even with nouseOnin app code.