Skip to content

[experimental] - Support React Portal with Fabric#55463

Open
intergalacticspacehighway wants to merge 13 commits intofacebook:mainfrom
intergalacticspacehighway:portal-fix
Open

[experimental] - Support React Portal with Fabric#55463
intergalacticspacehighway wants to merge 13 commits 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 it was 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). The fabric renderer change needs to be reviewed as i mostly took Claude's help there 😅. It will need to be upstream to the react repo if we consider merging this PR.

Changelog:

[GENERAL] [ADDED] - React Portal support

Test Plan:

  • Added fantom tests in Portal-itest.js
  • Added example in PortalExample.js
Screen.Recording.2026-02-08.at.5.34.41.AM.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
@intergalacticspacehighway intergalacticspacehighway marked this pull request as ready for review February 8, 2026 03:43
@facebook-github-bot facebook-github-bot added the Shared with Meta Applied via automation to indicate that an Issue or Pull Request has been shared with the team. label Feb 8, 2026
@intergalacticspacehighway intergalacticspacehighway changed the title PoC - Support react portals with fabric [experimental] - Support React Portal with Fabric Feb 8, 2026
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. Shared with Meta Applied via automation to indicate that an Issue or Pull Request has been shared with the team.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants