Skip to content

Update runtime shadow node references only on layout (#44743)#44773

Closed
lenaic wants to merge 5 commits into
facebook:mainfrom
lenaic:export-D58000071
Closed

Update runtime shadow node references only on layout (#44743)#44773
lenaic wants to merge 5 commits into
facebook:mainfrom
lenaic:export-D58000071

Conversation

@lenaic
Copy link
Copy Markdown

@lenaic lenaic commented Jun 3, 2024

Summary:

Changelog: [Internal]

Update runtime shadow node references for cloning happening within YogaLayoutableShadowNode during layout. This will update the JS references to shadow nodes with the latest layout metrics used to render the component and improve layout cache usage on the next commit.

Reviewed By: sammy-SC

Differential Revision: D58000071

Nick Lefever added 4 commits June 1, 2024 18:49
Summary:
Adding a feature flag to conditionally enable shadow node reference updates when cloning nodes within react native.

The feature flag will be used to run an experiment with this feature.

Differential Revision: D57860868
Summary:
React native clones shadow nodes internally without providing the new instances to the React renderer (current fiber tree). To support updating the shadow node references held by the JS side, this diff wraps the returned shadow nodes and adds a link to the runtime reference on the shadow node instance.

This will allow for updating the shadow node references held within the JS runtime from the native side.

Differential Revision: https://www.internalfb.com/diff/D57860869?entry_point=27
Summary:
Any shadow node cloning happening outside the execution of the UIManagerBinding cloneNode call should guarantee that the references held to the shadow node are updated to the latest revision.

This guarantees that the React renderer's current fiber tree holds references to the ShadowNode instances that acually were layed out and committed for rendering on the native side. Maintaining these references up to date on the JS current fiber tree allows to maximize layout caches on subsequent commits.

Differential Revision: https://www.internalfb.com/diff/D57860867?entry_point=27
@facebook-github-bot facebook-github-bot added CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. p: Facebook Partner: Facebook Partner labels Jun 3, 2024
@facebook-github-bot
Copy link
Copy Markdown
Contributor

This pull request was exported from Phabricator. Differential Revision: D58000071

Summary:
Pull Request resolved: facebook#44773

Changelog: [Internal]

Update runtime shadow node references for cloning happening within `YogaLayoutableShadowNode` during layout. This will update the JS references to shadow nodes with the latest layout metrics used to render the component and improve layout cache usage on the next commit.

Reviewed By: sammy-SC

Differential Revision: D58000071
@facebook-github-bot
Copy link
Copy Markdown
Contributor

This pull request was exported from Phabricator. Differential Revision: D58000071

@lenaic lenaic force-pushed the export-D58000071 branch from 1fa23ae to 40d5c00 Compare June 3, 2024 22:29
@analysis-bot
Copy link
Copy Markdown

Platform Engine Arch Size (bytes) Diff
android hermes arm64-v8a 19,609,472 +32,869
android hermes armeabi-v7a n/a --
android hermes x86 n/a --
android hermes x86_64 n/a --
android jsc arm64-v8a 22,978,968 +32,817
android jsc armeabi-v7a n/a --
android jsc x86 n/a --
android jsc x86_64 n/a --

Base commit: a6a7cdf
Branch: main

@facebook-github-bot facebook-github-bot added the Merged This PR has been merged. label Jun 4, 2024
@facebook-github-bot
Copy link
Copy Markdown
Contributor

This pull request has been merged in bb9917a.

kosmydel pushed a commit to kosmydel/react-native that referenced this pull request Jun 11, 2024
Summary:
Pull Request resolved: facebook#44773

Changelog: [Internal]

Update runtime shadow node references for cloning happening within `YogaLayoutableShadowNode` during layout. This will update the JS references to shadow nodes with the latest layout metrics used to render the component and improve layout cache usage on the next commit.

Reviewed By: sammy-SC

Differential Revision: D58000071

fbshipit-source-id: 373d41f37a81e81ab8f23006491027473493de61
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 Merged This PR has been merged. p: Facebook Partner: Facebook Partner

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants