Skip to content

Revisit timing to capture old/new nodes#56877

Open
zeyap wants to merge 1 commit into
facebook:mainfrom
zeyap:export-D105214322
Open

Revisit timing to capture old/new nodes#56877
zeyap wants to merge 1 commit into
facebook:mainfrom
zeyap:export-D105214322

Conversation

@zeyap
Copy link
Copy Markdown
Contributor

@zeyap zeyap commented May 18, 2026

Summary:

Changelog:

[Internal] [Changed] - Revisit timing to capture old/new nodes

Previously, when applyViewTransitionName is called from react reconciler, if there is active viewtransition, we decide it's applying to new node. This was incorrect because applyViewTransitionName(old) for next transition can be called when the previous transition is still ongoing. In fact applyViewTransitionName(old) is guaranteed to be called before mutationCallback in a transition while applyViewTransitionName(new) is inside mutationCallback. So that is a better criteria to separate old and new cases. Given mutationCallback is synchronous on JS thread we can just use a boolean flag to tell the timing.

Given this interleaved situation, when we clean up resources (for new/old nodes) of a transition at its end, we should also avoid removing those for a pending transition. Introducing transitionId for this case.

Differential Revision: D105214322

Summary:
## Changelog:

[Internal] [Changed] - Revisit timing to capture old/new nodes

Previously, when `applyViewTransitionName` is called from react reconciler, if there is active viewtransition, we decide it's applying to new node. This was incorrect because `applyViewTransitionName(old)` for next transition can be called when the previous transition is still ongoing. In fact `applyViewTransitionName(old)` is guaranteed to be called before mutationCallback in a transition while `applyViewTransitionName(new)` is inside mutationCallback. So that is a better criteria to separate old and new cases. Given mutationCallback is synchronous on JS thread we can just use a boolean flag to tell the timing.

Given this interleaved situation, when we clean up resources (for new/old nodes) of a transition at its end, we should also avoid removing those for a pending transition. Introducing transitionId for this case.

Differential Revision: D105214322
@meta-cla meta-cla Bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label May 18, 2026
@meta-codesync
Copy link
Copy Markdown

meta-codesync Bot commented May 18, 2026

@zeyap has exported this pull request. If you are a Meta employee, you can view the originating Diff in D105214322.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. fb-exported meta-exported p: Facebook Partner: Facebook Partner

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant