From 4678a44fd1c09c63cce913be79952df25c00c65a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dawid=20Ma=C5=82ecki?= Date: Mon, 12 Oct 2026 06:05:57 -0700 Subject: [PATCH 1/4] Make LayoutConformance component headers for-frameworks Summary: Move `LayoutConformanceComponentDescriptor.h`, `LayoutConformanceProps.h` and `LayoutConformanceShadowNode.h` from the public tier of the C++ stable API to the for-frameworks tier, and remove them from the `` umbrella. These headers implement the experimental `LayoutConformance` core component. Native component authors do not use them, but a platform that registers React Native's core components does: `YogaLayoutableShadowNode::resolveErrata` checks for `LayoutConformanceShadowNode` with a `dynamic_cast` to choose the Yoga errata, so a platform has to register React Native's own descriptor for the component to have any effect. That makes them framework-author API rather than private headers. The `LayoutConformance` enum and its conversions stay public in `primitives.h` and `conversions.h`. A for-frameworks header has to reach public headers through their umbrella, so the three headers now include `` and `` instead of fine-grained paths, and compile when included directly under strict API enforcement. `LayoutConformanceProps.h` was the only umbrella member that included the public `conversions.h`, so `conversions.h` is added to `` directly to keep it available through the umbrella. The headers stay published, because React Native's own core component registries outside this module include them. Because they now include their own module's umbrella, and `YogaLayoutableShadowNode.cpp` includes `LayoutConformanceShadowNode.h`, the CMake `rrc_view` target exposes its umbrella directory as `PUBLIC` instead of `INTERFACE`, so the module's own sources can resolve `` as well as its dependents. Changelog: [Internal] Differential Revision: D123895702 --- .../react/renderer/components/view/CMakeLists.txt | 2 +- .../view/LayoutConformanceComponentDescriptor.h | 4 ++-- .../renderer/components/view/LayoutConformanceProps.h | 7 +++---- .../components/view/LayoutConformanceShadowNode.h | 5 ++--- .../react/renderer/components/view/React/View.h | 4 +--- .../cxx-api/api-snapshots/ReactAndroidDebugCxx.api | 11 ----------- .../cxx-api/api-snapshots/ReactAndroidNewarchCxx.api | 11 ----------- .../cxx-api/api-snapshots/ReactAndroidReleaseCxx.api | 11 ----------- scripts/cxx-api/api-snapshots/ReactAppleDebugCxx.api | 11 ----------- .../cxx-api/api-snapshots/ReactAppleNewarchCxx.api | 11 ----------- .../cxx-api/api-snapshots/ReactAppleReleaseCxx.api | 11 ----------- scripts/cxx-api/api-snapshots/ReactCommonDebugCxx.api | 11 ----------- .../cxx-api/api-snapshots/ReactCommonNewarchCxx.api | 11 ----------- .../cxx-api/api-snapshots/ReactCommonReleaseCxx.api | 11 ----------- 14 files changed, 9 insertions(+), 112 deletions(-) diff --git a/packages/react-native/ReactCommon/react/renderer/components/view/CMakeLists.txt b/packages/react-native/ReactCommon/react/renderer/components/view/CMakeLists.txt index 7e2cf030f990..6e05d8d09599 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/view/CMakeLists.txt +++ b/packages/react-native/ReactCommon/react/renderer/components/view/CMakeLists.txt @@ -23,7 +23,7 @@ react_native_android_selector(platform_DIR ${CMAKE_CURRENT_SOURCE_DIR}/platform/android/ ${CMAKE_CURRENT_SOURCE_DIR}/platform/cxx/) target_include_directories(rrc_view PUBLIC ${REACT_COMMON_DIR} ${platform_DIR}) -target_include_directories(rrc_view INTERFACE ${REACT_COMMON_DIR}/react/renderer/components/view) +target_include_directories(rrc_view PUBLIC ${REACT_COMMON_DIR}/react/renderer/components/view) target_link_libraries(rrc_view folly_runtime diff --git a/packages/react-native/ReactCommon/react/renderer/components/view/LayoutConformanceComponentDescriptor.h b/packages/react-native/ReactCommon/react/renderer/components/view/LayoutConformanceComponentDescriptor.h index 55b3389958fc..62dab54cd3c2 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/view/LayoutConformanceComponentDescriptor.h +++ b/packages/react-native/ReactCommon/react/renderer/components/view/LayoutConformanceComponentDescriptor.h @@ -7,10 +7,10 @@ #pragma once -#include +#include +#include #include -#include namespace facebook::react { diff --git a/packages/react-native/ReactCommon/react/renderer/components/view/LayoutConformanceProps.h b/packages/react-native/ReactCommon/react/renderer/components/view/LayoutConformanceProps.h index d66dfbfee722..41aef7005ef6 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/view/LayoutConformanceProps.h +++ b/packages/react-native/ReactCommon/react/renderer/components/view/LayoutConformanceProps.h @@ -7,11 +7,10 @@ #pragma once -#include +#include -#include -#include -#include +#include +#include namespace facebook::react { diff --git a/packages/react-native/ReactCommon/react/renderer/components/view/LayoutConformanceShadowNode.h b/packages/react-native/ReactCommon/react/renderer/components/view/LayoutConformanceShadowNode.h index 40eb27a32865..00bb83485360 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/view/LayoutConformanceShadowNode.h +++ b/packages/react-native/ReactCommon/react/renderer/components/view/LayoutConformanceShadowNode.h @@ -7,11 +7,10 @@ #pragma once -#include +#include -#include +#include #include -#include namespace facebook::react { diff --git a/packages/react-native/ReactCommon/react/renderer/components/view/React/View.h b/packages/react-native/ReactCommon/react/renderer/components/view/React/View.h index ce20d40aa0c6..40ce388c76f0 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/view/React/View.h +++ b/packages/react-native/ReactCommon/react/renderer/components/view/React/View.h @@ -41,9 +41,6 @@ #include #include #include -#include -#include -#include #include #include #include @@ -55,6 +52,7 @@ #include #include #include +#include #include #undef RN_UMBRELLA_CONTEXT diff --git a/scripts/cxx-api/api-snapshots/ReactAndroidDebugCxx.api b/scripts/cxx-api/api-snapshots/ReactAndroidDebugCxx.api index bf17995a1b2e..3119d01468a3 100644 --- a/scripts/cxx-api/api-snapshots/ReactAndroidDebugCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactAndroidDebugCxx.api @@ -376,7 +376,6 @@ struct facebook::hermes::ISetEventLoopControl : public facebook::jsi::ICast { const char facebook::react::ViewComponentName[]; const facebook::react::EventTag facebook::react::EMPTY_EVENT_TAG; constexpr auto facebook::react::rncore_ModuleProvider; -constexpr char facebook::react::LayoutConformanceShadowNodeComponentName[]; constexpr facebook::react::ReactNativeVersionType facebook::react::ReactNativeVersion; constexpr facebook::react::Tag facebook::react::kNoTag; constexpr uint32_t facebook::react::INITIAL_BUCKETS_SIZE; @@ -424,7 +423,6 @@ using facebook::react::GradientDirection = std::variant; -using facebook::react::LayoutConformanceComponentDescriptor = facebook::react::ConcreteComponentDescriptor; using facebook::react::ModalHostViewSupportedOrientationsMask = uint32_t; using facebook::react::NativeMethodCallFunc = std::function; using facebook::react::PromiseSetupFunctionType = std::function)>; @@ -1724,9 +1722,6 @@ struct facebook::react::JavaTurboModule::InitParams { public std::string moduleName; } -class facebook::react::LayoutConformanceShadowNode : public facebook::react::ConcreteShadowNode { -} - 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); @@ -3375,12 +3370,6 @@ struct facebook::react::JTurboModuleWithJSIBindings : public facebook::jni::Java public static constexpr auto kJavaDescriptor; } -struct facebook::react::LayoutConformanceProps : public facebook::react::YogaStylableProps { - public LayoutConformanceProps() = default; - public LayoutConformanceProps(const facebook::react::PropsParserContext& context, const facebook::react::LayoutConformanceProps& sourceProps, const facebook::react::RawProps& rawProps); - public facebook::react::LayoutConformance mode; -} - struct facebook::react::LayoutConstraints { public facebook::react::LayoutDirection layoutDirection; public facebook::react::Size clamp(const facebook::react::Size& size) const; diff --git a/scripts/cxx-api/api-snapshots/ReactAndroidNewarchCxx.api b/scripts/cxx-api/api-snapshots/ReactAndroidNewarchCxx.api index 29e51c6d11da..fe587a5eb368 100644 --- a/scripts/cxx-api/api-snapshots/ReactAndroidNewarchCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactAndroidNewarchCxx.api @@ -376,7 +376,6 @@ struct facebook::hermes::ISetEventLoopControl : public facebook::jsi::ICast { const char facebook::react::ViewComponentName[]; const facebook::react::EventTag facebook::react::EMPTY_EVENT_TAG; constexpr auto facebook::react::rncore_ModuleProvider; -constexpr char facebook::react::LayoutConformanceShadowNodeComponentName[]; constexpr facebook::react::ReactNativeVersionType facebook::react::ReactNativeVersion; constexpr facebook::react::Tag facebook::react::kNoTag; constexpr uint32_t facebook::react::INITIAL_BUCKETS_SIZE; @@ -424,7 +423,6 @@ using facebook::react::GradientDirection = std::variant; -using facebook::react::LayoutConformanceComponentDescriptor = facebook::react::ConcreteComponentDescriptor; using facebook::react::ModalHostViewSupportedOrientationsMask = uint32_t; using facebook::react::NativeMethodCallFunc = std::function; using facebook::react::PromiseSetupFunctionType = std::function)>; @@ -1723,9 +1721,6 @@ struct facebook::react::JavaTurboModule::InitParams { public std::string moduleName; } -class facebook::react::LayoutConformanceShadowNode : public facebook::react::ConcreteShadowNode { -} - 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); @@ -3368,12 +3363,6 @@ struct facebook::react::JTurboModuleWithJSIBindings : public facebook::jni::Java public static constexpr auto kJavaDescriptor; } -struct facebook::react::LayoutConformanceProps : public facebook::react::YogaStylableProps { - public LayoutConformanceProps() = default; - public LayoutConformanceProps(const facebook::react::PropsParserContext& context, const facebook::react::LayoutConformanceProps& sourceProps, const facebook::react::RawProps& rawProps); - public facebook::react::LayoutConformance mode; -} - struct facebook::react::LayoutConstraints { public facebook::react::LayoutDirection layoutDirection; public facebook::react::Size clamp(const facebook::react::Size& size) const; diff --git a/scripts/cxx-api/api-snapshots/ReactAndroidReleaseCxx.api b/scripts/cxx-api/api-snapshots/ReactAndroidReleaseCxx.api index 29e51c6d11da..fe587a5eb368 100644 --- a/scripts/cxx-api/api-snapshots/ReactAndroidReleaseCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactAndroidReleaseCxx.api @@ -376,7 +376,6 @@ struct facebook::hermes::ISetEventLoopControl : public facebook::jsi::ICast { const char facebook::react::ViewComponentName[]; const facebook::react::EventTag facebook::react::EMPTY_EVENT_TAG; constexpr auto facebook::react::rncore_ModuleProvider; -constexpr char facebook::react::LayoutConformanceShadowNodeComponentName[]; constexpr facebook::react::ReactNativeVersionType facebook::react::ReactNativeVersion; constexpr facebook::react::Tag facebook::react::kNoTag; constexpr uint32_t facebook::react::INITIAL_BUCKETS_SIZE; @@ -424,7 +423,6 @@ using facebook::react::GradientDirection = std::variant; -using facebook::react::LayoutConformanceComponentDescriptor = facebook::react::ConcreteComponentDescriptor; using facebook::react::ModalHostViewSupportedOrientationsMask = uint32_t; using facebook::react::NativeMethodCallFunc = std::function; using facebook::react::PromiseSetupFunctionType = std::function)>; @@ -1723,9 +1721,6 @@ struct facebook::react::JavaTurboModule::InitParams { public std::string moduleName; } -class facebook::react::LayoutConformanceShadowNode : public facebook::react::ConcreteShadowNode { -} - 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); @@ -3368,12 +3363,6 @@ struct facebook::react::JTurboModuleWithJSIBindings : public facebook::jni::Java public static constexpr auto kJavaDescriptor; } -struct facebook::react::LayoutConformanceProps : public facebook::react::YogaStylableProps { - public LayoutConformanceProps() = default; - public LayoutConformanceProps(const facebook::react::PropsParserContext& context, const facebook::react::LayoutConformanceProps& sourceProps, const facebook::react::RawProps& rawProps); - public facebook::react::LayoutConformance mode; -} - struct facebook::react::LayoutConstraints { public facebook::react::LayoutDirection layoutDirection; public facebook::react::Size clamp(const facebook::react::Size& size) const; diff --git a/scripts/cxx-api/api-snapshots/ReactAppleDebugCxx.api b/scripts/cxx-api/api-snapshots/ReactAppleDebugCxx.api index ff1bf08374f5..e6347706efe0 100644 --- a/scripts/cxx-api/api-snapshots/ReactAppleDebugCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactAppleDebugCxx.api @@ -3163,7 +3163,6 @@ struct facebook::hermes::ISetEventLoopControl : public facebook::jsi::ICast { const char facebook::react::ViewComponentName[]; const facebook::react::EventTag facebook::react::EMPTY_EVENT_TAG; -constexpr char facebook::react::LayoutConformanceShadowNodeComponentName[]; constexpr facebook::react::ReactNativeVersionType facebook::react::ReactNativeVersion; constexpr facebook::react::Tag facebook::react::kNoTag; constexpr uint32_t facebook::react::INITIAL_BUCKETS_SIZE; @@ -3210,7 +3209,6 @@ using facebook::react::GradientDirection = std::variant; -using facebook::react::LayoutConformanceComponentDescriptor = facebook::react::ConcreteComponentDescriptor; using facebook::react::ModalHostViewSupportedOrientationsMask = uint32_t; using facebook::react::NativeMethodCallFunc = std::function; using facebook::react::PromiseSetupFunctionType = std::function)>; @@ -4018,9 +4016,6 @@ class facebook::react::JSBigString : public facebook::jsi::Buffer { public ~JSBigString() override = default; } -class facebook::react::LayoutConformanceShadowNode : public facebook::react::ConcreteShadowNode { -} - 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); @@ -5459,12 +5454,6 @@ struct facebook::react::ImageURLLoaderAttribution { public std::string queryRootName; } -struct facebook::react::LayoutConformanceProps : public facebook::react::YogaStylableProps { - public LayoutConformanceProps() = default; - public LayoutConformanceProps(const facebook::react::PropsParserContext& context, const facebook::react::LayoutConformanceProps& sourceProps, const facebook::react::RawProps& rawProps); - public facebook::react::LayoutConformance mode; -} - struct facebook::react::LayoutConstraints { public facebook::react::LayoutDirection layoutDirection; public facebook::react::Size clamp(const facebook::react::Size& size) const; diff --git a/scripts/cxx-api/api-snapshots/ReactAppleNewarchCxx.api b/scripts/cxx-api/api-snapshots/ReactAppleNewarchCxx.api index c47fe92de8f6..b7b527c6e6f5 100644 --- a/scripts/cxx-api/api-snapshots/ReactAppleNewarchCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactAppleNewarchCxx.api @@ -3155,7 +3155,6 @@ struct facebook::hermes::ISetEventLoopControl : public facebook::jsi::ICast { const char facebook::react::ViewComponentName[]; const facebook::react::EventTag facebook::react::EMPTY_EVENT_TAG; -constexpr char facebook::react::LayoutConformanceShadowNodeComponentName[]; constexpr facebook::react::ReactNativeVersionType facebook::react::ReactNativeVersion; constexpr facebook::react::Tag facebook::react::kNoTag; constexpr uint32_t facebook::react::INITIAL_BUCKETS_SIZE; @@ -3202,7 +3201,6 @@ using facebook::react::GradientDirection = std::variant; -using facebook::react::LayoutConformanceComponentDescriptor = facebook::react::ConcreteComponentDescriptor; using facebook::react::ModalHostViewSupportedOrientationsMask = uint32_t; using facebook::react::NativeMethodCallFunc = std::function; using facebook::react::PromiseSetupFunctionType = std::function)>; @@ -4009,9 +4007,6 @@ class facebook::react::JSBigString : public facebook::jsi::Buffer { public ~JSBigString() override = default; } -class facebook::react::LayoutConformanceShadowNode : public facebook::react::ConcreteShadowNode { -} - 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); @@ -5444,12 +5439,6 @@ struct facebook::react::ImageURLLoaderAttribution { public std::string queryRootName; } -struct facebook::react::LayoutConformanceProps : public facebook::react::YogaStylableProps { - public LayoutConformanceProps() = default; - public LayoutConformanceProps(const facebook::react::PropsParserContext& context, const facebook::react::LayoutConformanceProps& sourceProps, const facebook::react::RawProps& rawProps); - public facebook::react::LayoutConformance mode; -} - struct facebook::react::LayoutConstraints { public facebook::react::LayoutDirection layoutDirection; public facebook::react::Size clamp(const facebook::react::Size& size) const; diff --git a/scripts/cxx-api/api-snapshots/ReactAppleReleaseCxx.api b/scripts/cxx-api/api-snapshots/ReactAppleReleaseCxx.api index 065b2049a3d8..4c2ca94eec87 100644 --- a/scripts/cxx-api/api-snapshots/ReactAppleReleaseCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactAppleReleaseCxx.api @@ -3163,7 +3163,6 @@ struct facebook::hermes::ISetEventLoopControl : public facebook::jsi::ICast { const char facebook::react::ViewComponentName[]; const facebook::react::EventTag facebook::react::EMPTY_EVENT_TAG; -constexpr char facebook::react::LayoutConformanceShadowNodeComponentName[]; constexpr facebook::react::ReactNativeVersionType facebook::react::ReactNativeVersion; constexpr facebook::react::Tag facebook::react::kNoTag; constexpr uint32_t facebook::react::INITIAL_BUCKETS_SIZE; @@ -3210,7 +3209,6 @@ using facebook::react::GradientDirection = std::variant; -using facebook::react::LayoutConformanceComponentDescriptor = facebook::react::ConcreteComponentDescriptor; using facebook::react::ModalHostViewSupportedOrientationsMask = uint32_t; using facebook::react::NativeMethodCallFunc = std::function; using facebook::react::PromiseSetupFunctionType = std::function)>; @@ -4017,9 +4015,6 @@ class facebook::react::JSBigString : public facebook::jsi::Buffer { public ~JSBigString() override = default; } -class facebook::react::LayoutConformanceShadowNode : public facebook::react::ConcreteShadowNode { -} - 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); @@ -5452,12 +5447,6 @@ struct facebook::react::ImageURLLoaderAttribution { public std::string queryRootName; } -struct facebook::react::LayoutConformanceProps : public facebook::react::YogaStylableProps { - public LayoutConformanceProps() = default; - public LayoutConformanceProps(const facebook::react::PropsParserContext& context, const facebook::react::LayoutConformanceProps& sourceProps, const facebook::react::RawProps& rawProps); - public facebook::react::LayoutConformance mode; -} - struct facebook::react::LayoutConstraints { public facebook::react::LayoutDirection layoutDirection; public facebook::react::Size clamp(const facebook::react::Size& size) const; diff --git a/scripts/cxx-api/api-snapshots/ReactCommonDebugCxx.api b/scripts/cxx-api/api-snapshots/ReactCommonDebugCxx.api index 6fd1e1a03a36..95213bccbd3e 100644 --- a/scripts/cxx-api/api-snapshots/ReactCommonDebugCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactCommonDebugCxx.api @@ -73,7 +73,6 @@ struct facebook::hermes::ISetEventLoopControl : public facebook::jsi::ICast { const char facebook::react::ViewComponentName[]; const facebook::react::EventTag facebook::react::EMPTY_EVENT_TAG; -constexpr char facebook::react::LayoutConformanceShadowNodeComponentName[]; constexpr facebook::react::ReactNativeVersionType facebook::react::ReactNativeVersion; constexpr facebook::react::Tag facebook::react::kNoTag; constexpr uint32_t facebook::react::INITIAL_BUCKETS_SIZE; @@ -108,7 +107,6 @@ using facebook::react::GradientDirection = std::variant; -using facebook::react::LayoutConformanceComponentDescriptor = facebook::react::ConcreteComponentDescriptor; using facebook::react::NativeMethodCallFunc = std::function; using facebook::react::PromiseSetupFunctionType = std::function)>; using facebook::react::RawPropsPropNameHash = uint32_t; @@ -833,9 +831,6 @@ class facebook::react::JSBigString : public facebook::jsi::Buffer { public ~JSBigString() override = default; } -class facebook::react::LayoutConformanceShadowNode : public facebook::react::ConcreteShadowNode { -} - 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); @@ -1842,12 +1837,6 @@ struct facebook::react::FilterFunction { public std::variant parameters; } -struct facebook::react::LayoutConformanceProps : public facebook::react::YogaStylableProps { - public LayoutConformanceProps() = default; - public LayoutConformanceProps(const facebook::react::PropsParserContext& context, const facebook::react::LayoutConformanceProps& sourceProps, const facebook::react::RawProps& rawProps); - public facebook::react::LayoutConformance mode; -} - struct facebook::react::LayoutConstraints { public facebook::react::LayoutDirection layoutDirection; public facebook::react::Size clamp(const facebook::react::Size& size) const; diff --git a/scripts/cxx-api/api-snapshots/ReactCommonNewarchCxx.api b/scripts/cxx-api/api-snapshots/ReactCommonNewarchCxx.api index e384134caa94..60b523cd7895 100644 --- a/scripts/cxx-api/api-snapshots/ReactCommonNewarchCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactCommonNewarchCxx.api @@ -73,7 +73,6 @@ struct facebook::hermes::ISetEventLoopControl : public facebook::jsi::ICast { const char facebook::react::ViewComponentName[]; const facebook::react::EventTag facebook::react::EMPTY_EVENT_TAG; -constexpr char facebook::react::LayoutConformanceShadowNodeComponentName[]; constexpr facebook::react::ReactNativeVersionType facebook::react::ReactNativeVersion; constexpr facebook::react::Tag facebook::react::kNoTag; constexpr uint32_t facebook::react::INITIAL_BUCKETS_SIZE; @@ -108,7 +107,6 @@ using facebook::react::GradientDirection = std::variant; -using facebook::react::LayoutConformanceComponentDescriptor = facebook::react::ConcreteComponentDescriptor; using facebook::react::NativeMethodCallFunc = std::function; using facebook::react::PromiseSetupFunctionType = std::function)>; using facebook::react::RawPropsPropNameHash = uint32_t; @@ -832,9 +830,6 @@ class facebook::react::JSBigString : public facebook::jsi::Buffer { public ~JSBigString() override = default; } -class facebook::react::LayoutConformanceShadowNode : public facebook::react::ConcreteShadowNode { -} - 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); @@ -1835,12 +1830,6 @@ struct facebook::react::FilterFunction { public std::variant parameters; } -struct facebook::react::LayoutConformanceProps : public facebook::react::YogaStylableProps { - public LayoutConformanceProps() = default; - public LayoutConformanceProps(const facebook::react::PropsParserContext& context, const facebook::react::LayoutConformanceProps& sourceProps, const facebook::react::RawProps& rawProps); - public facebook::react::LayoutConformance mode; -} - struct facebook::react::LayoutConstraints { public facebook::react::LayoutDirection layoutDirection; public facebook::react::Size clamp(const facebook::react::Size& size) const; diff --git a/scripts/cxx-api/api-snapshots/ReactCommonReleaseCxx.api b/scripts/cxx-api/api-snapshots/ReactCommonReleaseCxx.api index e384134caa94..60b523cd7895 100644 --- a/scripts/cxx-api/api-snapshots/ReactCommonReleaseCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactCommonReleaseCxx.api @@ -73,7 +73,6 @@ struct facebook::hermes::ISetEventLoopControl : public facebook::jsi::ICast { const char facebook::react::ViewComponentName[]; const facebook::react::EventTag facebook::react::EMPTY_EVENT_TAG; -constexpr char facebook::react::LayoutConformanceShadowNodeComponentName[]; constexpr facebook::react::ReactNativeVersionType facebook::react::ReactNativeVersion; constexpr facebook::react::Tag facebook::react::kNoTag; constexpr uint32_t facebook::react::INITIAL_BUCKETS_SIZE; @@ -108,7 +107,6 @@ using facebook::react::GradientDirection = std::variant; -using facebook::react::LayoutConformanceComponentDescriptor = facebook::react::ConcreteComponentDescriptor; using facebook::react::NativeMethodCallFunc = std::function; using facebook::react::PromiseSetupFunctionType = std::function)>; using facebook::react::RawPropsPropNameHash = uint32_t; @@ -832,9 +830,6 @@ class facebook::react::JSBigString : public facebook::jsi::Buffer { public ~JSBigString() override = default; } -class facebook::react::LayoutConformanceShadowNode : public facebook::react::ConcreteShadowNode { -} - 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); @@ -1835,12 +1830,6 @@ struct facebook::react::FilterFunction { public std::variant parameters; } -struct facebook::react::LayoutConformanceProps : public facebook::react::YogaStylableProps { - public LayoutConformanceProps() = default; - public LayoutConformanceProps(const facebook::react::PropsParserContext& context, const facebook::react::LayoutConformanceProps& sourceProps, const facebook::react::RawProps& rawProps); - public facebook::react::LayoutConformance mode; -} - struct facebook::react::LayoutConstraints { public facebook::react::LayoutDirection layoutDirection; public facebook::react::Size clamp(const facebook::react::Size& size) const; From 19b89a302aaa48784151ab698d877f921ecc85fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dawid=20Ma=C5=82ecki?= Date: Mon, 12 Oct 2026 06:05:57 -0700 Subject: [PATCH 2/4] Make TurboModule host integration headers for-frameworks Summary: Move the following `react/nativemodule/core` headers from the public tier to the for-frameworks tier: - `TurboModuleBinding.h` - not called by native module authors, - `JavaInteropTurboModule.h` (Android) and `RCTInteropTurboModule.h` (iOS) - legacy The C++ API snapshots are regenerated: these symbols are removed from the Debug, Release and Newarch snapshots and stay in the Frameworks snapshots. Changelog: [Internal] Differential Revision: D124104733 --- .../core/React/NativeModuleCore.h | 2 -- .../core/ReactCommon/TurboModuleBinding.h | 5 ++--- .../ReactCommon/JavaInteropTurboModule.h | 6 ++--- .../ios/ReactCommon/RCTInteropTurboModule.h | 2 ++ .../ios/ReactCommon/RCTTurboModuleManager.mm | 1 + .../api-snapshots/ReactAndroidDebugCxx.api | 19 ---------------- .../api-snapshots/ReactAndroidNewarchCxx.api | 19 ---------------- .../api-snapshots/ReactAndroidReleaseCxx.api | 19 ---------------- .../api-snapshots/ReactAppleDebugCxx.api | 22 ------------------- .../api-snapshots/ReactAppleNewarchCxx.api | 22 ------------------- .../api-snapshots/ReactAppleReleaseCxx.api | 22 ------------------- .../api-snapshots/ReactCommonDebugCxx.api | 6 ----- .../api-snapshots/ReactCommonNewarchCxx.api | 6 ----- .../api-snapshots/ReactCommonReleaseCxx.api | 6 ----- 14 files changed, 7 insertions(+), 150 deletions(-) diff --git a/packages/react-native/ReactCommon/react/nativemodule/core/React/NativeModuleCore.h b/packages/react-native/ReactCommon/react/nativemodule/core/React/NativeModuleCore.h index 3428575914d7..3c94e2cadd66 100644 --- a/packages/react-native/ReactCommon/react/nativemodule/core/React/NativeModuleCore.h +++ b/packages/react-native/ReactCommon/react/nativemodule/core/React/NativeModuleCore.h @@ -33,13 +33,11 @@ #include #include -#include #include #include #include #ifdef ANDROID -#include #include #endif diff --git a/packages/react-native/ReactCommon/react/nativemodule/core/ReactCommon/TurboModuleBinding.h b/packages/react-native/ReactCommon/react/nativemodule/core/ReactCommon/TurboModuleBinding.h index ca0990fd4f63..dc3d64711d2b 100644 --- a/packages/react-native/ReactCommon/react/nativemodule/core/ReactCommon/TurboModuleBinding.h +++ b/packages/react-native/ReactCommon/react/nativemodule/core/ReactCommon/TurboModuleBinding.h @@ -7,15 +7,14 @@ #pragma once -#include +#include #include #include +#include #include -#include - namespace facebook::react { class BridgelessNativeModuleProxy; diff --git a/packages/react-native/ReactCommon/react/nativemodule/core/platform/android/ReactCommon/JavaInteropTurboModule.h b/packages/react-native/ReactCommon/react/nativemodule/core/platform/android/ReactCommon/JavaInteropTurboModule.h index 14a0a95b6456..59756d18ffa8 100644 --- a/packages/react-native/ReactCommon/react/nativemodule/core/platform/android/ReactCommon/JavaInteropTurboModule.h +++ b/packages/react-native/ReactCommon/react/nativemodule/core/platform/android/ReactCommon/JavaInteropTurboModule.h @@ -7,19 +7,17 @@ #pragma once -#include +#include #ifndef RCT_REMOVE_LEGACY_MODULE_INTEROP #include #include -#include +#include #include #include -#include "JavaTurboModule.h" - namespace facebook::react { class JSI_EXPORT JavaInteropTurboModule : public JavaTurboModule { diff --git a/packages/react-native/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTInteropTurboModule.h b/packages/react-native/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTInteropTurboModule.h index 957be1e85147..2b6ccc8847f9 100644 --- a/packages/react-native/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTInteropTurboModule.h +++ b/packages/react-native/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTInteropTurboModule.h @@ -7,6 +7,8 @@ #pragma once +#include + #ifndef RCT_REMOVE_LEGACY_MODULE_INTEROP #import diff --git a/packages/react-native/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModuleManager.mm b/packages/react-native/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModuleManager.mm index 10f87ec53f89..83cfe2308b63 100644 --- a/packages/react-native/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModuleManager.mm +++ b/packages/react-native/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModuleManager.mm @@ -28,6 +28,7 @@ #import #import #import +#import #import using namespace facebook; diff --git a/scripts/cxx-api/api-snapshots/ReactAndroidDebugCxx.api b/scripts/cxx-api/api-snapshots/ReactAndroidDebugCxx.api index 3119d01468a3..d76ed6d96171 100644 --- a/scripts/cxx-api/api-snapshots/ReactAndroidDebugCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactAndroidDebugCxx.api @@ -1683,19 +1683,6 @@ class facebook::react::JWritableMapBuffer : public facebook::jni::JavaClass& methodDescriptors); - public virtual std::vector getPropertyNames(facebook::jsi::Runtime& runtime) override; -} - -struct facebook::react::JavaInteropTurboModule::MethodDescriptor { - public facebook::react::TurboModuleMethodValueKind jsiReturnKind; - public int jsArgCount; - public std::string jniSignature; - public std::string methodName; -} - class facebook::react::JavaMessageQueueThread : public facebook::jni::JavaClass { public static constexpr auto kJavaDescriptor; } @@ -2484,12 +2471,6 @@ struct facebook::react::TurboModule::MethodMetadata { public size_t argCount; } -class facebook::react::TurboModuleBinding { - public static void install(facebook::jsi::Runtime& runtime, TurboModuleProviderFunctionType&& moduleProvider, TurboModuleProviderFunctionType&& legacyModuleProvider = nullptr, std::shared_ptr longLivedObjectCollection = nullptr); - public static void install(facebook::jsi::Runtime& runtime, facebook::react::TurboModuleProviderFunctionTypeWithRuntime&& moduleProvider, facebook::react::TurboModuleProviderFunctionTypeWithRuntime&& legacyModuleProvider = nullptr, std::shared_ptr longLivedObjectCollection = nullptr); - public ~TurboModuleBinding(); -} - class facebook::react::TurboModuleManager : public jni::HybridClass { public static constexpr auto kJavaDescriptor; public static jni::local_ref initHybrid(jni::alias_ref, jni::alias_ref jsCallInvokerHolder, jni::alias_ref nativeMethodCallInvokerHolder, jni::alias_ref delegate); diff --git a/scripts/cxx-api/api-snapshots/ReactAndroidNewarchCxx.api b/scripts/cxx-api/api-snapshots/ReactAndroidNewarchCxx.api index fe587a5eb368..b9451cb7a6b9 100644 --- a/scripts/cxx-api/api-snapshots/ReactAndroidNewarchCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactAndroidNewarchCxx.api @@ -1682,19 +1682,6 @@ class facebook::react::JWritableMapBuffer : public facebook::jni::JavaClass& methodDescriptors); - public virtual std::vector getPropertyNames(facebook::jsi::Runtime& runtime) override; -} - -struct facebook::react::JavaInteropTurboModule::MethodDescriptor { - public facebook::react::TurboModuleMethodValueKind jsiReturnKind; - public int jsArgCount; - public std::string jniSignature; - public std::string methodName; -} - class facebook::react::JavaMessageQueueThread : public facebook::jni::JavaClass { public static constexpr auto kJavaDescriptor; } @@ -2477,12 +2464,6 @@ struct facebook::react::TurboModule::MethodMetadata { public size_t argCount; } -class facebook::react::TurboModuleBinding { - public static void install(facebook::jsi::Runtime& runtime, TurboModuleProviderFunctionType&& moduleProvider, TurboModuleProviderFunctionType&& legacyModuleProvider = nullptr, std::shared_ptr longLivedObjectCollection = nullptr); - public static void install(facebook::jsi::Runtime& runtime, facebook::react::TurboModuleProviderFunctionTypeWithRuntime&& moduleProvider, facebook::react::TurboModuleProviderFunctionTypeWithRuntime&& legacyModuleProvider = nullptr, std::shared_ptr longLivedObjectCollection = nullptr); - public ~TurboModuleBinding(); -} - class facebook::react::TurboModuleManager : public jni::HybridClass { public static constexpr auto kJavaDescriptor; public static jni::local_ref initHybrid(jni::alias_ref, jni::alias_ref jsCallInvokerHolder, jni::alias_ref nativeMethodCallInvokerHolder, jni::alias_ref delegate); diff --git a/scripts/cxx-api/api-snapshots/ReactAndroidReleaseCxx.api b/scripts/cxx-api/api-snapshots/ReactAndroidReleaseCxx.api index fe587a5eb368..b9451cb7a6b9 100644 --- a/scripts/cxx-api/api-snapshots/ReactAndroidReleaseCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactAndroidReleaseCxx.api @@ -1682,19 +1682,6 @@ class facebook::react::JWritableMapBuffer : public facebook::jni::JavaClass& methodDescriptors); - public virtual std::vector getPropertyNames(facebook::jsi::Runtime& runtime) override; -} - -struct facebook::react::JavaInteropTurboModule::MethodDescriptor { - public facebook::react::TurboModuleMethodValueKind jsiReturnKind; - public int jsArgCount; - public std::string jniSignature; - public std::string methodName; -} - class facebook::react::JavaMessageQueueThread : public facebook::jni::JavaClass { public static constexpr auto kJavaDescriptor; } @@ -2477,12 +2464,6 @@ struct facebook::react::TurboModule::MethodMetadata { public size_t argCount; } -class facebook::react::TurboModuleBinding { - public static void install(facebook::jsi::Runtime& runtime, TurboModuleProviderFunctionType&& moduleProvider, TurboModuleProviderFunctionType&& legacyModuleProvider = nullptr, std::shared_ptr longLivedObjectCollection = nullptr); - public static void install(facebook::jsi::Runtime& runtime, facebook::react::TurboModuleProviderFunctionTypeWithRuntime&& moduleProvider, facebook::react::TurboModuleProviderFunctionTypeWithRuntime&& legacyModuleProvider = nullptr, std::shared_ptr longLivedObjectCollection = nullptr); - public ~TurboModuleBinding(); -} - class facebook::react::TurboModuleManager : public jni::HybridClass { public static constexpr auto kJavaDescriptor; public static jni::local_ref initHybrid(jni::alias_ref, jni::alias_ref jsCallInvokerHolder, jni::alias_ref nativeMethodCallInvokerHolder, jni::alias_ref delegate); diff --git a/scripts/cxx-api/api-snapshots/ReactAppleDebugCxx.api b/scripts/cxx-api/api-snapshots/ReactAppleDebugCxx.api index e6347706efe0..4c1d41d6e1a5 100644 --- a/scripts/cxx-api/api-snapshots/ReactAppleDebugCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactAppleDebugCxx.api @@ -4359,22 +4359,6 @@ class facebook::react::NativeWebSocketModuleSpecJSI : public facebook::react::Ob public NativeWebSocketModuleSpecJSI(const facebook::react::ObjCTurboModule::InitParams& params); } -class facebook::react::ObjCInteropTurboModule : public facebook::react::ObjCTurboModule { - protected virtual NSString* getArgumentTypeName(facebook::jsi::Runtime& runtime, NSString* methodName, int argIndex) override; - protected virtual facebook::jsi::Value convertReturnIdToJSIValue(facebook::jsi::Runtime& runtime, const char* methodName, facebook::react::TurboModuleMethodValueKind returnType, id result) override; - protected virtual facebook::jsi::Value create(facebook::jsi::Runtime& runtime, const facebook::jsi::PropNameID& propName) override; - protected virtual void setInvocationArg(facebook::jsi::Runtime& runtime, const char* methodName, const std::string& objCArgType, const facebook::jsi::Value& arg, size_t i, NSInvocation* inv, NSMutableArray* retainedObjectsForInvocation, bool mustCopyBytes) override; - public ObjCInteropTurboModule(const facebook::react::ObjCTurboModule::InitParams& params); - public virtual std::vector getPropertyNames(facebook::jsi::Runtime& runtime) override; -} - -struct facebook::react::ObjCInteropTurboModule::MethodDescriptor { - public SEL selector; - public facebook::react::TurboModuleMethodValueKind jsReturnKind; - public size_t jsArgCount; - public std::string methodName; -} - class facebook::react::ObjCTurboModule : public facebook::react::TurboModule { protected virtual NSString* getArgumentTypeName(facebook::jsi::Runtime& runtime, NSString* methodName, int argIndex); protected virtual facebook::jsi::Value convertReturnIdToJSIValue(facebook::jsi::Runtime& runtime, const char* methodName, facebook::react::TurboModuleMethodValueKind returnType, id result); @@ -4718,12 +4702,6 @@ struct facebook::react::TurboModule::MethodMetadata { public size_t argCount; } -class facebook::react::TurboModuleBinding { - public static void install(facebook::jsi::Runtime& runtime, TurboModuleProviderFunctionType&& moduleProvider, TurboModuleProviderFunctionType&& legacyModuleProvider = nullptr, std::shared_ptr longLivedObjectCollection = nullptr); - public static void install(facebook::jsi::Runtime& runtime, facebook::react::TurboModuleProviderFunctionTypeWithRuntime&& moduleProvider, facebook::react::TurboModuleProviderFunctionTypeWithRuntime&& legacyModuleProvider = nullptr, std::shared_ptr longLivedObjectCollection = nullptr); - public ~TurboModuleBinding(); -} - class facebook::react::TurboModuleWithJSIBindings { public static void installJSIBindings(const std::shared_ptr& cxxModule, facebook::jsi::Runtime& runtime); public virtual ~TurboModuleWithJSIBindings() = default; diff --git a/scripts/cxx-api/api-snapshots/ReactAppleNewarchCxx.api b/scripts/cxx-api/api-snapshots/ReactAppleNewarchCxx.api index b7b527c6e6f5..5cf56f955825 100644 --- a/scripts/cxx-api/api-snapshots/ReactAppleNewarchCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactAppleNewarchCxx.api @@ -4350,22 +4350,6 @@ class facebook::react::NativeWebSocketModuleSpecJSI : public facebook::react::Ob public NativeWebSocketModuleSpecJSI(const facebook::react::ObjCTurboModule::InitParams& params); } -class facebook::react::ObjCInteropTurboModule : public facebook::react::ObjCTurboModule { - protected virtual NSString* getArgumentTypeName(facebook::jsi::Runtime& runtime, NSString* methodName, int argIndex) override; - protected virtual facebook::jsi::Value convertReturnIdToJSIValue(facebook::jsi::Runtime& runtime, const char* methodName, facebook::react::TurboModuleMethodValueKind returnType, id result) override; - protected virtual facebook::jsi::Value create(facebook::jsi::Runtime& runtime, const facebook::jsi::PropNameID& propName) override; - protected virtual void setInvocationArg(facebook::jsi::Runtime& runtime, const char* methodName, const std::string& objCArgType, const facebook::jsi::Value& arg, size_t i, NSInvocation* inv, NSMutableArray* retainedObjectsForInvocation, bool mustCopyBytes) override; - public ObjCInteropTurboModule(const facebook::react::ObjCTurboModule::InitParams& params); - public virtual std::vector getPropertyNames(facebook::jsi::Runtime& runtime) override; -} - -struct facebook::react::ObjCInteropTurboModule::MethodDescriptor { - public SEL selector; - public facebook::react::TurboModuleMethodValueKind jsReturnKind; - public size_t jsArgCount; - public std::string methodName; -} - class facebook::react::ObjCTurboModule : public facebook::react::TurboModule { protected virtual NSString* getArgumentTypeName(facebook::jsi::Runtime& runtime, NSString* methodName, int argIndex); protected virtual facebook::jsi::Value convertReturnIdToJSIValue(facebook::jsi::Runtime& runtime, const char* methodName, facebook::react::TurboModuleMethodValueKind returnType, id result); @@ -4703,12 +4687,6 @@ struct facebook::react::TurboModule::MethodMetadata { public size_t argCount; } -class facebook::react::TurboModuleBinding { - public static void install(facebook::jsi::Runtime& runtime, TurboModuleProviderFunctionType&& moduleProvider, TurboModuleProviderFunctionType&& legacyModuleProvider = nullptr, std::shared_ptr longLivedObjectCollection = nullptr); - public static void install(facebook::jsi::Runtime& runtime, facebook::react::TurboModuleProviderFunctionTypeWithRuntime&& moduleProvider, facebook::react::TurboModuleProviderFunctionTypeWithRuntime&& legacyModuleProvider = nullptr, std::shared_ptr longLivedObjectCollection = nullptr); - public ~TurboModuleBinding(); -} - class facebook::react::TurboModuleWithJSIBindings { public static void installJSIBindings(const std::shared_ptr& cxxModule, facebook::jsi::Runtime& runtime); public virtual ~TurboModuleWithJSIBindings() = default; diff --git a/scripts/cxx-api/api-snapshots/ReactAppleReleaseCxx.api b/scripts/cxx-api/api-snapshots/ReactAppleReleaseCxx.api index 4c2ca94eec87..042d96bda851 100644 --- a/scripts/cxx-api/api-snapshots/ReactAppleReleaseCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactAppleReleaseCxx.api @@ -4358,22 +4358,6 @@ class facebook::react::NativeWebSocketModuleSpecJSI : public facebook::react::Ob public NativeWebSocketModuleSpecJSI(const facebook::react::ObjCTurboModule::InitParams& params); } -class facebook::react::ObjCInteropTurboModule : public facebook::react::ObjCTurboModule { - protected virtual NSString* getArgumentTypeName(facebook::jsi::Runtime& runtime, NSString* methodName, int argIndex) override; - protected virtual facebook::jsi::Value convertReturnIdToJSIValue(facebook::jsi::Runtime& runtime, const char* methodName, facebook::react::TurboModuleMethodValueKind returnType, id result) override; - protected virtual facebook::jsi::Value create(facebook::jsi::Runtime& runtime, const facebook::jsi::PropNameID& propName) override; - protected virtual void setInvocationArg(facebook::jsi::Runtime& runtime, const char* methodName, const std::string& objCArgType, const facebook::jsi::Value& arg, size_t i, NSInvocation* inv, NSMutableArray* retainedObjectsForInvocation, bool mustCopyBytes) override; - public ObjCInteropTurboModule(const facebook::react::ObjCTurboModule::InitParams& params); - public virtual std::vector getPropertyNames(facebook::jsi::Runtime& runtime) override; -} - -struct facebook::react::ObjCInteropTurboModule::MethodDescriptor { - public SEL selector; - public facebook::react::TurboModuleMethodValueKind jsReturnKind; - public size_t jsArgCount; - public std::string methodName; -} - class facebook::react::ObjCTurboModule : public facebook::react::TurboModule { protected virtual NSString* getArgumentTypeName(facebook::jsi::Runtime& runtime, NSString* methodName, int argIndex); protected virtual facebook::jsi::Value convertReturnIdToJSIValue(facebook::jsi::Runtime& runtime, const char* methodName, facebook::react::TurboModuleMethodValueKind returnType, id result); @@ -4711,12 +4695,6 @@ struct facebook::react::TurboModule::MethodMetadata { public size_t argCount; } -class facebook::react::TurboModuleBinding { - public static void install(facebook::jsi::Runtime& runtime, TurboModuleProviderFunctionType&& moduleProvider, TurboModuleProviderFunctionType&& legacyModuleProvider = nullptr, std::shared_ptr longLivedObjectCollection = nullptr); - public static void install(facebook::jsi::Runtime& runtime, facebook::react::TurboModuleProviderFunctionTypeWithRuntime&& moduleProvider, facebook::react::TurboModuleProviderFunctionTypeWithRuntime&& legacyModuleProvider = nullptr, std::shared_ptr longLivedObjectCollection = nullptr); - public ~TurboModuleBinding(); -} - class facebook::react::TurboModuleWithJSIBindings { public static void installJSIBindings(const std::shared_ptr& cxxModule, facebook::jsi::Runtime& runtime); public virtual ~TurboModuleWithJSIBindings() = default; diff --git a/scripts/cxx-api/api-snapshots/ReactCommonDebugCxx.api b/scripts/cxx-api/api-snapshots/ReactCommonDebugCxx.api index 95213bccbd3e..2d9927d6f131 100644 --- a/scripts/cxx-api/api-snapshots/ReactCommonDebugCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactCommonDebugCxx.api @@ -1202,12 +1202,6 @@ struct facebook::react::TurboModule::MethodMetadata { public size_t argCount; } -class facebook::react::TurboModuleBinding { - public static void install(facebook::jsi::Runtime& runtime, TurboModuleProviderFunctionType&& moduleProvider, TurboModuleProviderFunctionType&& legacyModuleProvider = nullptr, std::shared_ptr longLivedObjectCollection = nullptr); - public static void install(facebook::jsi::Runtime& runtime, facebook::react::TurboModuleProviderFunctionTypeWithRuntime&& moduleProvider, facebook::react::TurboModuleProviderFunctionTypeWithRuntime&& legacyModuleProvider = nullptr, std::shared_ptr longLivedObjectCollection = nullptr); - public ~TurboModuleBinding(); -} - class facebook::react::TurboModuleWithJSIBindings { public static void installJSIBindings(const std::shared_ptr& cxxModule, facebook::jsi::Runtime& runtime); public virtual ~TurboModuleWithJSIBindings() = default; diff --git a/scripts/cxx-api/api-snapshots/ReactCommonNewarchCxx.api b/scripts/cxx-api/api-snapshots/ReactCommonNewarchCxx.api index 60b523cd7895..b41bd139b9c2 100644 --- a/scripts/cxx-api/api-snapshots/ReactCommonNewarchCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactCommonNewarchCxx.api @@ -1195,12 +1195,6 @@ struct facebook::react::TurboModule::MethodMetadata { public size_t argCount; } -class facebook::react::TurboModuleBinding { - public static void install(facebook::jsi::Runtime& runtime, TurboModuleProviderFunctionType&& moduleProvider, TurboModuleProviderFunctionType&& legacyModuleProvider = nullptr, std::shared_ptr longLivedObjectCollection = nullptr); - public static void install(facebook::jsi::Runtime& runtime, facebook::react::TurboModuleProviderFunctionTypeWithRuntime&& moduleProvider, facebook::react::TurboModuleProviderFunctionTypeWithRuntime&& legacyModuleProvider = nullptr, std::shared_ptr longLivedObjectCollection = nullptr); - public ~TurboModuleBinding(); -} - class facebook::react::TurboModuleWithJSIBindings { public static void installJSIBindings(const std::shared_ptr& cxxModule, facebook::jsi::Runtime& runtime); public virtual ~TurboModuleWithJSIBindings() = default; diff --git a/scripts/cxx-api/api-snapshots/ReactCommonReleaseCxx.api b/scripts/cxx-api/api-snapshots/ReactCommonReleaseCxx.api index 60b523cd7895..b41bd139b9c2 100644 --- a/scripts/cxx-api/api-snapshots/ReactCommonReleaseCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactCommonReleaseCxx.api @@ -1195,12 +1195,6 @@ struct facebook::react::TurboModule::MethodMetadata { public size_t argCount; } -class facebook::react::TurboModuleBinding { - public static void install(facebook::jsi::Runtime& runtime, TurboModuleProviderFunctionType&& moduleProvider, TurboModuleProviderFunctionType&& legacyModuleProvider = nullptr, std::shared_ptr longLivedObjectCollection = nullptr); - public static void install(facebook::jsi::Runtime& runtime, facebook::react::TurboModuleProviderFunctionTypeWithRuntime&& moduleProvider, facebook::react::TurboModuleProviderFunctionTypeWithRuntime&& legacyModuleProvider = nullptr, std::shared_ptr longLivedObjectCollection = nullptr); - public ~TurboModuleBinding(); -} - class facebook::react::TurboModuleWithJSIBindings { public static void installJSIBindings(const std::shared_ptr& cxxModule, facebook::jsi::Runtime& runtime); public virtual ~TurboModuleWithJSIBindings() = default; From 47cb233238012b290029200b2d272b2113ff557c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dawid=20Ma=C5=82ecki?= Date: Mon, 12 Oct 2026 06:05:57 -0700 Subject: [PATCH 3/4] Classify cxxreact/JSBundleType.h as for-frameworks Summary: `JSBundleType.h` exposes bundle-format detection internals (`BundleHeader`, `ScriptTag`, `parseTypeFromHeader`, `isHermesBytecodeBundle`). Within React Native it is only used by the bundle loaders, but out-of-tree platforms read `BundleHeader` directly, so it is classified as "for frameworks" rather than private. Remove `JSBundleType.h` from the `` umbrella: a public umbrella that includes it would keep its symbols public regardless of its guard. Frameworks include `` directly. The C++ API snapshots are regenerated: these symbols are removed from the Debug, Release and Newarch snapshots and stay in the Frameworks snapshots. Changelog: [Internal] Differential Revision: D124104985 --- .../ReactCommon/cxxreact/JSBundleType.h | 2 +- .../ReactCommon/cxxreact/React/JSBigString.h | 1 - .../api-snapshots/ReactAndroidDebugCxx.api | 20 ------------------- .../api-snapshots/ReactAndroidNewarchCxx.api | 20 ------------------- .../api-snapshots/ReactAndroidReleaseCxx.api | 20 ------------------- .../api-snapshots/ReactAppleDebugCxx.api | 20 ------------------- .../api-snapshots/ReactAppleNewarchCxx.api | 20 ------------------- .../api-snapshots/ReactAppleReleaseCxx.api | 20 ------------------- .../api-snapshots/ReactCommonDebugCxx.api | 20 ------------------- .../api-snapshots/ReactCommonNewarchCxx.api | 20 ------------------- .../api-snapshots/ReactCommonReleaseCxx.api | 20 ------------------- 11 files changed, 1 insertion(+), 182 deletions(-) diff --git a/packages/react-native/ReactCommon/cxxreact/JSBundleType.h b/packages/react-native/ReactCommon/cxxreact/JSBundleType.h index e31f20a5f9c0..f002744d1dc7 100644 --- a/packages/react-native/ReactCommon/cxxreact/JSBundleType.h +++ b/packages/react-native/ReactCommon/cxxreact/JSBundleType.h @@ -7,7 +7,7 @@ #pragma once -#include +#include #include #include diff --git a/packages/react-native/ReactCommon/cxxreact/React/JSBigString.h b/packages/react-native/ReactCommon/cxxreact/React/JSBigString.h index 0b068301c5fa..14e701bc417c 100644 --- a/packages/react-native/ReactCommon/cxxreact/React/JSBigString.h +++ b/packages/react-native/ReactCommon/cxxreact/React/JSBigString.h @@ -31,7 +31,6 @@ #define RN_UMBRELLA_CONTEXT 1 #include -#include #undef RN_UMBRELLA_CONTEXT #pragma pop_macro("RN_UMBRELLA_CONTEXT") diff --git a/scripts/cxx-api/api-snapshots/ReactAndroidDebugCxx.api b/scripts/cxx-api/api-snapshots/ReactAndroidDebugCxx.api index d76ed6d96171..acd394275a1e 100644 --- a/scripts/cxx-api/api-snapshots/ReactAndroidDebugCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactAndroidDebugCxx.api @@ -491,9 +491,7 @@ YGDirection facebook::react::yogaDirectionFromLayoutDirection(facebook::react::L bool facebook::react::areBorderRadiiCircular(const facebook::react::BorderRadii& borderRadii); bool facebook::react::hostPlatformColorIsColorMeaningful(facebook::react::Color color) noexcept; bool facebook::react::isColorMeaningful(const facebook::react::SharedColor& color) noexcept; -bool facebook::react::isHermesBytecodeBundle(const facebook::react::BundleHeader& header); bool facebook::react::isZero(facebook::react::Float n); -const char* facebook::react::stringForScriptTag(const facebook::react::ScriptTag& tag); constexpr auto facebook::react::to_underlying(auto e) noexcept; constexpr char facebook::react::toLower(char c); constexpr uint32_t facebook::react::fnv1aLowercase(std::string_view string); @@ -510,7 +508,6 @@ facebook::react::Float facebook::react::floatFromYogaOptionalFloat(facebook::yog facebook::react::LayoutMetrics facebook::react::layoutMetricsFromYogaNode(facebook::yoga::Node& yogaNode); facebook::react::Rect facebook::react::insetBy(const facebook::react::Rect& rect, const facebook::react::EdgeInsets& insets) noexcept; facebook::react::Rect facebook::react::outsetBy(const facebook::react::Rect& rect, const facebook::react::EdgeInsets& outsets) noexcept; -facebook::react::ScriptTag facebook::react::parseTypeFromHeader(const facebook::react::BundleHeader& header); facebook::react::SharedColor facebook::react::blackColor(); facebook::react::SharedColor facebook::react::clearColor(); facebook::react::SharedColor facebook::react::colorFromComponents(facebook::react::ColorComponents components); @@ -3004,11 +3001,6 @@ enum facebook::react::SchedulerPriority : int { UserBlockingPriority, } -enum facebook::react::ScriptTag { - RAMBundle, - String, -} - enum facebook::react::TransformOperationType : uint8_t { Arbitrary, Identity, @@ -3170,13 +3162,6 @@ struct facebook::react::Bridging { public static void fromJs(facebook::jsi::Runtime&, const facebook::jsi::Value&); } -struct facebook::react::BundleHeader { - public BundleHeader(); - public facebook::react::Magic32 magic32; - public uint32_t version; - public uint64_t magic64; -} - struct facebook::react::Color { public bool isDefined; public constexpr Color() = default; @@ -3391,11 +3376,6 @@ struct facebook::react::LinearGradient { public std::vector colorStops; } -struct facebook::react::Magic32 { - public uint32_t reserved_; - public uint32_t value; -} - struct facebook::react::ModalHostViewSupportedOrientationsMaskWrapped { public facebook::react::ModalHostViewSupportedOrientationsMask value; } diff --git a/scripts/cxx-api/api-snapshots/ReactAndroidNewarchCxx.api b/scripts/cxx-api/api-snapshots/ReactAndroidNewarchCxx.api index b9451cb7a6b9..92b53937a86d 100644 --- a/scripts/cxx-api/api-snapshots/ReactAndroidNewarchCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactAndroidNewarchCxx.api @@ -491,9 +491,7 @@ YGDirection facebook::react::yogaDirectionFromLayoutDirection(facebook::react::L bool facebook::react::areBorderRadiiCircular(const facebook::react::BorderRadii& borderRadii); bool facebook::react::hostPlatformColorIsColorMeaningful(facebook::react::Color color) noexcept; bool facebook::react::isColorMeaningful(const facebook::react::SharedColor& color) noexcept; -bool facebook::react::isHermesBytecodeBundle(const facebook::react::BundleHeader& header); bool facebook::react::isZero(facebook::react::Float n); -const char* facebook::react::stringForScriptTag(const facebook::react::ScriptTag& tag); constexpr auto facebook::react::to_underlying(auto e) noexcept; constexpr char facebook::react::toLower(char c); constexpr uint32_t facebook::react::fnv1aLowercase(std::string_view string); @@ -510,7 +508,6 @@ facebook::react::Float facebook::react::floatFromYogaOptionalFloat(facebook::yog facebook::react::LayoutMetrics facebook::react::layoutMetricsFromYogaNode(facebook::yoga::Node& yogaNode); facebook::react::Rect facebook::react::insetBy(const facebook::react::Rect& rect, const facebook::react::EdgeInsets& insets) noexcept; facebook::react::Rect facebook::react::outsetBy(const facebook::react::Rect& rect, const facebook::react::EdgeInsets& outsets) noexcept; -facebook::react::ScriptTag facebook::react::parseTypeFromHeader(const facebook::react::BundleHeader& header); facebook::react::SharedColor facebook::react::blackColor(); facebook::react::SharedColor facebook::react::clearColor(); facebook::react::SharedColor facebook::react::colorFromComponents(facebook::react::ColorComponents components); @@ -2997,11 +2994,6 @@ enum facebook::react::SchedulerPriority : int { UserBlockingPriority, } -enum facebook::react::ScriptTag { - RAMBundle, - String, -} - enum facebook::react::TransformOperationType : uint8_t { Arbitrary, Identity, @@ -3163,13 +3155,6 @@ struct facebook::react::Bridging { public static void fromJs(facebook::jsi::Runtime&, const facebook::jsi::Value&); } -struct facebook::react::BundleHeader { - public BundleHeader(); - public facebook::react::Magic32 magic32; - public uint32_t version; - public uint64_t magic64; -} - struct facebook::react::Color { public bool isDefined; public constexpr Color() = default; @@ -3384,11 +3369,6 @@ struct facebook::react::LinearGradient { public std::vector colorStops; } -struct facebook::react::Magic32 { - public uint32_t reserved_; - public uint32_t value; -} - struct facebook::react::ModalHostViewSupportedOrientationsMaskWrapped { public facebook::react::ModalHostViewSupportedOrientationsMask value; } diff --git a/scripts/cxx-api/api-snapshots/ReactAndroidReleaseCxx.api b/scripts/cxx-api/api-snapshots/ReactAndroidReleaseCxx.api index b9451cb7a6b9..92b53937a86d 100644 --- a/scripts/cxx-api/api-snapshots/ReactAndroidReleaseCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactAndroidReleaseCxx.api @@ -491,9 +491,7 @@ YGDirection facebook::react::yogaDirectionFromLayoutDirection(facebook::react::L bool facebook::react::areBorderRadiiCircular(const facebook::react::BorderRadii& borderRadii); bool facebook::react::hostPlatformColorIsColorMeaningful(facebook::react::Color color) noexcept; bool facebook::react::isColorMeaningful(const facebook::react::SharedColor& color) noexcept; -bool facebook::react::isHermesBytecodeBundle(const facebook::react::BundleHeader& header); bool facebook::react::isZero(facebook::react::Float n); -const char* facebook::react::stringForScriptTag(const facebook::react::ScriptTag& tag); constexpr auto facebook::react::to_underlying(auto e) noexcept; constexpr char facebook::react::toLower(char c); constexpr uint32_t facebook::react::fnv1aLowercase(std::string_view string); @@ -510,7 +508,6 @@ facebook::react::Float facebook::react::floatFromYogaOptionalFloat(facebook::yog facebook::react::LayoutMetrics facebook::react::layoutMetricsFromYogaNode(facebook::yoga::Node& yogaNode); facebook::react::Rect facebook::react::insetBy(const facebook::react::Rect& rect, const facebook::react::EdgeInsets& insets) noexcept; facebook::react::Rect facebook::react::outsetBy(const facebook::react::Rect& rect, const facebook::react::EdgeInsets& outsets) noexcept; -facebook::react::ScriptTag facebook::react::parseTypeFromHeader(const facebook::react::BundleHeader& header); facebook::react::SharedColor facebook::react::blackColor(); facebook::react::SharedColor facebook::react::clearColor(); facebook::react::SharedColor facebook::react::colorFromComponents(facebook::react::ColorComponents components); @@ -2997,11 +2994,6 @@ enum facebook::react::SchedulerPriority : int { UserBlockingPriority, } -enum facebook::react::ScriptTag { - RAMBundle, - String, -} - enum facebook::react::TransformOperationType : uint8_t { Arbitrary, Identity, @@ -3163,13 +3155,6 @@ struct facebook::react::Bridging { public static void fromJs(facebook::jsi::Runtime&, const facebook::jsi::Value&); } -struct facebook::react::BundleHeader { - public BundleHeader(); - public facebook::react::Magic32 magic32; - public uint32_t version; - public uint64_t magic64; -} - struct facebook::react::Color { public bool isDefined; public constexpr Color() = default; @@ -3384,11 +3369,6 @@ struct facebook::react::LinearGradient { public std::vector colorStops; } -struct facebook::react::Magic32 { - public uint32_t reserved_; - public uint32_t value; -} - struct facebook::react::ModalHostViewSupportedOrientationsMaskWrapped { public facebook::react::ModalHostViewSupportedOrientationsMask value; } diff --git a/scripts/cxx-api/api-snapshots/ReactAppleDebugCxx.api b/scripts/cxx-api/api-snapshots/ReactAppleDebugCxx.api index 4c1d41d6e1a5..814a8005e03b 100644 --- a/scripts/cxx-api/api-snapshots/ReactAppleDebugCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactAppleDebugCxx.api @@ -3269,9 +3269,7 @@ YGDirection facebook::react::yogaDirectionFromLayoutDirection(facebook::react::L bool facebook::react::areBorderRadiiCircular(const facebook::react::BorderRadii& borderRadii); bool facebook::react::hostPlatformColorIsColorMeaningful(facebook::react::Color color) noexcept; bool facebook::react::isColorMeaningful(const facebook::react::SharedColor& color) noexcept; -bool facebook::react::isHermesBytecodeBundle(const facebook::react::BundleHeader& header); bool facebook::react::isZero(facebook::react::Float n); -const char* facebook::react::stringForScriptTag(const facebook::react::ScriptTag& tag); constexpr auto facebook::react::to_underlying(auto e) noexcept; constexpr char facebook::react::toLower(char c); constexpr uint32_t facebook::react::fnv1aLowercase(std::string_view string); @@ -3287,7 +3285,6 @@ facebook::react::Float facebook::react::floatFromYogaOptionalFloat(facebook::yog facebook::react::LayoutMetrics facebook::react::layoutMetricsFromYogaNode(facebook::yoga::Node& yogaNode); facebook::react::Rect facebook::react::insetBy(const facebook::react::Rect& rect, const facebook::react::EdgeInsets& insets) noexcept; facebook::react::Rect facebook::react::outsetBy(const facebook::react::Rect& rect, const facebook::react::EdgeInsets& outsets) noexcept; -facebook::react::ScriptTag facebook::react::parseTypeFromHeader(const facebook::react::BundleHeader& header); facebook::react::SharedColor facebook::react::blackColor(); facebook::react::SharedColor facebook::react::clearColor(); facebook::react::SharedColor facebook::react::colorFromComponents(facebook::react::ColorComponents components); @@ -5183,11 +5180,6 @@ enum facebook::react::SchedulerPriority : int { UserBlockingPriority, } -enum facebook::react::ScriptTag { - RAMBundle, - String, -} - enum facebook::react::TransformOperationType : uint8_t { Arbitrary, Identity, @@ -5346,13 +5338,6 @@ struct facebook::react::Bridging { public static void fromJs(facebook::jsi::Runtime&, const facebook::jsi::Value&); } -struct facebook::react::BundleHeader { - public BundleHeader(); - public facebook::react::Magic32 magic32; - public uint32_t version; - public uint64_t magic64; -} - struct facebook::react::Color { public Color(); public Color(const facebook::react::ColorComponents& components); @@ -5471,11 +5456,6 @@ struct facebook::react::LinearGradient { public std::vector colorStops; } -struct facebook::react::Magic32 { - public uint32_t reserved_; - public uint32_t value; -} - struct facebook::react::ModalHostViewSupportedOrientationsMaskWrapped { public facebook::react::ModalHostViewSupportedOrientationsMask value; } diff --git a/scripts/cxx-api/api-snapshots/ReactAppleNewarchCxx.api b/scripts/cxx-api/api-snapshots/ReactAppleNewarchCxx.api index 5cf56f955825..d11bb5346436 100644 --- a/scripts/cxx-api/api-snapshots/ReactAppleNewarchCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactAppleNewarchCxx.api @@ -3261,9 +3261,7 @@ YGDirection facebook::react::yogaDirectionFromLayoutDirection(facebook::react::L bool facebook::react::areBorderRadiiCircular(const facebook::react::BorderRadii& borderRadii); bool facebook::react::hostPlatformColorIsColorMeaningful(facebook::react::Color color) noexcept; bool facebook::react::isColorMeaningful(const facebook::react::SharedColor& color) noexcept; -bool facebook::react::isHermesBytecodeBundle(const facebook::react::BundleHeader& header); bool facebook::react::isZero(facebook::react::Float n); -const char* facebook::react::stringForScriptTag(const facebook::react::ScriptTag& tag); constexpr auto facebook::react::to_underlying(auto e) noexcept; constexpr char facebook::react::toLower(char c); constexpr uint32_t facebook::react::fnv1aLowercase(std::string_view string); @@ -3279,7 +3277,6 @@ facebook::react::Float facebook::react::floatFromYogaOptionalFloat(facebook::yog facebook::react::LayoutMetrics facebook::react::layoutMetricsFromYogaNode(facebook::yoga::Node& yogaNode); facebook::react::Rect facebook::react::insetBy(const facebook::react::Rect& rect, const facebook::react::EdgeInsets& insets) noexcept; facebook::react::Rect facebook::react::outsetBy(const facebook::react::Rect& rect, const facebook::react::EdgeInsets& outsets) noexcept; -facebook::react::ScriptTag facebook::react::parseTypeFromHeader(const facebook::react::BundleHeader& header); facebook::react::SharedColor facebook::react::blackColor(); facebook::react::SharedColor facebook::react::clearColor(); facebook::react::SharedColor facebook::react::colorFromComponents(facebook::react::ColorComponents components); @@ -5168,11 +5165,6 @@ enum facebook::react::SchedulerPriority : int { UserBlockingPriority, } -enum facebook::react::ScriptTag { - RAMBundle, - String, -} - enum facebook::react::TransformOperationType : uint8_t { Arbitrary, Identity, @@ -5331,13 +5323,6 @@ struct facebook::react::Bridging { public static void fromJs(facebook::jsi::Runtime&, const facebook::jsi::Value&); } -struct facebook::react::BundleHeader { - public BundleHeader(); - public facebook::react::Magic32 magic32; - public uint32_t version; - public uint64_t magic64; -} - struct facebook::react::Color { public Color(); public Color(const facebook::react::ColorComponents& components); @@ -5456,11 +5441,6 @@ struct facebook::react::LinearGradient { public std::vector colorStops; } -struct facebook::react::Magic32 { - public uint32_t reserved_; - public uint32_t value; -} - struct facebook::react::ModalHostViewSupportedOrientationsMaskWrapped { public facebook::react::ModalHostViewSupportedOrientationsMask value; } diff --git a/scripts/cxx-api/api-snapshots/ReactAppleReleaseCxx.api b/scripts/cxx-api/api-snapshots/ReactAppleReleaseCxx.api index 042d96bda851..9ad059b588de 100644 --- a/scripts/cxx-api/api-snapshots/ReactAppleReleaseCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactAppleReleaseCxx.api @@ -3269,9 +3269,7 @@ YGDirection facebook::react::yogaDirectionFromLayoutDirection(facebook::react::L bool facebook::react::areBorderRadiiCircular(const facebook::react::BorderRadii& borderRadii); bool facebook::react::hostPlatformColorIsColorMeaningful(facebook::react::Color color) noexcept; bool facebook::react::isColorMeaningful(const facebook::react::SharedColor& color) noexcept; -bool facebook::react::isHermesBytecodeBundle(const facebook::react::BundleHeader& header); bool facebook::react::isZero(facebook::react::Float n); -const char* facebook::react::stringForScriptTag(const facebook::react::ScriptTag& tag); constexpr auto facebook::react::to_underlying(auto e) noexcept; constexpr char facebook::react::toLower(char c); constexpr uint32_t facebook::react::fnv1aLowercase(std::string_view string); @@ -3287,7 +3285,6 @@ facebook::react::Float facebook::react::floatFromYogaOptionalFloat(facebook::yog facebook::react::LayoutMetrics facebook::react::layoutMetricsFromYogaNode(facebook::yoga::Node& yogaNode); facebook::react::Rect facebook::react::insetBy(const facebook::react::Rect& rect, const facebook::react::EdgeInsets& insets) noexcept; facebook::react::Rect facebook::react::outsetBy(const facebook::react::Rect& rect, const facebook::react::EdgeInsets& outsets) noexcept; -facebook::react::ScriptTag facebook::react::parseTypeFromHeader(const facebook::react::BundleHeader& header); facebook::react::SharedColor facebook::react::blackColor(); facebook::react::SharedColor facebook::react::clearColor(); facebook::react::SharedColor facebook::react::colorFromComponents(facebook::react::ColorComponents components); @@ -5176,11 +5173,6 @@ enum facebook::react::SchedulerPriority : int { UserBlockingPriority, } -enum facebook::react::ScriptTag { - RAMBundle, - String, -} - enum facebook::react::TransformOperationType : uint8_t { Arbitrary, Identity, @@ -5339,13 +5331,6 @@ struct facebook::react::Bridging { public static void fromJs(facebook::jsi::Runtime&, const facebook::jsi::Value&); } -struct facebook::react::BundleHeader { - public BundleHeader(); - public facebook::react::Magic32 magic32; - public uint32_t version; - public uint64_t magic64; -} - struct facebook::react::Color { public Color(); public Color(const facebook::react::ColorComponents& components); @@ -5464,11 +5449,6 @@ struct facebook::react::LinearGradient { public std::vector colorStops; } -struct facebook::react::Magic32 { - public uint32_t reserved_; - public uint32_t value; -} - struct facebook::react::ModalHostViewSupportedOrientationsMaskWrapped { public facebook::react::ModalHostViewSupportedOrientationsMask value; } diff --git a/scripts/cxx-api/api-snapshots/ReactCommonDebugCxx.api b/scripts/cxx-api/api-snapshots/ReactCommonDebugCxx.api index 2d9927d6f131..15f0bf744c0d 100644 --- a/scripts/cxx-api/api-snapshots/ReactCommonDebugCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactCommonDebugCxx.api @@ -158,9 +158,7 @@ Float facebook::react::floatFromYogaOptionalFloat(facebook::yoga::FloatOptional YGDirection facebook::react::yogaDirectionFromLayoutDirection(facebook::react::LayoutDirection direction); bool facebook::react::areBorderRadiiCircular(const facebook::react::BorderRadii& borderRadii); bool facebook::react::isColorMeaningful(const facebook::react::SharedColor& color) noexcept; -bool facebook::react::isHermesBytecodeBundle(const facebook::react::BundleHeader& header); bool facebook::react::isZero(Float n); -const char* facebook::react::stringForScriptTag(const facebook::react::ScriptTag& tag); constexpr auto facebook::react::to_underlying(auto e) noexcept; constexpr char facebook::react::toLower(char c); constexpr uint32_t facebook::react::fnv1aLowercase(std::string_view string); @@ -171,7 +169,6 @@ facebook::react::DisplayType facebook::react::displayTypeFromYGDisplay(YGDisplay facebook::react::LayoutMetrics facebook::react::layoutMetricsFromYogaNode(facebook::yoga::Node& yogaNode); facebook::react::Rect facebook::react::insetBy(const facebook::react::Rect& rect, const facebook::react::EdgeInsets& insets) noexcept; facebook::react::Rect facebook::react::outsetBy(const facebook::react::Rect& rect, const facebook::react::EdgeInsets& outsets) noexcept; -facebook::react::ScriptTag facebook::react::parseTypeFromHeader(const facebook::react::BundleHeader& header); facebook::react::SharedColor facebook::react::blackColor(); facebook::react::SharedColor facebook::react::clearColor(); facebook::react::SharedColor facebook::react::colorFromComponents(facebook::react::ColorComponents components); @@ -1616,11 +1613,6 @@ enum facebook::react::SchedulerPriority : int { UserBlockingPriority, } -enum facebook::react::ScriptTag { - RAMBundle, - String, -} - enum facebook::react::TransformOperationType : uint8_t { Arbitrary, Identity, @@ -1775,13 +1767,6 @@ struct facebook::react::Bridging { public static void fromJs(facebook::jsi::Runtime&, const facebook::jsi::Value&); } -struct facebook::react::BundleHeader { - public BundleHeader(); - public facebook::react::Magic32 magic32; - public uint32_t version; - public uint64_t magic64; -} - struct facebook::react::ColorComponents { public facebook::react::ColorSpace colorSpace; public float alpha; @@ -1870,11 +1855,6 @@ struct facebook::react::LinearGradient { public std::vector colorStops; } -struct facebook::react::Magic32 { - public uint32_t reserved_; - public uint32_t value; -} - struct facebook::react::Point { public Float x; public Float y; diff --git a/scripts/cxx-api/api-snapshots/ReactCommonNewarchCxx.api b/scripts/cxx-api/api-snapshots/ReactCommonNewarchCxx.api index b41bd139b9c2..e23d29af220d 100644 --- a/scripts/cxx-api/api-snapshots/ReactCommonNewarchCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactCommonNewarchCxx.api @@ -158,9 +158,7 @@ Float facebook::react::floatFromYogaOptionalFloat(facebook::yoga::FloatOptional YGDirection facebook::react::yogaDirectionFromLayoutDirection(facebook::react::LayoutDirection direction); bool facebook::react::areBorderRadiiCircular(const facebook::react::BorderRadii& borderRadii); bool facebook::react::isColorMeaningful(const facebook::react::SharedColor& color) noexcept; -bool facebook::react::isHermesBytecodeBundle(const facebook::react::BundleHeader& header); bool facebook::react::isZero(Float n); -const char* facebook::react::stringForScriptTag(const facebook::react::ScriptTag& tag); constexpr auto facebook::react::to_underlying(auto e) noexcept; constexpr char facebook::react::toLower(char c); constexpr uint32_t facebook::react::fnv1aLowercase(std::string_view string); @@ -171,7 +169,6 @@ facebook::react::DisplayType facebook::react::displayTypeFromYGDisplay(YGDisplay facebook::react::LayoutMetrics facebook::react::layoutMetricsFromYogaNode(facebook::yoga::Node& yogaNode); facebook::react::Rect facebook::react::insetBy(const facebook::react::Rect& rect, const facebook::react::EdgeInsets& insets) noexcept; facebook::react::Rect facebook::react::outsetBy(const facebook::react::Rect& rect, const facebook::react::EdgeInsets& outsets) noexcept; -facebook::react::ScriptTag facebook::react::parseTypeFromHeader(const facebook::react::BundleHeader& header); facebook::react::SharedColor facebook::react::blackColor(); facebook::react::SharedColor facebook::react::clearColor(); facebook::react::SharedColor facebook::react::colorFromComponents(facebook::react::ColorComponents components); @@ -1609,11 +1606,6 @@ enum facebook::react::SchedulerPriority : int { UserBlockingPriority, } -enum facebook::react::ScriptTag { - RAMBundle, - String, -} - enum facebook::react::TransformOperationType : uint8_t { Arbitrary, Identity, @@ -1768,13 +1760,6 @@ struct facebook::react::Bridging { public static void fromJs(facebook::jsi::Runtime&, const facebook::jsi::Value&); } -struct facebook::react::BundleHeader { - public BundleHeader(); - public facebook::react::Magic32 magic32; - public uint32_t version; - public uint64_t magic64; -} - struct facebook::react::ColorComponents { public facebook::react::ColorSpace colorSpace; public float alpha; @@ -1863,11 +1848,6 @@ struct facebook::react::LinearGradient { public std::vector colorStops; } -struct facebook::react::Magic32 { - public uint32_t reserved_; - public uint32_t value; -} - struct facebook::react::Point { public Float x; public Float y; diff --git a/scripts/cxx-api/api-snapshots/ReactCommonReleaseCxx.api b/scripts/cxx-api/api-snapshots/ReactCommonReleaseCxx.api index b41bd139b9c2..e23d29af220d 100644 --- a/scripts/cxx-api/api-snapshots/ReactCommonReleaseCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactCommonReleaseCxx.api @@ -158,9 +158,7 @@ Float facebook::react::floatFromYogaOptionalFloat(facebook::yoga::FloatOptional YGDirection facebook::react::yogaDirectionFromLayoutDirection(facebook::react::LayoutDirection direction); bool facebook::react::areBorderRadiiCircular(const facebook::react::BorderRadii& borderRadii); bool facebook::react::isColorMeaningful(const facebook::react::SharedColor& color) noexcept; -bool facebook::react::isHermesBytecodeBundle(const facebook::react::BundleHeader& header); bool facebook::react::isZero(Float n); -const char* facebook::react::stringForScriptTag(const facebook::react::ScriptTag& tag); constexpr auto facebook::react::to_underlying(auto e) noexcept; constexpr char facebook::react::toLower(char c); constexpr uint32_t facebook::react::fnv1aLowercase(std::string_view string); @@ -171,7 +169,6 @@ facebook::react::DisplayType facebook::react::displayTypeFromYGDisplay(YGDisplay facebook::react::LayoutMetrics facebook::react::layoutMetricsFromYogaNode(facebook::yoga::Node& yogaNode); facebook::react::Rect facebook::react::insetBy(const facebook::react::Rect& rect, const facebook::react::EdgeInsets& insets) noexcept; facebook::react::Rect facebook::react::outsetBy(const facebook::react::Rect& rect, const facebook::react::EdgeInsets& outsets) noexcept; -facebook::react::ScriptTag facebook::react::parseTypeFromHeader(const facebook::react::BundleHeader& header); facebook::react::SharedColor facebook::react::blackColor(); facebook::react::SharedColor facebook::react::clearColor(); facebook::react::SharedColor facebook::react::colorFromComponents(facebook::react::ColorComponents components); @@ -1609,11 +1606,6 @@ enum facebook::react::SchedulerPriority : int { UserBlockingPriority, } -enum facebook::react::ScriptTag { - RAMBundle, - String, -} - enum facebook::react::TransformOperationType : uint8_t { Arbitrary, Identity, @@ -1768,13 +1760,6 @@ struct facebook::react::Bridging { public static void fromJs(facebook::jsi::Runtime&, const facebook::jsi::Value&); } -struct facebook::react::BundleHeader { - public BundleHeader(); - public facebook::react::Magic32 magic32; - public uint32_t version; - public uint64_t magic64; -} - struct facebook::react::ColorComponents { public facebook::react::ColorSpace colorSpace; public float alpha; @@ -1863,11 +1848,6 @@ struct facebook::react::LinearGradient { public std::vector colorStops; } -struct facebook::react::Magic32 { - public uint32_t reserved_; - public uint32_t value; -} - struct facebook::react::Point { public Float x; public Float y; From 7686eea335f0ae2845597d2944b52a7129cfb57e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dawid=20Ma=C5=82ecki?= Date: Mon, 12 Oct 2026 07:27:30 -0700 Subject: [PATCH 4/4] Make ModalHostViewUtils header private (#58957) Summary: Pull Request resolved: https://github.com/react/react-native/pull/58957 `react/renderer/components/modal/ModalHostViewUtils.h` declares `ModalHostViewScreenSize()`, a per-platform helper that is only used to compute the default screen size of `ModalHostViewState`. Lower it from "for frameworks" to private. It was reachable from the "for frameworks" API only because `ModalHostViewState.h` called it from an inline default constructor. Move that constructor out of line into `ModalHostViewState.cpp`, so `ModalHostViewState.h` no longer includes the utils header. While here, `ModalHostViewState.h` now gets `Float`/`Size` from the `` umbrella instead of including the public `react/renderer/graphics/Float.h` directly (`Size` previously only arrived transitively through the utils header). The C++ API snapshots are regenerated: `ModalHostViewScreenSize()` is removed from the Frameworks snapshots. Changelog: [Internal] Reviewed By: cortinico Differential Revision: D124105062 --- .../react/renderer/components/modal/ModalHostViewState.cpp | 4 ++++ .../react/renderer/components/modal/ModalHostViewState.h | 3 +-- .../react/renderer/components/modal/ModalHostViewUtils.h | 2 +- scripts/cxx-api/api-snapshots/ReactAndroidFrameworksCxx.api | 1 - scripts/cxx-api/api-snapshots/ReactAppleFrameworksCxx.api | 1 - scripts/cxx-api/api-snapshots/ReactCommonFrameworksCxx.api | 1 - 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/react-native/ReactCommon/react/renderer/components/modal/ModalHostViewState.cpp b/packages/react-native/ReactCommon/react/renderer/components/modal/ModalHostViewState.cpp index e27e93774550..9f5bff0bfac8 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/modal/ModalHostViewState.cpp +++ b/packages/react-native/ReactCommon/react/renderer/components/modal/ModalHostViewState.cpp @@ -6,9 +6,13 @@ */ #include "ModalHostViewState.h" +#include "ModalHostViewUtils.h" namespace facebook::react { +ModalHostViewState::ModalHostViewState() + : screenSize(ModalHostViewScreenSize()) {} + #ifdef RN_SERIALIZABLE_STATE folly::dynamic ModalHostViewState::getDynamic() const { return folly::dynamic::object("screenWidth", screenSize.width)( diff --git a/packages/react-native/ReactCommon/react/renderer/components/modal/ModalHostViewState.h b/packages/react-native/ReactCommon/react/renderer/components/modal/ModalHostViewState.h index e9426757d6a7..8631094fd8d0 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/modal/ModalHostViewState.h +++ b/packages/react-native/ReactCommon/react/renderer/components/modal/ModalHostViewState.h @@ -11,7 +11,6 @@ #include #include -#include "ModalHostViewUtils.h" #ifdef RN_SERIALIZABLE_STATE #include @@ -26,7 +25,7 @@ class ModalHostViewState final { public: using Shared = std::shared_ptr; - ModalHostViewState() : screenSize(ModalHostViewScreenSize()) {} + ModalHostViewState(); ModalHostViewState(Size screenSize_) : screenSize(screenSize_) {}; #ifdef RN_SERIALIZABLE_STATE diff --git a/packages/react-native/ReactCommon/react/renderer/components/modal/ModalHostViewUtils.h b/packages/react-native/ReactCommon/react/renderer/components/modal/ModalHostViewUtils.h index b0310c517fe8..e59d93a4bebc 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/modal/ModalHostViewUtils.h +++ b/packages/react-native/ReactCommon/react/renderer/components/modal/ModalHostViewUtils.h @@ -7,7 +7,7 @@ #pragma once -#include +#include #include diff --git a/scripts/cxx-api/api-snapshots/ReactAndroidFrameworksCxx.api b/scripts/cxx-api/api-snapshots/ReactAndroidFrameworksCxx.api index e1915564eeed..fcdab64c05ed 100644 --- a/scripts/cxx-api/api-snapshots/ReactAndroidFrameworksCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactAndroidFrameworksCxx.api @@ -741,7 +741,6 @@ facebook::react::SharedColor facebook::react::colorFromComponents(facebook::reac facebook::react::SharedColor facebook::react::colorFromRGBA(uint8_t r, uint8_t g, uint8_t b, uint8_t a); facebook::react::SharedColor facebook::react::parsePlatformColor(const facebook::react::ContextContainer& contextContainer, int32_t surfaceId, const facebook::react::RawValue& value); facebook::react::SharedColor facebook::react::whiteColor(); -facebook::react::Size facebook::react::ModalHostViewScreenSize(void); facebook::react::Size facebook::react::yogaMeassureToSize(int64_t value); facebook::react::SurfaceId facebook::react::getNextRootViewTag() noexcept; facebook::react::TurboModuleMethodValueKind facebook::react::getTurboModuleMethodValueKind(facebook::jsi::Runtime& rt, const facebook::jsi::Value* value); diff --git a/scripts/cxx-api/api-snapshots/ReactAppleFrameworksCxx.api b/scripts/cxx-api/api-snapshots/ReactAppleFrameworksCxx.api index 11c7e6873789..d68bb486b28f 100644 --- a/scripts/cxx-api/api-snapshots/ReactAppleFrameworksCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactAppleFrameworksCxx.api @@ -3541,7 +3541,6 @@ facebook::react::SharedColor facebook::react::colorFromComponents(facebook::reac facebook::react::SharedColor facebook::react::colorFromRGBA(uint8_t r, uint8_t g, uint8_t b, uint8_t a); facebook::react::SharedColor facebook::react::parsePlatformColor(const facebook::react::ContextContainer& contextContainer, int32_t surfaceId, const facebook::react::RawValue& value); facebook::react::SharedColor facebook::react::whiteColor(); -facebook::react::Size facebook::react::ModalHostViewScreenSize(void); facebook::react::Size facebook::react::yogaMeassureToSize(int64_t value); facebook::react::SurfaceId facebook::react::getNextRootViewTag() noexcept; facebook::react::TurboModuleMethodValueKind facebook::react::getTurboModuleMethodValueKind(facebook::jsi::Runtime& rt, const facebook::jsi::Value* value); diff --git a/scripts/cxx-api/api-snapshots/ReactCommonFrameworksCxx.api b/scripts/cxx-api/api-snapshots/ReactCommonFrameworksCxx.api index bcf1840858e3..acdc51ea395e 100644 --- a/scripts/cxx-api/api-snapshots/ReactCommonFrameworksCxx.api +++ b/scripts/cxx-api/api-snapshots/ReactCommonFrameworksCxx.api @@ -337,7 +337,6 @@ facebook::react::SharedColor facebook::react::clearColor(); facebook::react::SharedColor facebook::react::colorFromComponents(facebook::react::ColorComponents components); facebook::react::SharedColor facebook::react::colorFromRGBA(uint8_t r, uint8_t g, uint8_t b, uint8_t a); facebook::react::SharedColor facebook::react::whiteColor(); -facebook::react::Size facebook::react::ModalHostViewScreenSize(void); facebook::react::Size facebook::react::yogaMeassureToSize(int64_t value); facebook::react::SurfaceId facebook::react::getNextRootViewTag() noexcept; facebook::react::TurboModuleMethodValueKind facebook::react::getTurboModuleMethodValueKind(facebook::jsi::Runtime& rt, const facebook::jsi::Value* value);