Skip to content

PoC - Support react portals with fabric#55463

Draft
intergalacticspacehighway wants to merge 1 commit intofacebook:mainfrom
intergalacticspacehighway:portal-fix
Draft

PoC - Support react portals with fabric#55463
intergalacticspacehighway wants to merge 1 commit intofacebook:mainfrom
intergalacticspacehighway:portal-fix

Conversation

@intergalacticspacehighway
Copy link
Contributor

@intergalacticspacehighway intergalacticspacehighway commented Feb 7, 2026

Summary:

This solution is built upon previous findings and some help from Claude. In previous findings i had noted that portal commits were getting overridden by the final root commit (and it only supported attaching portal to root node) but I thought the issue might be in the JS renderer.
In this solution, we store the portal children on cpp via mountPortalChildren call in replaceContainerChildren and they finally get committed in the completeSurface call. Maybe a solution at the JS renderer might be possible here but not sure since the shadow tree gets constructed on the commit phase (so it makes sense to attach portal children in that phase). This also needs more understanding on how the portals were considered for persistence mode (used by RN Fabric) vs mutation mode (used by react dom).

Changelog:

[GENERAL [ADDED] - React Portal support

Test Plan:

Run the example in RNTesterAppShared.js

Simulator.Screen.Recording.-.iPhone.17.Pro.-.2026-02-07.at.22.14.20.mov

@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 Feb 7, 2026
@github-actions
Copy link

github-actions bot commented Feb 7, 2026

Caution

Invalid Changelog Format

Please verify your Changelog format. See Changelog format

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.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant