mirror of
https://github.com/zebrajr/react.git
synced 2026-01-15 12:15:22 +00:00
[Fizz] Track postponed holes in the prerender pass (#27317)
This is basically the implementation for the prerender pass. Instead of forking basically the whole implementation for prerender, I just add a conditional field on the request. If it's `null` it behaves like before. If it's non-`null` then instead of triggering client rendered boundaries it triggers those into a "postponed" state which is basically just a variant of "pending". It's supposed to be filled in later. It also builds up a serializable tree of which path can be followed to find the holes. This is basically a reverse `KeyPath` tree. It is unfortunate that this approach adds more code to the regular Fizz builds but in practice. It seems like this side is not going to add much code and we might instead just want to merge the builds so that it's smaller when you have `prerender` and `resume` in the same bundle - which I think will be common in practice. This just implements the prerender side, and not the resume side, which is why the tests have a TODO. That's in a follow up PR.
This commit is contained in:
committed by
GitHub
parent
3808b01b3a
commit
b70a0d7022
@@ -470,5 +470,6 @@
|
||||
"482": "async/await is not yet supported in Client Components, only Server Components. This error is often caused by accidentally adding `'use client'` to a module that was originally written for the server.",
|
||||
"483": "Hooks are not supported inside an async component. This error is often caused by accidentally adding `'use client'` to a module that was originally written for the server.",
|
||||
"484": "A Server Component was postponed. The reason is omitted in production builds to avoid leaking sensitive details.",
|
||||
"485": "Cannot update form state while rendering."
|
||||
"485": "Cannot update form state while rendering.",
|
||||
"486": "It should not be possible to postpone at the root. This is a bug in React."
|
||||
}
|
||||
Reference in New Issue
Block a user