Skip to content

Exclude experimental symbols from the C++ public API snapshot (#56244)#56244

Closed
coado wants to merge 15 commits into
facebook:mainfrom
coado:export-D98454721
Closed

Exclude experimental symbols from the C++ public API snapshot (#56244)#56244
coado wants to merge 15 commits into
facebook:mainfrom
coado:export-D98454721

Conversation

@coado
Copy link
Copy Markdown
Contributor

@coado coado commented Mar 27, 2026

Summary:

Excludes symbols marked as Experimental from the C++ public API snapshots. Types with the "Experimental" prefix are explicitly not stable API — they represent features still under active development and are subject to change or removal without notice.

Changelog:
[Internal]

Reviewed By: cipolleschi

Differential Revision: D98454721

@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 Mar 27, 2026
@facebook-github-tools facebook-github-tools Bot added p: Software Mansion Partner: Software Mansion Partner labels Mar 27, 2026
@meta-codesync
Copy link
Copy Markdown

meta-codesync Bot commented Mar 27, 2026

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

@facebook-github-tools facebook-github-tools Bot added the p: Facebook Partner: Facebook label Mar 27, 2026
coado added a commit to coado/react-native that referenced this pull request Mar 27, 2026
…ok#56244)

Summary:
Pull Request resolved: facebook#56244

Excludes symbols marked as Experimental from the C++ public API snapshots. Types with the "Experimental" prefix are explicitly not stable API — they represent features still under active development and are subject to change or removal without notice.

Changelog:
[Internal]

Reviewed By: cipolleschi

Differential Revision: D98454721
@meta-codesync meta-codesync Bot changed the title Exclude experimental symbols from the C++ public API snapshot Exclude experimental symbols from the C++ public API snapshot (#56244) Mar 27, 2026
@coado coado force-pushed the export-D98454721 branch from 9d83a03 to b39b980 Compare March 27, 2026 11:13
Dawid Małecki and others added 15 commits March 31, 2026 04:30
Summary:
This diff introduces initial snapshots of the Cxx public API in a form of a couple .api files, namely:

- ReactAndroidDebugCxx.api
- ReactAndroidReleaseCxx.api
- ReactAppleDebugCxx.api
- ReactAppleReleaseCxx.api
- ReactCommonDebugCxx.api
- ReactCommonReleaseCxx.api

that is for `ReactAndroid`, `ReactApple`, and shared `ReactCommon` in two variants `Release` and `Debug` each.

Differential Revision: D97296573
Summary:
Pull Request resolved: facebook#56042

Adds CI workflow for validating whether the current C++ API snapshot is equivalent with the generated one.

Changelog:
[Internal]

Differential Revision: D95963515
Summary:
Removes leaked test code from the snapshot.

Changelog:
[Internal]

Differential Revision: D97457090
Summary:
Refactor and add global exclude patterns to the C++ stable API snapshot config. This enables better modularization of shared exclude patterns coming from the assumption that ReactAndroid and ReactApple consists of ReactCommon in their inputs and some paths should not be processed on each platform.

Changelog:
[Internal]

Differential Revision: D97465431
Summary:
Removes fantom test specific methods, namely:
- NativeFantomTestSpecificMethods,
- FantomForcedCloneCommitHook

from the C++ API snapshot.

Changelog:
[Internal]

Differential Revision: D97466201
Summary:
Removes stubs from the snapshot which should be irrelevant in context of the public surface.

Changelog:
[Internal]

Differential Revision: D97478132
…zations

Summary:
Doxygen incorrectly merges base classes from primary templates into their partial specializations. In C++, a specialization's inheritance list completely replaces the primary template's, but Doxygen combines both into a single basecompoundref list.

- **Contradictory type traits** — is_optional<std::optional<T>> and is_variant_of_data_types<std::variant<Ts...>> showed inheritance from both std::false_type (primary) and std::true_type (specialization)

- **Duplicate base classes** — Converter<jsi::Object> listed ConverterBase<jsi::Object> twice (once from the primary template after substitution, once from the specialization)

This diff fixes both issues with two complementary mechanisms:

- **Dedup-by-name (Extendable._deduplicate_base_classes)**: removes exact duplicate base classes, keeping the last occurrence. Handles cases where Doxygen's template argument substitution produces identical names.
- **Primary template base subtraction (StructLikeScopeKind._remove_merged_primary_bases)**: for partial specializations, looks up the primary template among sibling scopes and performs count-based subtraction of its bases. Count-based (rather than set-based) subtraction correctly preserves bases that a specialization explicitly re-inherits from the same class as the primary.

Changelog:
[Internal]

Differential Revision: D98291360
Differential Revision: D98292820
Summary:
There are cases in which we want to strip particular symbols from the snapshot. This diff adds `exclude_symbols` to the parser config to enable definitions of symbol patterns that should be excluded from the snapshot.

Changelog:
[Internal]

Differential Revision: D98295409
Summary:
Strips remaining Fantom symbols from the public API snapshots.

Changelog:
[Internal]

Differential Revision: D98295521
Summary:
Modifies C++ API parser config to accept `exclude_symbols` at the platform level and sets `Android` symbols to be excluded from the ReactApple snapshot.

Chagnelog:
[Internal]

Differential Revision: D98298766
Summary:
Removes feature flags from the C++ public API snapshots as they are considered private. This greatly reduces snapshots size.

Changelog:
[Internal]

Differential Revision: D98312529
Summary:
Excluded symbols that contain "UnstableLegacy" from public stable C++ API snapshot, that is `UnstableLegacyViewManagerAutomaticComponentDescriptor` and `UnstableLegacyViewManagerInteropComponentDescriptor`.

Changelog:
[Internal]

Differential Revision: D98317003
…ok#56244)

Summary:
Pull Request resolved: facebook#56244

Excludes symbols marked as Experimental from the C++ public API snapshots. Types with the "Experimental" prefix are explicitly not stable API — they represent features still under active development and are subject to change or removal without notice.

Changelog:
[Internal]

Reviewed By: cipolleschi

Differential Revision: D98454721
@coado coado force-pushed the export-D98454721 branch from b39b980 to 71f3dd7 Compare March 31, 2026 11:36
@meta-codesync meta-codesync Bot closed this in 0642e41 Mar 31, 2026
@facebook-github-tools facebook-github-tools Bot added the Merged This PR has been merged. label Mar 31, 2026
@meta-codesync
Copy link
Copy Markdown

meta-codesync Bot commented Mar 31, 2026

This pull request has been merged in 0642e41.

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. meta-exported p: Facebook Partner: Facebook p: Software Mansion Partner: Software Mansion Partner

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant