Skip to content

Navigation Menu

Sign in
Sign up

Cover cxxreact:bridge with Stable API guards (#58404) - #58404

Open
j-piasecki wants to merge 6 commits into
react:main from
j-piasecki:export-D119163927
Open

Cover cxxreact:bridge with Stable API guards (#58404) #58404
j-piasecki wants to merge 6 commits into
react:main from
j-piasecki:export-D119163927

Conversation

@j-piasecki

@j-piasecki j-piasecki commented Sep 8, 2026
edited by meta-codesync Bot
Loading

Copy link
Copy Markdown
Contributor

Summary:

Classifies cxxreact:bridge as a private target under the three-tier C++ stable API visibility model. Consumers that opt into RN_STRICT_API now get an error if they include its headers directly; without that flag the guards are inert, so no existing build changes behaviour. ReactNativeVersion.h is a generated file, so its guard also goes into scripts/releases/templates/ReactNativeVersion.h-template.js; without that the next version stamp would rewrite the header and silently drop the guard from every release and nightly artifact.

Changelog: [Internal]

Differential Revision: D119163927

@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 Sep 8, 2026

meta-codesync Bot commented Sep 8, 2026

Copy link
Copy Markdown

@j-piasecki has exported this pull request. If you are a Meta employee, you can view the originating Diff in D119163927.

@meta-codesync meta-codesync Bot changed the title (削除) Cover cxxreact:bridge with Stable API guards (削除ここまで) (追記) Cover cxxreact:bridge with Stable API guards (#58404) (追記ここまで) Sep 9, 2026
j-piasecki added a commit to j-piasecki/react-native that referenced this pull request Sep 9, 2026
Summary:
Pull Request resolved: react#58404
Classifies `cxxreact:bridge` as a private target under the three-tier C++ stable API visibility model. Consumers that opt into `RN_STRICT_API` now get an error if they include its headers directly; without that flag the guards are inert, so no existing build changes behaviour. `ReactNativeVersion.h` is a generated file, so its guard also goes into `scripts/releases/templates/ReactNativeVersion.h-template.js`; without that the next version stamp would rewrite the header and silently drop the guard from every release and nightly artifact.
Changelog: [Internal]
Differential Revision: D119163927
Jakub Piasecki and others added 6 commits September 9, 2026 03:04
Summary:
Classifies `react/utils:utils` as a public target under the C++ stable API three-tier visibility model. Adds `#include <react/cxxstableapi/UmbrellaGuard.h>` to the module's 22 exported headers and introduces the module umbrella `React/Utils.h`, wiring the guard dependency into BUCK, CMake and CocoaPods and the umbrella into BUCK, CocoaPods, the iOS prebuild header config and the Android prefab export.
Consumers that opt into `RN_STRICT_API` now get an error if they include the module's headers directly, and should include `<React/Utils.h>` instead; without that flag the guards are inert, so no existing build changes behaviour.
Changelog: [Internal]
Differential Revision: D117858212
Summary:
Classifies `cxxreact:jsbigstring` as a public target under the C++ stable API three-tier visibility model. Adds `#include <react/cxxstableapi/UmbrellaGuard.h>` to the target's 2 exported C++ headers and introduces the module umbrella `React/JSBigString.h`, wiring the guard dependency into BUCK, CMake and CocoaPods and the umbrella into BUCK, CMake, CocoaPods, the iOS prebuild header config and the Android prefab export.
Consumers that opt into `RN_STRICT_API` now get an error if they include the target's headers directly, and should include `<React/JSBigString.h>` instead; without that flag the guards are inert, so no existing build changes behaviour.
Under `USE_FRAMEWORKS` the pod now maps its headers relative to `ReactCommon`, so they install under `cxxreact/` inside the built framework rather than at its root. Pods that pick up the framework's `Headers` directory through `install_modules_dependencies` are unaffected. `React-RCTFabric`, `ReactCommon` and `React-NativeModulesApple` pin their own search paths instead and are updated here; pods outside the repository that do the same have to make the equivalent change.
Changelog:
[iOS][Breaking] - Install `React-cxxreact` headers under `cxxreact/` inside its framework when `USE_FRAMEWORKS` is enabled. Pods that include `<cxxreact/...>` without calling `install_modules_dependencies` must add `React_cxxreact.framework/Headers` to `HEADER_SEARCH_PATHS`.
Differential Revision: D119144023
Summary:
Classifies `cxxreact:messagequeuethread` as a "for frameworks" target under the three-tier C++ stable API visibility model. Consumers that opt into `RN_STRICT_API` now get a warning if they include its headers directly, which they can acknowledge with `RN_ALLOW_FRAMEWORKS`; without that flag the guards are inert, so no existing build changes behaviour.
Changelog: [Internal]
Differential Revision: D119163883
Summary:
Classifies `cxxreact:tracesection` as a "for frameworks" target under the three-tier C++ stable API visibility model. Consumers that opt into `RN_STRICT_API` now get a warning if they include its headers directly, which they can acknowledge with `RN_ALLOW_FRAMEWORKS`; without that flag the guards are inert, so no existing build changes behaviour.
Changelog: [Internal]
Differential Revision: D119163904
Summary:
Classifies `cxxreact:module` as a private target under the three-tier C++ stable API visibility model. Consumers that opt into `RN_STRICT_API` now get an error if they include its headers directly; without that flag the guards are inert, so no existing build changes behaviour.
Changelog: [Internal]
Differential Revision: D119163922
Summary:
Pull Request resolved: react#58404
Classifies `cxxreact:bridge` as a private target under the three-tier C++ stable API visibility model. Consumers that opt into `RN_STRICT_API` now get an error if they include its headers directly; without that flag the guards are inert, so no existing build changes behaviour. `ReactNativeVersion.h` is a generated file, so its guard also goes into `scripts/releases/templates/ReactNativeVersion.h-template.js`; without that the next version stamp would rewrite the header and silently drop the guard from every release and nightly artifact.
Changelog: [Internal]
Differential Revision: D119163927
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

No reviews

Assignees

No one assigned

Labels

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

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

1 participant

AltStyle によって変換されたページ (->オリジナル) /