[Failing tests] startTransition invalidates downstream memoizations #17284
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Like
dispatch
orsetState
, we should return the samestartTransition
function on every render. This prevents it from invalidating downstream memoizations, likeuseCallback
.We do use
useCallback
internally so that a newstartTransition
is only created when the config object changes. However, if you pass an object, this does nothing because the object different every time.Potential fixes:
timeoutMs
et al) directly. This fixes the worst case (inline config object) but still means we'll occasionally re-createstartTransition
functions.useTransition
hook, pass it to thestartTransition
function. This avoids needing to bind the config object to the method. Slightly less ergonomic, however, we're planning to change the default config object so that it's not needed in most cases. So it's only in special cases that you'd actually use one. This is the most likely option.