dillon1000/react

Commit

Expose prerender() for SSG in stable (#31298)

When we added `renderToReadableStream` we added the `allReady` helper to
make it easier to do SSG rendering but it's kind of awkward to wire up
that way. Since we're also discouraging `renderToString` in React 19 the
cliff is kind of awkward. ([As noted by
Docusaurus.](https://github.com/facebook/react/pull/24752#issuecomment-2178309299))

The idea of the `react-dom/static` `prerender` API was that this would
be the replacement for SSG rendering. Awkwardly this entry point
actually already exists in stable but it has only `undefined` exports.

Since then we've also added other useful heuristics into the `prerender`
branch that makes this really the favored and easiest to use API for the
prerender (SSG/ISR) use case.

`prerender` is also used for Partial Prerendering but that part is still
experimental.

However, we can expose only the `prerender` API on `react-dom/static`
without it returning the `postponeState`. Instead the stream is on
`prelude`. The naming is a bit awkward if you don't consider resuming
but it's the same thing.

It's really just `renderToReadable` stream with automatic `allReady` and
better heuristics for prerendering.
Browse files
Changed paths8 files
First-parent comparison
M packages/react-dom/src/__tests__/ReactDOMFizzStatic-test.js ModifiedM packages/react-dom/src/__tests__/ReactDOMFizzStaticBrowser-test.js ModifiedM packages/react-dom/src/server/ReactDOMFizzStaticBrowser.js ModifiedM packages/react-dom/src/server/ReactDOMFizzStaticEdge.js ModifiedM packages/react-dom/src/server/ReactDOMFizzStaticNode.js ModifiedM packages/react-dom/src/server/react-dom-server.browser.stable.js ModifiedM packages/react-dom/src/server/react-dom-server.edge.stable.js ModifiedM packages/react-dom/src/server/react-dom-server.node.stable.js Modified
Patch

Files changed

Rendering syntax-highlighted changes…