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.
Description
renderToPipeableStream
instead ofrenderToString
inssr-react
playground #359I was revising React streaming and also the discussion of whether we should add
async: true
to preamble script #352.My conclusion is that it's fine to always add
async: true
since otherwise inline module script<script type="module">console.log("foo")</script>
is always blocked until full html load and React preamble script doesn't need to wait. (For this one, I'll raise a separate PR.)However, regardless of having
async
or not, relying ontransformIndexHtml
for ssr streaming is likely not a good idea because in order to fully utilize streaming feature,bootstrapModules
of streaming API is recommended, but then, to avoid race condition of execution order between react hmrinjectIntoGlobalHook
andbootstrapModules
, it's required to have an additional logic around it. In this PR, I added playground test as a demo to show one way to achieve this (which is using virtual client entry as wrapper). It's rather verbose, so maybe not necessary to have it here (and it's more of SSR framework territory), but I can show it as a reference to close the issue at least 🙂