KEMBAR78
[DevTools] Only show the highest end/byteSize I/O of RSC streams by sebmarkbage · Pull Request #34435 · facebook/react · GitHub
Skip to content

Conversation

@sebmarkbage
Copy link
Collaborator

@sebmarkbage sebmarkbage commented Sep 9, 2025

Stacked on #34425.

RSC stream info is split into one I/O entry per chunk. This means that when a single instance or boundary depends on multiple chunks, it'll show the same stream multiple times. This makes it so just the last one is shown.

This is a special case for the name "RSC stream" but ideally we'd more explicitly model the concept of awaiting only part of a stream.

Screenshot 2025-09-09 at 2 09 43 PM

Another remaining issue is that it's possible for an intermediate chunk to be depended on by just a child boundary. In that case that can be considered a "unique suspender" even though the parent depends on a later one. Ideally it would dedupe on everything below. Could also model it as every Promise depends on its chunk and every previous chunk.

@sebmarkbage sebmarkbage requested a review from eps1lon September 9, 2025 18:11
@meta-cla meta-cla bot added the CLA Signed label Sep 9, 2025
@github-actions github-actions bot added the React Core Team Opened by a member of the React Core Team label Sep 9, 2025
We already do this for SuspenseNode.
This is a hack since it special cases the RSC stream. Ideally this concept
would be modelled explicitly.
@sebmarkbage sebmarkbage merged commit 288d428 into facebook:main Sep 10, 2025
241 checks passed
sebmarkbage added a commit that referenced this pull request Sep 10, 2025
…oundary (#34438)

Stacked on #34435.

This adds a method to get all suspended by filtered by a specific
Instance. The purpose of this is to power the feature when you filter by
Activity. This would show you the "root" within that Activity boundary.

This works by selecting the nearest Suspense boundary parent and then
filtering its data based on if all the instances for a given I/O info is
within the Activity instance. If something suspended within the Suspense
boundary but outside the Activity it's not included even if it's also
suspending inside the Activity since we assume it would've already been
loaded then.

Right now I wire this up to be a special case when you select an
Activity boundary same as when you select a Suspense boundary in the
Components tab but we could also only use this when you select the root
in the Suspense tab for example.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA Signed React Core Team Opened by a member of the React Core Team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants