From 04016806988675b9fec365a13d085c8d6bf8882f Mon Sep 17 00:00:00 2001 From: Jakub Piasecki Date: Fri, 9 Oct 2026 00:59:41 -0700 Subject: [PATCH 1/2] Retier `react/renderer/uimanager` headers Summary: Make `AppRegistryBinding.h`, `LayoutEventEmitter.h` and the deprecated `SurfaceRegistryBinding.h` private; they are only used inside React Native. `UIManagerViewTransitionDelegate.h` now reaches `Float.h` through the `` umbrella instead of including it directly, since `Float.h` is public and its guard rejects direct includes from for-frameworks headers. Changelog: [Internal] Differential Revision: D123391983 --- .../react/renderer/uimanager/AppRegistryBinding.h | 2 +- .../react/renderer/uimanager/LayoutEventEmitter.h | 2 +- .../renderer/uimanager/SurfaceRegistryBinding.h | 2 ++ .../uimanager/UIManagerViewTransitionDelegate.h | 3 +-- .../api-snapshots/ReactAndroidFrameworksCxx.api | 13 ------------- .../api-snapshots/ReactAppleFrameworksCxx.api | 13 ------------- .../api-snapshots/ReactCommonFrameworksCxx.api | 13 ------------- 7 files changed, 5 insertions(+), 43 deletions(-) diff --git a/packages/react-native/ReactCommon/react/renderer/uimanager/AppRegistryBinding.h b/packages/react-native/ReactCommon/react/renderer/uimanager/AppRegistryBinding.h index 65cc30251b0a..7897d9cbff32 100644 --- a/packages/react-native/ReactCommon/react/renderer/uimanager/AppRegistryBinding.h +++ b/packages/react-native/ReactCommon/react/renderer/uimanager/AppRegistryBinding.h @@ -7,7 +7,7 @@ #pragma once -#include +#include #include diff --git a/packages/react-native/ReactCommon/react/renderer/uimanager/LayoutEventEmitter.h b/packages/react-native/ReactCommon/react/renderer/uimanager/LayoutEventEmitter.h index cf0755f42c18..13cca8609214 100644 --- a/packages/react-native/ReactCommon/react/renderer/uimanager/LayoutEventEmitter.h +++ b/packages/react-native/ReactCommon/react/renderer/uimanager/LayoutEventEmitter.h @@ -7,7 +7,7 @@ #pragma once -#include +#include #include diff --git a/packages/react-native/ReactCommon/react/renderer/uimanager/SurfaceRegistryBinding.h b/packages/react-native/ReactCommon/react/renderer/uimanager/SurfaceRegistryBinding.h index a3d3b67f6f4f..dde4de937356 100644 --- a/packages/react-native/ReactCommon/react/renderer/uimanager/SurfaceRegistryBinding.h +++ b/packages/react-native/ReactCommon/react/renderer/uimanager/SurfaceRegistryBinding.h @@ -7,6 +7,8 @@ #pragma once +#include + #warning "The SurfaceRegistryBinding.h header has been renamed to AppRegistryBinding.h" #include diff --git a/packages/react-native/ReactCommon/react/renderer/uimanager/UIManagerViewTransitionDelegate.h b/packages/react-native/ReactCommon/react/renderer/uimanager/UIManagerViewTransitionDelegate.h index 85921394a57a..f56c6c324792 100644 --- a/packages/react-native/ReactCommon/react/renderer/uimanager/UIManagerViewTransitionDelegate.h +++ b/packages/react-native/ReactCommon/react/renderer/uimanager/UIManagerViewTransitionDelegate.h @@ -9,6 +9,7 @@ #include +#include #include #include @@ -16,8 +17,6 @@ #include #include -#include - namespace facebook::react { class UIManagerViewTransitionDelegate { diff --git a/scripts/cxx-api/api-snapshots/ReactAndroidFrameworksCxx.api b/scripts/cxx-api/api-snapshots/ReactAndroidFrameworksCxx.api index c43062b40357..22b5eebb6aae 100644 --- a/scripts/cxx-api/api-snapshots/ReactAndroidFrameworksCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactAndroidFrameworksCxx.api @@ -1326,13 +1326,6 @@ class facebook::react::AnimationChoreographer { public void setAnimationBackend(std::weak_ptr animationBackend); } -class facebook::react::AppRegistryBinding { - public AppRegistryBinding() = delete; - public static void setSurfaceProps(facebook::jsi::Runtime& runtime, facebook::react::SurfaceId surfaceId, const std::string& moduleName, const folly::dynamic& initialProps, facebook::react::DisplayMode displayMode); - public static void startSurface(facebook::jsi::Runtime& runtime, facebook::react::SurfaceId surfaceId, const std::string& moduleName, const folly::dynamic& initialProps, facebook::react::DisplayMode displayMode); - public static void stopSurface(facebook::jsi::Runtime& runtime, facebook::react::SurfaceId surfaceId); -} - class facebook::react::AsyncArrayBuffer { public AsyncArrayBuffer(const facebook::react::AsyncArrayBuffer&) = delete; public AsyncArrayBuffer(facebook::react::AsyncArrayBuffer&&) noexcept = default; @@ -2600,12 +2593,6 @@ class facebook::react::LayoutAnimationStatusDelegate { class facebook::react::LayoutConformanceShadowNode : public facebook::react::ConcreteShadowNode { } -class facebook::react::LayoutEventEmitter : public facebook::react::UIManagerCommitHook { - public virtual void commitHookWasRegistered(const facebook::react::UIManager&) noexcept override; - public virtual void commitHookWasUnregistered(const facebook::react::UIManager&) noexcept override; - public virtual void shadowTreeDidCommit(const facebook::react::ShadowTree& shadowTree, const facebook::react::RootShadowNode::Shared& rootShadowNode, const std::vector& affectedLayoutableNodes) noexcept override; -} - class facebook::react::LayoutableShadowNode : public facebook::react::ShadowNode { public LayoutableShadowNode(const facebook::react::ShadowNode& sourceShadowNode, const facebook::react::ShadowNodeFragment& fragment); public LayoutableShadowNode(const facebook::react::ShadowNodeFragment& fragment, const facebook::react::ShadowNodeFamily::Shared& family, facebook::react::ShadowNodeTraits traits); diff --git a/scripts/cxx-api/api-snapshots/ReactAppleFrameworksCxx.api b/scripts/cxx-api/api-snapshots/ReactAppleFrameworksCxx.api index a3bfd7f91a8a..13cb5418ea74 100644 --- a/scripts/cxx-api/api-snapshots/ReactAppleFrameworksCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactAppleFrameworksCxx.api @@ -3921,13 +3921,6 @@ class facebook::react::AnimationChoreographer { public void setAnimationBackend(std::weak_ptr animationBackend); } -class facebook::react::AppRegistryBinding { - public AppRegistryBinding() = delete; - public static void setSurfaceProps(facebook::jsi::Runtime& runtime, facebook::react::SurfaceId surfaceId, const std::string& moduleName, const folly::dynamic& initialProps, facebook::react::DisplayMode displayMode); - public static void startSurface(facebook::jsi::Runtime& runtime, facebook::react::SurfaceId surfaceId, const std::string& moduleName, const folly::dynamic& initialProps, facebook::react::DisplayMode displayMode); - public static void stopSurface(facebook::jsi::Runtime& runtime, facebook::react::SurfaceId surfaceId); -} - class facebook::react::AppleEventBeat : public facebook::react::EventBeat, public facebook::react::RunLoopObserver::Delegate { public AppleEventBeat(const facebook::react::AppleEventBeat&) = delete; public AppleEventBeat(facebook::react::AppleEventBeat&&) = delete; @@ -4836,12 +4829,6 @@ class facebook::react::LayoutAnimationStatusDelegate { class facebook::react::LayoutConformanceShadowNode : public facebook::react::ConcreteShadowNode { } -class facebook::react::LayoutEventEmitter : public facebook::react::UIManagerCommitHook { - public virtual void commitHookWasRegistered(const facebook::react::UIManager&) noexcept override; - public virtual void commitHookWasUnregistered(const facebook::react::UIManager&) noexcept override; - public virtual void shadowTreeDidCommit(const facebook::react::ShadowTree& shadowTree, const facebook::react::RootShadowNode::Shared& rootShadowNode, const std::vector& affectedLayoutableNodes) noexcept override; -} - class facebook::react::LayoutableShadowNode : public facebook::react::ShadowNode { public LayoutableShadowNode(const facebook::react::ShadowNode& sourceShadowNode, const facebook::react::ShadowNodeFragment& fragment); public LayoutableShadowNode(const facebook::react::ShadowNodeFragment& fragment, const facebook::react::ShadowNodeFamily::Shared& family, facebook::react::ShadowNodeTraits traits); diff --git a/scripts/cxx-api/api-snapshots/ReactCommonFrameworksCxx.api b/scripts/cxx-api/api-snapshots/ReactCommonFrameworksCxx.api index cb763baece52..ee5f0e621756 100644 --- a/scripts/cxx-api/api-snapshots/ReactCommonFrameworksCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactCommonFrameworksCxx.api @@ -663,13 +663,6 @@ class facebook::react::AnimationChoreographer { public void setAnimationBackend(std::weak_ptr animationBackend); } -class facebook::react::AppRegistryBinding { - public AppRegistryBinding() = delete; - public static void setSurfaceProps(facebook::jsi::Runtime& runtime, facebook::react::SurfaceId surfaceId, const std::string& moduleName, const folly::dynamic& initialProps, facebook::react::DisplayMode displayMode); - public static void startSurface(facebook::jsi::Runtime& runtime, facebook::react::SurfaceId surfaceId, const std::string& moduleName, const folly::dynamic& initialProps, facebook::react::DisplayMode displayMode); - public static void stopSurface(facebook::jsi::Runtime& runtime, facebook::react::SurfaceId surfaceId); -} - class facebook::react::AsyncArrayBuffer { public AsyncArrayBuffer(const facebook::react::AsyncArrayBuffer&) = delete; public AsyncArrayBuffer(facebook::react::AsyncArrayBuffer&&) noexcept = default; @@ -1526,12 +1519,6 @@ class facebook::react::LayoutAnimationStatusDelegate { class facebook::react::LayoutConformanceShadowNode : public facebook::react::ConcreteShadowNode { } -class facebook::react::LayoutEventEmitter : public facebook::react::UIManagerCommitHook { - public virtual void commitHookWasRegistered(const facebook::react::UIManager&) noexcept override; - public virtual void commitHookWasUnregistered(const facebook::react::UIManager&) noexcept override; - public virtual void shadowTreeDidCommit(const facebook::react::ShadowTree& shadowTree, const facebook::react::RootShadowNode::Shared& rootShadowNode, const std::vector& affectedLayoutableNodes) noexcept override; -} - class facebook::react::LayoutableShadowNode : public facebook::react::ShadowNode { public LayoutableShadowNode(const facebook::react::ShadowNode& sourceShadowNode, const facebook::react::ShadowNodeFragment& fragment); public LayoutableShadowNode(const facebook::react::ShadowNodeFragment& fragment, const facebook::react::ShadowNodeFamily::Shared& family, facebook::react::ShadowNodeTraits traits); From d62ca6fe2a3c8df7b02ecbb8a46992d82b48a946 Mon Sep 17 00:00:00 2001 From: Jakub Piasecki Date: Fri, 9 Oct 2026 01:05:56 -0700 Subject: [PATCH 2/2] Retier `react/renderer/textlayoutmanager` headers (#58851) Summary: Pull Request resolved: https://github.com/react/react-native/pull/58851 Make `TextMeasurementRounding.h` private; it is only used by the iOS text layout manager and its tests. The Windows `TextLayoutManager.h` and `TextLayoutUtil.h` now reach `LayoutConstraints.h` and `ContextContainer.h` through the `` and `` umbrellas, matching the other platform variants, since both headers are public and reject direct includes from for-frameworks headers. Changelog: [Internal] Reviewed By: christophpurrer Differential Revision: D123394863 --- .../react/renderer/textlayoutmanager/TextMeasurementRounding.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/react-native/ReactCommon/react/renderer/textlayoutmanager/TextMeasurementRounding.h b/packages/react-native/ReactCommon/react/renderer/textlayoutmanager/TextMeasurementRounding.h index d42c96893f85..d5474397d43f 100644 --- a/packages/react-native/ReactCommon/react/renderer/textlayoutmanager/TextMeasurementRounding.h +++ b/packages/react-native/ReactCommon/react/renderer/textlayoutmanager/TextMeasurementRounding.h @@ -7,7 +7,7 @@ #pragma once -#include +#include #include