Skip to content
18 changes: 18 additions & 0 deletions packages/react-dom-bindings/src/server/ReactFizzConfigDOM.js
Original file line number Diff line number Diff line change
Expand Up @@ -4573,6 +4573,24 @@ export function pushEndActivityBoundary(
target.push(endActivityBoundary);
}

// SuspenseList with hidden tails are encoded as comments.
const startSuspenseListBoundary = stringToPrecomputedChunk('<!--~-->');
const endSuspenseListBoundary = stringToPrecomputedChunk('<!--/~-->');

export function pushStartSuspenseListBoundary(
target: Array<Chunk | PrecomputedChunk>,
renderState: RenderState,
): void {
target.push(startSuspenseListBoundary);
}

export function pushEndSuspenseListBoundary(
target: Array<Chunk | PrecomputedChunk>,
renderState: RenderState,
): void {
target.push(endSuspenseListBoundary);
}

// Suspense boundaries are encoded as comments.
const startCompletedSuspenseBoundary = stringToPrecomputedChunk('<!--$-->');
const startPendingSuspenseBoundary1 = stringToPrecomputedChunk(
Expand Down
24 changes: 24 additions & 0 deletions packages/react-dom-bindings/src/server/ReactFizzConfigDOMLegacy.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ import {
pushSegmentFinale as pushSegmentFinaleImpl,
pushStartActivityBoundary as pushStartActivityBoundaryImpl,
pushEndActivityBoundary as pushEndActivityBoundaryImpl,
pushStartSuspenseListBoundary as pushStartSuspenseListBoundaryImpl,
pushEndSuspenseListBoundary as pushEndSuspenseListBoundaryImpl,
writeStartCompletedSuspenseBoundary as writeStartCompletedSuspenseBoundaryImpl,
writeStartClientRenderedSuspenseBoundary as writeStartClientRenderedSuspenseBoundaryImpl,
writeEndCompletedSuspenseBoundary as writeEndCompletedSuspenseBoundaryImpl,
Expand Down Expand Up @@ -259,6 +261,28 @@ export function pushEndActivityBoundary(
pushEndActivityBoundaryImpl(target, renderState);
}

export function pushStartSuspenseListBoundary(
target: Array<Chunk | PrecomputedChunk>,
renderState: RenderState,
): void {
if (renderState.generateStaticMarkup) {
// A completed boundary is done and doesn't need a representation in the HTML
// if we're not going to be hydrating it.
return;
}
pushStartSuspenseListBoundaryImpl(target, renderState);
}

export function pushEndSuspenseListBoundary(
target: Array<Chunk | PrecomputedChunk>,
renderState: RenderState,
): void {
if (renderState.generateStaticMarkup) {
return;
}
pushEndSuspenseListBoundaryImpl(target, renderState);
}

export function writeStartCompletedSuspenseBoundary(
destination: Destination,
renderState: RenderState,
Expand Down
Loading
Loading