From 79d1d1da1fce87541aeb1048b695c076064cf700 Mon Sep 17 00:00:00 2001 From: Jakub Piasecki Date: Fri, 21 Aug 2026 02:55:38 -0700 Subject: [PATCH 1/2] Cover `react/renderer/consistency:consistency` with Stable API guards Summary: Classifies `react/renderer/consistency:consistency` as a private target under the C++ stable API three-tier visibility model. Adds `#include ` to both headers in the module and declares the guard dependency in BUCK, CMake and the podspec. The private headers were reachable from higher tiers: `ShadowTreeRevisionConsistencyManager.h` was included by the for-frameworks `RuntimeScheduler.h` (and its two forks) and by the public `UIManager.h`, which would make the guard a hard error for consumers under `RN_STRICT_API`. Every use is a pointer, so those headers now forward declare the type and the include moves to `UIManager.cpp`. `UIManager.h` also drops `LazyShadowTreeRevisionConsistencyManager.h`, which re-exposed the same header through inheritance. Changelog: [Internal] Differential Revision: D116601683 --- .../ReactCommon/react/renderer/consistency/CMakeLists.txt | 2 ++ .../renderer/consistency/React-rendererconsistency.podspec | 2 ++ .../react/renderer/consistency/ScopedShadowTreeRevisionLock.h | 2 ++ .../consistency/ShadowTreeRevisionConsistencyManager.h | 2 ++ .../react/renderer/runtimescheduler/RuntimeScheduler.h | 3 ++- .../react/renderer/runtimescheduler/RuntimeScheduler_Legacy.h | 3 ++- .../react/renderer/runtimescheduler/RuntimeScheduler_Modern.h | 3 ++- .../ReactCommon/react/renderer/uimanager/UIManager.cpp | 2 ++ .../ReactCommon/react/renderer/uimanager/UIManager.h | 4 ++-- 9 files changed, 18 insertions(+), 5 deletions(-) diff --git a/packages/react-native/ReactCommon/react/renderer/consistency/CMakeLists.txt b/packages/react-native/ReactCommon/react/renderer/consistency/CMakeLists.txt index 9f42cf6f800c..2d2dbf5fa202 100644 --- a/packages/react-native/ReactCommon/react/renderer/consistency/CMakeLists.txt +++ b/packages/react-native/ReactCommon/react/renderer/consistency/CMakeLists.txt @@ -12,5 +12,7 @@ file(GLOB react_renderer_consistency_SRC CONFIGURE_DEPENDS *.cpp) add_library(react_renderer_consistency OBJECT ${react_renderer_consistency_SRC}) target_include_directories(react_renderer_consistency PUBLIC ${REACT_COMMON_DIR}) + +target_link_libraries(react_renderer_consistency react_cxxstableapi) target_compile_reactnative_options(react_renderer_consistency PRIVATE) target_compile_options(react_renderer_consistency PRIVATE -Wpedantic) diff --git a/packages/react-native/ReactCommon/react/renderer/consistency/React-rendererconsistency.podspec b/packages/react-native/ReactCommon/react/renderer/consistency/React-rendererconsistency.podspec index e4cf09b0d814..7fa840edb962 100644 --- a/packages/react-native/ReactCommon/react/renderer/consistency/React-rendererconsistency.podspec +++ b/packages/react-native/ReactCommon/react/renderer/consistency/React-rendererconsistency.podspec @@ -40,5 +40,7 @@ Pod::Spec.new do |s| resolve_use_frameworks(s, header_mappings_dir: "../../..", module_name: "React_rendererconsistency") + s.dependency "React-cxxstableapi" + mark_as_react_native_build(s) end diff --git a/packages/react-native/ReactCommon/react/renderer/consistency/ScopedShadowTreeRevisionLock.h b/packages/react-native/ReactCommon/react/renderer/consistency/ScopedShadowTreeRevisionLock.h index 51df90e7f261..66c35d8ad40d 100644 --- a/packages/react-native/ReactCommon/react/renderer/consistency/ScopedShadowTreeRevisionLock.h +++ b/packages/react-native/ReactCommon/react/renderer/consistency/ScopedShadowTreeRevisionLock.h @@ -7,6 +7,8 @@ #pragma once +#include + #include namespace facebook::react { diff --git a/packages/react-native/ReactCommon/react/renderer/consistency/ShadowTreeRevisionConsistencyManager.h b/packages/react-native/ReactCommon/react/renderer/consistency/ShadowTreeRevisionConsistencyManager.h index d5afba016f64..6896b74a2b03 100644 --- a/packages/react-native/ReactCommon/react/renderer/consistency/ShadowTreeRevisionConsistencyManager.h +++ b/packages/react-native/ReactCommon/react/renderer/consistency/ShadowTreeRevisionConsistencyManager.h @@ -7,6 +7,8 @@ #pragma once +#include + namespace facebook::react { /** diff --git a/packages/react-native/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler.h b/packages/react-native/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler.h index 828efcb7a9c3..1bbd101c96f5 100644 --- a/packages/react-native/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler.h +++ b/packages/react-native/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler.h @@ -10,7 +10,6 @@ #include #include #include -#include #include #include #include @@ -20,6 +19,8 @@ namespace facebook::react { +class ShadowTreeRevisionConsistencyManager; + using RuntimeSchedulerRenderingUpdate = std::function; using SurfaceId = int32_t; diff --git a/packages/react-native/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler_Legacy.h b/packages/react-native/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler_Legacy.h index 6218ff02a120..ba148d3899e6 100644 --- a/packages/react-native/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler_Legacy.h +++ b/packages/react-native/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler_Legacy.h @@ -10,7 +10,6 @@ #ifndef RCT_REMOVE_LEGACY_ARCH #include -#include #include #include #include @@ -19,6 +18,8 @@ namespace facebook::react { +class ShadowTreeRevisionConsistencyManager; + class RuntimeScheduler_Legacy final : public RuntimeSchedulerBase { public: explicit RuntimeScheduler_Legacy( diff --git a/packages/react-native/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler_Modern.h b/packages/react-native/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler_Modern.h index d40fc6c63e09..7f9600bc9de9 100644 --- a/packages/react-native/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler_Modern.h +++ b/packages/react-native/ReactCommon/react/renderer/runtimescheduler/RuntimeScheduler_Modern.h @@ -8,7 +8,6 @@ #pragma once #include -#include #include #include #include @@ -18,6 +17,8 @@ namespace facebook::react { +class ShadowTreeRevisionConsistencyManager; + class RuntimeScheduler_Modern final : public RuntimeSchedulerBase { public: explicit RuntimeScheduler_Modern( diff --git a/packages/react-native/ReactCommon/react/renderer/uimanager/UIManager.cpp b/packages/react-native/ReactCommon/react/renderer/uimanager/UIManager.cpp index 6b7c66679419..60f713c45b69 100644 --- a/packages/react-native/ReactCommon/react/renderer/uimanager/UIManager.cpp +++ b/packages/react-native/ReactCommon/react/renderer/uimanager/UIManager.cpp @@ -11,6 +11,7 @@ #include #include #include +#include #include #include #include @@ -18,6 +19,7 @@ #include #include #include +#include #include diff --git a/packages/react-native/ReactCommon/react/renderer/uimanager/UIManager.h b/packages/react-native/ReactCommon/react/renderer/uimanager/UIManager.h index f7452c8defe6..4982254b9a34 100644 --- a/packages/react-native/ReactCommon/react/renderer/uimanager/UIManager.h +++ b/packages/react-native/ReactCommon/react/renderer/uimanager/UIManager.h @@ -14,7 +14,6 @@ #include #include -#include #include #include #include @@ -28,13 +27,14 @@ #include #include #include -#include #include #include #include namespace facebook::react { +class LazyShadowTreeRevisionConsistencyManager; +class ShadowTreeRevisionConsistencyManager; class UIManagerBinding; class UIManagerCommitHook; class UIManagerMountHook; From 3076db396ab0f9e501a9e681cd18bd24ab565e28 Mon Sep 17 00:00:00 2001 From: Jakub Piasecki Date: Fri, 21 Aug 2026 02:55:38 -0700 Subject: [PATCH 2/2] Cover `react/renderer/uimanager/consistency:consistency` with Stable API guards Summary: Classifies `react/renderer/uimanager/consistency:consistency` as a private target under the C++ stable API three-tier visibility model. Adds `#include ` to both headers in the module and declares the guard dependency in BUCK and CMake. The module is a `React-Fabric` subspec, so the CocoaPods dependency is already on the parent spec. The private headers were reachable from a higher tier: `ShadowTreeRevisionProvider.h` was included by `UIManager.h`, which is public, and that would make the guard a hard error for consumers under `RN_STRICT_API`. Every use is a pointer, so `UIManager.h` now forward declares the type and the include moves to the four source files that dereference it: `UIManager.cpp`, `UIManagerBinding.cpp`, `ViewTransitionModule.cpp` and `NativeDOM.cpp`. Changelog: [Internal] Differential Revision: D116920012 --- .../ReactCommon/react/nativemodule/dom/NativeDOM.cpp | 1 + .../ReactCommon/react/renderer/uimanager/UIManager.cpp | 1 + .../ReactCommon/react/renderer/uimanager/UIManager.h | 2 +- .../ReactCommon/react/renderer/uimanager/UIManagerBinding.cpp | 1 + .../react/renderer/uimanager/consistency/CMakeLists.txt | 1 + .../consistency/LazyShadowTreeRevisionConsistencyManager.h | 2 ++ .../renderer/uimanager/consistency/ShadowTreeRevisionProvider.h | 2 ++ .../react/renderer/viewtransition/ViewTransitionModule.cpp | 1 + 8 files changed, 10 insertions(+), 1 deletion(-) diff --git a/packages/react-native/ReactCommon/react/nativemodule/dom/NativeDOM.cpp b/packages/react-native/ReactCommon/react/nativemodule/dom/NativeDOM.cpp index b01fab0c8913..d080c1cd892e 100644 --- a/packages/react-native/ReactCommon/react/nativemodule/dom/NativeDOM.cpp +++ b/packages/react-native/ReactCommon/react/nativemodule/dom/NativeDOM.cpp @@ -11,6 +11,7 @@ #include #include #include +#include #ifdef RN_DISABLE_OSS_PLUGIN_HEADER #include "Plugins.h" diff --git a/packages/react-native/ReactCommon/react/renderer/uimanager/UIManager.cpp b/packages/react-native/ReactCommon/react/renderer/uimanager/UIManager.cpp index 60f713c45b69..eae06f6735f5 100644 --- a/packages/react-native/ReactCommon/react/renderer/uimanager/UIManager.cpp +++ b/packages/react-native/ReactCommon/react/renderer/uimanager/UIManager.cpp @@ -20,6 +20,7 @@ #include #include #include +#include #include diff --git a/packages/react-native/ReactCommon/react/renderer/uimanager/UIManager.h b/packages/react-native/ReactCommon/react/renderer/uimanager/UIManager.h index 4982254b9a34..5378bc037116 100644 --- a/packages/react-native/ReactCommon/react/renderer/uimanager/UIManager.h +++ b/packages/react-native/ReactCommon/react/renderer/uimanager/UIManager.h @@ -27,7 +27,6 @@ #include #include #include -#include #include #include @@ -35,6 +34,7 @@ namespace facebook::react { class LazyShadowTreeRevisionConsistencyManager; class ShadowTreeRevisionConsistencyManager; +class ShadowTreeRevisionProvider; class UIManagerBinding; class UIManagerCommitHook; class UIManagerMountHook; diff --git a/packages/react-native/ReactCommon/react/renderer/uimanager/UIManagerBinding.cpp b/packages/react-native/ReactCommon/react/renderer/uimanager/UIManagerBinding.cpp index ed1c62d97394..e84624567aad 100644 --- a/packages/react-native/ReactCommon/react/renderer/uimanager/UIManagerBinding.cpp +++ b/packages/react-native/ReactCommon/react/renderer/uimanager/UIManagerBinding.cpp @@ -16,6 +16,7 @@ #include #include #include +#include #include #include diff --git a/packages/react-native/ReactCommon/react/renderer/uimanager/consistency/CMakeLists.txt b/packages/react-native/ReactCommon/react/renderer/uimanager/consistency/CMakeLists.txt index e8673f3de72f..68407ca11e0a 100644 --- a/packages/react-native/ReactCommon/react/renderer/uimanager/consistency/CMakeLists.txt +++ b/packages/react-native/ReactCommon/react/renderer/uimanager/consistency/CMakeLists.txt @@ -16,6 +16,7 @@ target_include_directories(react_renderer_uimanager_consistency PUBLIC ${REACT_C target_link_libraries(react_renderer_uimanager_consistency glog rrc_root + react_cxxstableapi react_renderer_consistency react_renderer_mounting) target_compile_reactnative_options(react_renderer_uimanager_consistency PRIVATE) diff --git a/packages/react-native/ReactCommon/react/renderer/uimanager/consistency/LazyShadowTreeRevisionConsistencyManager.h b/packages/react-native/ReactCommon/react/renderer/uimanager/consistency/LazyShadowTreeRevisionConsistencyManager.h index c7ab5af7fac2..8be01888d67a 100644 --- a/packages/react-native/ReactCommon/react/renderer/uimanager/consistency/LazyShadowTreeRevisionConsistencyManager.h +++ b/packages/react-native/ReactCommon/react/renderer/uimanager/consistency/LazyShadowTreeRevisionConsistencyManager.h @@ -7,6 +7,8 @@ #pragma once +#include + #include #include #include diff --git a/packages/react-native/ReactCommon/react/renderer/uimanager/consistency/ShadowTreeRevisionProvider.h b/packages/react-native/ReactCommon/react/renderer/uimanager/consistency/ShadowTreeRevisionProvider.h index 66c36d4aa916..dd1d59785840 100644 --- a/packages/react-native/ReactCommon/react/renderer/uimanager/consistency/ShadowTreeRevisionProvider.h +++ b/packages/react-native/ReactCommon/react/renderer/uimanager/consistency/ShadowTreeRevisionProvider.h @@ -7,6 +7,8 @@ #pragma once +#include + #include #include #include diff --git a/packages/react-native/ReactCommon/react/renderer/viewtransition/ViewTransitionModule.cpp b/packages/react-native/ReactCommon/react/renderer/viewtransition/ViewTransitionModule.cpp index ae5cda733648..57edf2878844 100644 --- a/packages/react-native/ReactCommon/react/renderer/viewtransition/ViewTransitionModule.cpp +++ b/packages/react-native/ReactCommon/react/renderer/viewtransition/ViewTransitionModule.cpp @@ -15,6 +15,7 @@ #include #include #include +#include namespace facebook::react {