Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: facebook/react
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 6f0dc2947bed21f9be484f37eb32d02fdc4c0481
Choose a base ref
...
head repository: facebook/react
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: c11c9510fa14bbd87053685c19bfdfec2f427f49
Choose a head ref
  • 5 commits
  • 7 files changed
  • 2 contributors

Commits on Nov 19, 2024

  1. Track suspended time when the render doesn't commit because it suspen…

    …ded (#31552)
    
    When we suspend the render with delay, we won't do any more work until
    we get some kind of another update/ping. It's because conceptually
    something is suspended and then will update later. We need to highlight
    this period to show why it's not doing any work. We fill the empty space
    with "Suspended". This stops whenever the same lane group starts
    rendering again. Clamped by the preceeding start time/event time/update
    time.
    
    <img width="902" alt="Screenshot 2024-11-15 at 1 01 29 PM"
    src="https://github.com/user-attachments/assets/acf9dc9a-8fc3-4367-a8b0-d19f9c9eac73">
    
    Ideally we would instead start the next render and suspend the work loop
    at all places we suspend. In that mode this will instead show up as a
    very long "Render" with a "Suspended" period instead highlighted in the
    Components track as one component is suspended. We'll soon have that for
    `use()` but not all updates so this covers the rest.
    
    One issue with `useActionState` is that it is implemented as suspending
    at the point of the `useActionState` which means that the period of the
    Action shows up as a suspended render instead of as an Action which
    happens for raw actions. This is not really how you conceptually think
    about it so we need some special case for `useActionState`. In the
    screenshot above, the first "Suspended" is actually awaiting an Action
    and the second "Suspended" is awaiting the data from it.
    sebmarkbage authored Nov 19, 2024
    Configuration menu
    Copy the full SHA
    6177b18 View commit details
    Browse the repository at this point in the history
  2. Log yielded time in the Component Track (#31563)

    Stacked on #31552. Must be tested with `enableSiblingPrerendering` off
    since the `use()` optimization is not on there yet.
    
    This adds a span to the Components track when we yield in the middle of
    the event loop. In this scenario, the "Render" span continues through
    out the Scheduler track. So you can see that the Component itself might
    not take a long time but yielding inside of it might.
    
    This lets you see if something was blocking the React render loop while
    yielding. If we're blocked 1ms or longer we log that as "Blocked".
    
    If we're yielding due to suspending in the middle of the work loop we
    log this as "Suspended".
    
    <img width="837" alt="Screenshot 2024-11-16 at 1 15 14 PM"
    src="https://github.com/user-attachments/assets/45a858ea-17e6-416c-af1a-78c126e033f3">
    
    If the render doesn't commit because it restarts due to some other
    prewarming or because some non-`use()` suspends, it doesn't have from
    context components.
    
    <img width="971" alt="Screenshot 2024-11-16 at 1 13 55 PM"
    src="https://github.com/user-attachments/assets/a67724f8-702e-4e7d-9499-9ffc09541a61">
    
    The `useActionState` path doesn't work yet because the `use()`
    optimization doesn't work there for some reason. But the idea is that it
    should mark the time that the component is blocked as Action instead of
    Suspended.
    sebmarkbage authored Nov 19, 2024
    Configuration menu
    Copy the full SHA
    7c254b6 View commit details
    Browse the repository at this point in the history
  3. [crud] Fix copy paste typo (#31588)

    Happens to the best of us.
    poteto authored Nov 19, 2024
    Configuration menu
    Copy the full SHA
    7558ffe View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    64f8951 View commit details
    Browse the repository at this point in the history

Commits on Nov 20, 2024

  1. [crud] Fix deps comparison bug (#31599)

    Fixes a bug with the experimental `useResourceEffect` hook where we
    would compare the wrong deps when there happened to be another kind of
    effect preceding the ResourceEffect. To do this correctly we need to add
    a pointer to the ResourceEffect's identity on the update.
    
    I also unified the previously separate push effect impls for resource
    effects since they are always pushed together as a unit.
    poteto authored Nov 20, 2024
    Configuration menu
    Copy the full SHA
    c11c951 View commit details
    Browse the repository at this point in the history
Loading