Skip to content

Don't shift interleaved updates to separate lane#20681

Merged
acdlite merged 1 commit into
facebook:masterfrom
acdlite:dont-shift-interleaved
Feb 9, 2021
Merged

Don't shift interleaved updates to separate lane#20681
acdlite merged 1 commit into
facebook:masterfrom
acdlite:dont-shift-interleaved

Conversation

@acdlite
Copy link
Copy Markdown
Collaborator

@acdlite acdlite commented Jan 28, 2021

Now that interleaved updates are added to a special queue, we no longer need to shift them into their own lane. We can add to a lane that's already in the middle of rendering without risk of tearing.

See #20615 for more background.

I've only changed this in the new fork, and only behind the enableTransitionEntanglements flag.

Most of this commit involves updating tests. The "shift-to-a-new" lane trick was intentionally used in a handful of tests where two or more updates need to be scheduled in different lanes. Most of these tests were written before startTransition existed, and all of them were written before transitions were assigned arbitrary lanes.

So I ported these tests to use startTransition instead, which is the idiomatic way to mark an update as parallel.

I didn't change the old fork at all. Writing these tests in such a way that they also pass in the old fork actually revealed a few flaws in the current implementation regarding interrupting a suspended refresh transition early, which is a good reminder that we should be writing our tests using idiomatic patterns as much as we possibly can.

Loading
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.

4 participants