From 552fcaeb69ea0a9e899acc7f2278354f5d26c1a3 Mon Sep 17 00:00:00 2001 From: Nicola Corti Date: Fri, 25 Sep 2026 07:09:15 -0700 Subject: [PATCH 1/2] Fix formatting in iOS prebuild header docs Summary: Apply the repository formatter to the iOS prebuild header documentation. This restores the expected Markdown line wrapping and the public format check. Changelog: [Internal] bypass-github-export-checks ___ Differential Revision: D121797341 --- .../scripts/ios-prebuild/__docs__/headers-rules.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/react-native/scripts/ios-prebuild/__docs__/headers-rules.md b/packages/react-native/scripts/ios-prebuild/__docs__/headers-rules.md index dbd9ceac612..7c371601bdd 100644 --- a/packages/react-native/scripts/ios-prebuild/__docs__/headers-rules.md +++ b/packages/react-native/scripts/ios-prebuild/__docs__/headers-rules.md @@ -246,8 +246,8 @@ of module `React`, closing a cycle: React -> ReactNativeHeaders_react -> React ``` -Found empirically: `react/timing/primitives.h` -> ``. This is -the same two-module-ownership failure as `UMBRELLA_CXX_GUARDED_EXCLUSIONS` +Found empirically: `react/timing/primitives.h` -> ``. This is the +same two-module-ownership failure as `UMBRELLA_CXX_GUARDED_EXCLUSIONS` (`RCTFrameTimingsObserver.h`, which reaches the same `primitives.h`), in the opposite direction. They are `objc-blocked` by construction (they re-export their module's C++ surface), so they were never R4 umbrella or R5 module From 77eb7723af415f1f077c327acf12a44cb7767183 Mon Sep 17 00:00:00 2001 From: Jakub Piasecki Date: Fri, 25 Sep 2026 07:09:15 -0700 Subject: [PATCH 2/2] Add a RawValue umbrella to the renderer core module (#58653) Summary: Changelog: [Internal] Add a `React/RawValue.h` umbrella for the `rawValue` target, the slice of `react/renderer/core` that exists so core and `react/renderer/graphics` do not form a dependency cycle. `React/RendererCore.h` re-exports it instead of listing the two headers directly. Reviewed By: cipolleschi Differential Revision: D121388426 --- .../react/renderer/core/React/RawValue.h | 44 +++++++++++++++++++ .../react/renderer/core/React/RendererCore.h | 12 ++--- 2 files changed, 51 insertions(+), 5 deletions(-) create mode 100644 packages/react-native/ReactCommon/react/renderer/core/React/RawValue.h diff --git a/packages/react-native/ReactCommon/react/renderer/core/React/RawValue.h b/packages/react-native/ReactCommon/react/renderer/core/React/RawValue.h new file mode 100644 index 00000000000..0505b9d0eb0 --- /dev/null +++ b/packages/react-native/ReactCommon/react/renderer/core/React/RawValue.h @@ -0,0 +1,44 @@ +/* + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#pragma once + +// ============================================================================= +// Umbrella header for the `rawValue` module - public entry point. +// +// #include +// +// `rawValue` is the slice of `react/renderer/core` that `react/renderer/graphics` +// depends on. It is built as its own target so the two modules do not form a +// dependency cycle; re-exports it, so consumers that want +// the whole renderer core still only need that one umbrella. +// +// Re-exports the module's public interface headers. React Native's own code +// should keep using the fine-grained `` includes, +// except in headers it exports to consumers: those are preprocessed in the +// consumer's translation unit, where the fine-grained include hits this +// module's . `RN_ALLOW_FRAMEWORKS` does not +// suppress that guard, so a "for frameworks" header must reach this module +// through the umbrella. +// ============================================================================= + +// Marks that the following headers are pulled in through the umbrella, so their +// shared guard () accepts them. The marker +// is saved and restored rather than defined and undefined: the scope ends at +// this block, so a later *direct* include of a guarded header the umbrella did +// not already pull in is still caught, and it nests inside an enclosing +// umbrella rather than disarming it. The headers below are `#pragma once`, so +// re-including one of them directly is a silent no-op, not a guard hit. +#pragma push_macro("RN_UMBRELLA_CONTEXT") +#undef RN_UMBRELLA_CONTEXT +#define RN_UMBRELLA_CONTEXT 1 + +#include +#include + +#undef RN_UMBRELLA_CONTEXT +#pragma pop_macro("RN_UMBRELLA_CONTEXT") diff --git a/packages/react-native/ReactCommon/react/renderer/core/React/RendererCore.h b/packages/react-native/ReactCommon/react/renderer/core/React/RendererCore.h index 6856ae14296..b34a5608ba2 100644 --- a/packages/react-native/ReactCommon/react/renderer/core/React/RendererCore.h +++ b/packages/react-native/ReactCommon/react/renderer/core/React/RendererCore.h @@ -12,7 +12,8 @@ // // #include // -// Re-exports the module's public interface headers. React Native's own code +// Re-exports the module's public interface headers, including those of the +// `rawValue` target via . React Native's own code // should keep using the fine-grained `` includes, // except in headers it exports to consumers: those are preprocessed in the // consumer's translation unit, where the fine-grained include hits this @@ -24,12 +25,15 @@ // Marks that the following headers are pulled in through the umbrella, so their // shared guard () accepts them. The marker // is saved and restored rather than defined and undefined: the scope ends at -// this block, so later *direct* includes in the same TU are still caught, and -// it nests inside an enclosing umbrella rather than disarming it. +// this block, so a later *direct* include of a guarded header the umbrella did +// not already pull in is still caught, and it nests inside an enclosing +// umbrella rather than disarming it. The headers below are `#pragma once`, so +// re-including one of them directly is a silent no-op, not a guard hit. #pragma push_macro("RN_UMBRELLA_CONTEXT") #undef RN_UMBRELLA_CONTEXT #define RN_UMBRELLA_CONTEXT 1 +#include #include #include #include @@ -61,8 +65,6 @@ #include #include #include -#include -#include #include #include #include