From 7ee4e2777bf500bd633d8de6b0ec64a48f09acad Mon Sep 17 00:00:00 2001 From: Jakub Piasecki Date: Thu, 24 Sep 2026 01:43:36 -0700 Subject: [PATCH 1/4] Fix a circular import in the prebuilt iOS headers Summary: Each module ships a small header that acts as its entry point. Those were being packaged into the React framework, but the code that includes them lives in the shared headers bundle the framework is built on top of. The two ended up pointing at each other and the iOS build failed. Ship the entry-point headers with the shared headers instead. They still resolve the same way for anyone including them, and no other header moves. Changelog: [Internal] Differential Revision: D121187558 --- .../ios-prebuild/__docs__/headers-rules.md | 26 +++++++++- .../__tests__/headers-spec-test.js | 49 ++++++++++++++++++ .../scripts/ios-prebuild/headers-spec.js | 51 +++++++++++++++++-- 3 files changed, 121 insertions(+), 5 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 3c4de65e246a..dbd9ceac6128 100644 --- a/packages/react-native/scripts/ios-prebuild/__docs__/headers-rules.md +++ b/packages/react-native/scripts/ios-prebuild/__docs__/headers-rules.md @@ -8,7 +8,7 @@ scripts under `scripts/ios-prebuild/`: | Script | Role | | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `headers-inventory.js` | **Discover + classify** every shipped header (the facts) | -| `headers-spec.js` | **The rules** (R1–R11) — turns the inventory into a layout plan + module maps | +| `headers-spec.js` | **The rules** (R1–R12) — turns the inventory into a layout plan + module maps | | `headers-compose.js` | **Emit** — projects the plan into `React.xcframework` and `ReactNativeHeaders.xcframework` | | `headers-verify.js` | **Gate** — generator-time verification: include-health ratchet, structural byte-compare, consumer-shaped compile smokes (runs in the prebuild CI compose job) | @@ -35,7 +35,7 @@ everything else. No overlay, no include rewriting, no consumer flags. podspecs ──► headers-inventory.js ──► inventory (facts per header) │ ▼ - headers-spec.js (rules R1–R10) + headers-spec.js (rules R1–R12) │ plan: what goes where + module maps ▼ headers-compose.js (emission) @@ -233,6 +233,28 @@ emitted as a one-line redirect shim (`#import `). Shims that are namespace-module members are fine: they import the owning module, so declarations stay single-owned. +**R12 — a namespace module's own umbrella stays in ReactNativeHeaders.** The C++ +stable API ships one umbrella per module, physically nested inside it +(`ReactCommon/react/debug/React/Debug.h`), so its natural path is +`React/Debug.h` and R1 would hoist it into the framework. It must not be: +**ReactNativeHeaders is the lower layer** — `React.framework` imports it +(`RCTCallInvoker.h` → ``). A framework-owned umbrella +makes every `#include ` inside a lowercase-namespace header an import +of module `React`, closing a cycle: + +```text +React -> ReactNativeHeaders_react -> React +``` + +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 +members; `planFromInventory` fails closed if one ever becomes a modular +candidate, since its R5 module would be named `React` and alias the framework +module. + ## Stage 3 — Emission (headers-compose.js) `computeSpecPlan(rnRoot)` = inventory → plan, throwing on R8 collisions. Then: diff --git a/packages/react-native/scripts/ios-prebuild/__tests__/headers-spec-test.js b/packages/react-native/scripts/ios-prebuild/__tests__/headers-spec-test.js index be9df53c06dc..057362ccc3dc 100644 --- a/packages/react-native/scripts/ios-prebuild/__tests__/headers-spec-test.js +++ b/packages/react-native/scripts/ios-prebuild/__tests__/headers-spec-test.js @@ -266,6 +266,55 @@ describe('R11 redirect shims for dual-identity headers', () => { }); }); +describe('R12 namespace module umbrellas stay in ReactNativeHeaders', () => { + test('a module-nested React/ umbrella is not hoisted into the framework', () => { + const m = validManifest(); + m.headers.push( + entry( + 'React/Debug.h', + 'objc-blocked', + 'ReactCommon/react/debug/React/Debug.h', + ), + ); + const plan = planFromInventoryForTest(m); + // Lower layer: including it from a react/-namespace header cannot create a + // React module edge (React -> ReactNativeHeaders_react -> React). + expect( + plan.reactNativeHeaders.find(e => e.naturalPath === 'React/Debug.h') + ?.relPath, + ).toBe('React/Debug.h'); + expect( + plan.react.find(e => e.naturalPath === 'React/Debug.h'), + ).toBeUndefined(); + expect(plan.umbrella).not.toContain('React/Debug.h'); + expect(Object.keys(plan.namespaceModules)).not.toContain('React'); + }); + + test('genuine React.framework headers are still hoisted (R1)', () => { + const m = validManifest(); + m.headers.push( + entry('React/RCTMessageThread.h', 'cxx', 'React/Base/RCTMessageThread.h'), + ); + const plan = planFromInventoryForTest(m); + expect( + plan.react.find(e => e.naturalPath === 'React/RCTMessageThread.h') + ?.relPath, + ).toBe('RCTMessageThread.h'); + }); + + test('fails closed if an R12 umbrella becomes a modular candidate', () => { + const m = validManifest(); + m.headers.push( + entry( + 'React/Debug.h', + 'objc-modular-candidate', + 'ReactCommon/react/debug/React/Debug.h', + ), + ); + expect(() => planFromInventoryForTest(m)).toThrow(/R12/); + }); +}); + describe('DEPS_NAMESPACES (R2 — the deps sidecar namespace set)', () => { test('includes SocketRocket: one physical home, in the sidecar', () => { // Pre-sidecar, SocketRocket was excluded from relocation because a REAL diff --git a/packages/react-native/scripts/ios-prebuild/headers-spec.js b/packages/react-native/scripts/ios-prebuild/headers-spec.js index e1bde3dc419b..8696ea836bfa 100644 --- a/packages/react-native/scripts/ios-prebuild/headers-spec.js +++ b/packages/react-native/scripts/ios-prebuild/headers-spec.js @@ -79,6 +79,20 @@ * one-line redirect shim (`#import `). Shims that are namespace- * module members are fine: they import the owning module, so declarations * stay single-owned. + * R12. A namespace module's OWN umbrella (ReactCommon//React/.h, + * natural path React/.h) ships in ReactNativeHeaders — it is NOT + * hoisted into React.framework by R1. ReactNativeHeaders is the LOWER + * layer (React.framework imports it: RCTCallInvoker.h pulls + * ), so a framework-owned umbrella turns every + * `#include ` inside a lowercase-namespace header into an import + * of module React and closes a cycle: + * React -> ReactNativeHeaders_react -> React + * Found empirically: react/timing/primitives.h -> . Kept in + * ReactNativeHeaders the same spelling still resolves — framework lookup + * misses and clang falls back to the header search path — textually and + * within one artifact, so no module edge is created. These umbrellas are + * objc-blocked by construction (they re-export their module's C++ + * surface), so they were never R4 umbrella or R5 module members anyway. */ const fs = require('node:fs'); @@ -280,6 +294,13 @@ function renderNamespaceUmbrella( return `#ifdef __OBJC__\n#import \n#endif\n\n${imports}\n`; } +// R12: a namespace module's own umbrella — physically nested inside the module +// it re-exports (ReactCommon/react/debug/React/Debug.h), which is what tells it +// apart from the ~310 genuine React.framework headers that also carry a +// `React/` natural path but live under React/, Libraries/, ReactApple/, ... +const NS_MODULE_UMBRELLA_RE /*: RegExp */ = + /^ReactCommon\/.+\/React\/[^/]+\.h$/; + /** * Computes the full layout plan from the header inventory manifest * (build/header-inventory.json — regenerate with header-inventory.js). @@ -307,7 +328,13 @@ function planFromInventory( let bucketKey; let entryList; let relPath; - if (np.startsWith('React/')) { + if (np.startsWith('React/') && NS_MODULE_UMBRELLA_RE.test(source)) { + // R12: a namespace module's own umbrella stays in the LOWER layer, so + // including it from that namespace cannot create a React module edge. + relPath = np; + bucketKey = `ReactNativeHeaders/${relPath}`; + entryList = reactNativeHeaders; + } else if (np.startsWith('React/')) { relPath = np.slice(6); // R1: hoist React/ to the framework Headers root bucketKey = `React.framework/${relPath}`; entryList = react; @@ -332,8 +359,13 @@ function planFromInventory( seen.set(bucketKey, source); entryList.push({relPath, source, naturalPath: np}); - // R4: React umbrella membership. - if (np.startsWith('React/') && isUmbrellaSafe(h, root)) { + // R4: React umbrella membership. Only headers the framework actually ships + // (R12 umbrellas carry a React/ natural path but live in ReactNativeHeaders). + if ( + entryList === react && + np.startsWith('React/') && + isUmbrellaSafe(h, root) + ) { umbrella.push(np); } // R5: namespace modules (only for ReactNativeHeaders namespaces). Every @@ -346,6 +378,19 @@ function planFromInventory( if (entryList === reactNativeHeaders) { const ns = np.split('/')[0]; if (isUmbrellaSafe(h, root)) { + // R12 assert: an R12-routed umbrella lands under the `React` namespace + // here, and renderNamespaceModuleMap only renames the lowercase `react` + // one — so its module would be named `React` and alias the framework + // module, reintroducing the cycle R12 exists to break. These umbrellas + // are objc-blocked today so they never reach this branch; fail closed + // if that ever changes. + if (ns === 'React') { + throw new Error( + `R12: '${np}' is a modular candidate in ReactNativeHeaders. Its ` + + `namespace module would be named 'React' and alias the React ` + + `framework module. Keep it out of the modular surface.`, + ); + } // R5 exemption assert: a namespace whose name is not a valid module // identifier cannot get a module, so a modular-candidate header in it // would be silently non-modular — consumers importing it from a From cfd59910cd77fd66051259fefc33ae6170bb5936 Mon Sep 17 00:00:00 2001 From: Jakub Piasecki Date: Thu, 24 Sep 2026 01:43:36 -0700 Subject: [PATCH 2/4] Use umbrella instead of a direct include in timing module Summary: Changelog: [Internal] Update the timing module to use `React/Debug.h` umbrella include instead of a direct one. Differential Revision: D120137164 --- packages/react-native/Package.swift | 3 ++- .../react-native/ReactCommon/jserrorhandler/CMakeLists.txt | 1 + packages/react-native/ReactCommon/jsitooling/CMakeLists.txt | 3 ++- packages/react-native/ReactCommon/react/timing/primitives.h | 2 +- packages/react-native/scripts/cocoapods/utils.rb | 1 + 5 files changed, 7 insertions(+), 3 deletions(-) diff --git a/packages/react-native/Package.swift b/packages/react-native/Package.swift index 386ca6958b7f..b55e5ae3ae0a 100644 --- a/packages/react-native/Package.swift +++ b/packages/react-native/Package.swift @@ -136,7 +136,8 @@ let reactFeatureFlags = RNTarget( let reactPerfLogger = RNTarget( name: .reactPerfLogger, path: "ReactCommon/reactperflogger", - excludedPaths: ["fusebox"] + excludedPaths: ["fusebox"], + dependencies: [.reactDebug, .reactNativeDependencies] ) /// React-logger.podspec diff --git a/packages/react-native/ReactCommon/jserrorhandler/CMakeLists.txt b/packages/react-native/ReactCommon/jserrorhandler/CMakeLists.txt index 8cdc80401168..88032ada27c2 100644 --- a/packages/react-native/ReactCommon/jserrorhandler/CMakeLists.txt +++ b/packages/react-native/ReactCommon/jserrorhandler/CMakeLists.txt @@ -22,6 +22,7 @@ target_link_libraries(jserrorhandler folly_runtime ${mapbufferjni} react_cxxstableapi + react_debug react_featureflags ) target_compile_reactnative_options(jserrorhandler PRIVATE) diff --git a/packages/react-native/ReactCommon/jsitooling/CMakeLists.txt b/packages/react-native/ReactCommon/jsitooling/CMakeLists.txt index b8024cf8b78e..7b834d53742c 100644 --- a/packages/react-native/ReactCommon/jsitooling/CMakeLists.txt +++ b/packages/react-native/ReactCommon/jsitooling/CMakeLists.txt @@ -21,7 +21,8 @@ target_link_libraries(jsitooling folly_runtime glog jsi - react_cxxstableapi) + react_cxxstableapi + react_timing) target_compile_reactnative_options(jsitooling PRIVATE) target_compile_options(jsitooling PRIVATE -Wpedantic) diff --git a/packages/react-native/ReactCommon/react/timing/primitives.h b/packages/react-native/ReactCommon/react/timing/primitives.h index d7e2ebe8816b..d691df706674 100644 --- a/packages/react-native/ReactCommon/react/timing/primitives.h +++ b/packages/react-native/ReactCommon/react/timing/primitives.h @@ -9,7 +9,7 @@ #include -#include +#include #include #include #include diff --git a/packages/react-native/scripts/cocoapods/utils.rb b/packages/react-native/scripts/cocoapods/utils.rb index 2140b3013b0c..9a2326e38cad 100644 --- a/packages/react-native/scripts/cocoapods/utils.rb +++ b/packages/react-native/scripts/cocoapods/utils.rb @@ -424,6 +424,7 @@ def self.update_search_paths(installer) .concat(ReactNativePodsUtils.create_header_search_path_for_frameworks("PODS_CONFIGURATION_BUILD_DIR", "React-featureflags", "React_featureflags", [])) .concat(ReactNativePodsUtils.create_header_search_path_for_frameworks("PODS_CONFIGURATION_BUILD_DIR", "React-renderercss", "React_renderercss", [])) .concat(ReactNativePodsUtils.create_header_search_path_for_frameworks("PODS_CONFIGURATION_BUILD_DIR", "React-cxxstableapi", "React_cxxstableapi", [])) + .concat(ReactNativePodsUtils.create_header_search_path_for_frameworks("PODS_CONFIGURATION_BUILD_DIR", "React-debug", "React_debug", [])) .each{ |search_path| header_search_paths = self.add_search_path_if_not_included(header_search_paths, search_path) } From 4b5a8151db7915f14bf4eb885aa6c8720720debe Mon Sep 17 00:00:00 2001 From: Jakub Piasecki Date: Thu, 24 Sep 2026 02:35:38 -0700 Subject: [PATCH 3/4] Add a RawValue umbrella to the renderer core module 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. 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 000000000000..0505b9d0eb0b --- /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 6856ae14296a..b34a5608ba2b 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 From 46df46c2fffc87885950ef1e56985fe0b84ed8fb Mon Sep 17 00:00:00 2001 From: Jakub Piasecki Date: Thu, 24 Sep 2026 03:29:20 -0700 Subject: [PATCH 4/4] Use umbrellas instead of direct includes in renderer core module (#58654) Summary: Pull Request resolved: https://github.com/react/react-native/pull/58654 Changelog: [Internal] Update `react/renderer/core` to use the `React/Debug.h`, `React/FeatureFlags.h`, `React/Graphics.h`, `React/MapBuffer.h`, `React/RendererDebug.h`, `React/Timing.h` and `React/Utils.h` umbrellas instead of direct includes. `debugStringConvertibleUtils.h` is an implementation helper, not public API, and is no longer re-exported from `React/RendererDebug.h`. Public API surface is unchanged. Differential Revision: D121395742 --- .../react-native/ReactCommon/React-Fabric.podspec | 1 + .../ReactCommon/react/renderer/core/CMakeLists.txt | 1 + .../renderer/core/ConcreteComponentDescriptor.h | 6 +++--- .../react/renderer/core/ConcreteShadowNode.h | 2 +- .../ReactCommon/react/renderer/core/ConcreteState.h | 5 ++--- .../ReactCommon/react/renderer/core/EventEmitter.h | 2 +- .../ReactCommon/react/renderer/core/EventLogger.h | 2 +- .../ReactCommon/react/renderer/core/EventPipe.h | 2 +- .../react/renderer/core/LayoutConstraints.h | 4 ++-- .../ReactCommon/react/renderer/core/LayoutMetrics.h | 8 +++----- .../react/renderer/core/LayoutableShadowNode.h | 6 +++--- .../ReactCommon/react/renderer/core/Props.h | 4 ++-- .../ReactCommon/react/renderer/core/PropsMacros.h | 2 +- .../react/renderer/core/PropsParserContext.h | 2 +- .../ReactCommon/react/renderer/core/RawEvent.h | 2 +- .../ReactCommon/react/renderer/core/RawValue.h | 2 +- .../ReactCommon/react/renderer/core/Sealable.h | 2 +- .../ReactCommon/react/renderer/core/ShadowNode.h | 2 +- .../ReactCommon/react/renderer/core/State.h | 2 +- .../react/renderer/core/graphicsConversions.h | 13 +++---------- .../react/renderer/debug/React/RendererDebug.h | 1 - 21 files changed, 31 insertions(+), 40 deletions(-) diff --git a/packages/react-native/ReactCommon/React-Fabric.podspec b/packages/react-native/ReactCommon/React-Fabric.podspec index 7a13eb84ef36..04dcdf8b2de2 100644 --- a/packages/react-native/ReactCommon/React-Fabric.podspec +++ b/packages/react-native/ReactCommon/React-Fabric.podspec @@ -44,6 +44,7 @@ Pod::Spec.new do |s| s.dependency "React-debug" s.dependency "React-cxxstableapi" s.dependency "React-featureflags" + s.dependency "React-timing" s.dependency "React-runtimescheduler" s.dependency "React-cxxreact" s.dependency "React-bridging" diff --git a/packages/react-native/ReactCommon/react/renderer/core/CMakeLists.txt b/packages/react-native/ReactCommon/react/renderer/core/CMakeLists.txt index 80f0d5364492..d5ea3badd3d2 100644 --- a/packages/react-native/ReactCommon/react/renderer/core/CMakeLists.txt +++ b/packages/react-native/ReactCommon/react/renderer/core/CMakeLists.txt @@ -25,6 +25,7 @@ target_link_libraries(react_renderer_core react_renderer_graphics react_renderer_mapbuffer react_renderer_runtimescheduler + react_timing react_utils runtimeexecutor yoga) diff --git a/packages/react-native/ReactCommon/react/renderer/core/ConcreteComponentDescriptor.h b/packages/react-native/ReactCommon/react/renderer/core/ConcreteComponentDescriptor.h index bf552e0e67e1..4f98387c77ab 100644 --- a/packages/react-native/ReactCommon/react/renderer/core/ConcreteComponentDescriptor.h +++ b/packages/react-native/ReactCommon/react/renderer/core/ConcreteComponentDescriptor.h @@ -12,8 +12,9 @@ #include #include -#include -#include +#include +#include +#include #include #include #include @@ -21,7 +22,6 @@ #include #include #include -#include namespace facebook::react { diff --git a/packages/react-native/ReactCommon/react/renderer/core/ConcreteShadowNode.h b/packages/react-native/ReactCommon/react/renderer/core/ConcreteShadowNode.h index d7d47377c761..d758d39a472e 100644 --- a/packages/react-native/ReactCommon/react/renderer/core/ConcreteShadowNode.h +++ b/packages/react-native/ReactCommon/react/renderer/core/ConcreteShadowNode.h @@ -9,7 +9,7 @@ #include -#include +#include #include #include #include diff --git a/packages/react-native/ReactCommon/react/renderer/core/ConcreteState.h b/packages/react-native/ReactCommon/react/renderer/core/ConcreteState.h index f74a8c9f2416..f115b358b709 100644 --- a/packages/react-native/ReactCommon/react/renderer/core/ConcreteState.h +++ b/packages/react-native/ReactCommon/react/renderer/core/ConcreteState.h @@ -12,13 +12,12 @@ #include #include -#include +#include #include #ifdef RN_SERIALIZABLE_STATE +#include #include -#include -#include #endif namespace facebook::react { diff --git a/packages/react-native/ReactCommon/react/renderer/core/EventEmitter.h b/packages/react-native/ReactCommon/react/renderer/core/EventEmitter.h index f1313960d7d1..619f1bc52cf1 100644 --- a/packages/react-native/ReactCommon/react/renderer/core/EventEmitter.h +++ b/packages/react-native/ReactCommon/react/renderer/core/EventEmitter.h @@ -12,13 +12,13 @@ #include #include +#include #include #include #include #include #include #include -#include namespace facebook::react { diff --git a/packages/react-native/ReactCommon/react/renderer/core/EventLogger.h b/packages/react-native/ReactCommon/react/renderer/core/EventLogger.h index f9d797f02a84..2b637eb6edb6 100644 --- a/packages/react-native/ReactCommon/react/renderer/core/EventLogger.h +++ b/packages/react-native/ReactCommon/react/renderer/core/EventLogger.h @@ -9,8 +9,8 @@ #include +#include #include -#include #include #include diff --git a/packages/react-native/ReactCommon/react/renderer/core/EventPipe.h b/packages/react-native/ReactCommon/react/renderer/core/EventPipe.h index 43e7d7161d84..0178f1c07521 100644 --- a/packages/react-native/ReactCommon/react/renderer/core/EventPipe.h +++ b/packages/react-native/ReactCommon/react/renderer/core/EventPipe.h @@ -12,12 +12,12 @@ #include #include +#include #include #include #include #include #include -#include namespace facebook::react { diff --git a/packages/react-native/ReactCommon/react/renderer/core/LayoutConstraints.h b/packages/react-native/ReactCommon/react/renderer/core/LayoutConstraints.h index 865ad7ccb7ff..87f3d246f04a 100644 --- a/packages/react-native/ReactCommon/react/renderer/core/LayoutConstraints.h +++ b/packages/react-native/ReactCommon/react/renderer/core/LayoutConstraints.h @@ -11,9 +11,9 @@ #include +#include +#include #include -#include -#include namespace facebook::react { diff --git a/packages/react-native/ReactCommon/react/renderer/core/LayoutMetrics.h b/packages/react-native/ReactCommon/react/renderer/core/LayoutMetrics.h index ff9c41ee44f8..1287da4feec8 100644 --- a/packages/react-native/ReactCommon/react/renderer/core/LayoutMetrics.h +++ b/packages/react-native/ReactCommon/react/renderer/core/LayoutMetrics.h @@ -9,12 +9,10 @@ #include +#include +#include +#include #include -#include -#include -#include -#include -#include #include namespace facebook::react { diff --git a/packages/react-native/ReactCommon/react/renderer/core/LayoutableShadowNode.h b/packages/react-native/ReactCommon/react/renderer/core/LayoutableShadowNode.h index a7a4ea33f076..8655de5f396e 100644 --- a/packages/react-native/ReactCommon/react/renderer/core/LayoutableShadowNode.h +++ b/packages/react-native/ReactCommon/react/renderer/core/LayoutableShadowNode.h @@ -14,12 +14,12 @@ #include #include -#include +#include +#include +#include #include #include #include -#include -#include namespace facebook::react { diff --git a/packages/react-native/ReactCommon/react/renderer/core/Props.h b/packages/react-native/ReactCommon/react/renderer/core/Props.h index e5c0cba8dae0..c717e3182a05 100644 --- a/packages/react-native/ReactCommon/react/renderer/core/Props.h +++ b/packages/react-native/ReactCommon/react/renderer/core/Props.h @@ -9,16 +9,16 @@ #include +#include #include #include #include #include #include -#include #ifdef ANDROID +#include #include -#include #endif namespace facebook::react { diff --git a/packages/react-native/ReactCommon/react/renderer/core/PropsMacros.h b/packages/react-native/ReactCommon/react/renderer/core/PropsMacros.h index 42f386ad618e..cb1ad5bb93ef 100644 --- a/packages/react-native/ReactCommon/react/renderer/core/PropsMacros.h +++ b/packages/react-native/ReactCommon/react/renderer/core/PropsMacros.h @@ -9,8 +9,8 @@ #include +#include #include -#include #include // We need to use clang pragmas inside of a macro below, diff --git a/packages/react-native/ReactCommon/react/renderer/core/PropsParserContext.h b/packages/react-native/ReactCommon/react/renderer/core/PropsParserContext.h index dab268aab282..7ff760a0219d 100644 --- a/packages/react-native/ReactCommon/react/renderer/core/PropsParserContext.h +++ b/packages/react-native/ReactCommon/react/renderer/core/PropsParserContext.h @@ -11,8 +11,8 @@ #include +#include #include -#include namespace facebook::react { diff --git a/packages/react-native/ReactCommon/react/renderer/core/RawEvent.h b/packages/react-native/ReactCommon/react/renderer/core/RawEvent.h index e6b798053fd3..2b082a5c473c 100644 --- a/packages/react-native/ReactCommon/react/renderer/core/RawEvent.h +++ b/packages/react-native/ReactCommon/react/renderer/core/RawEvent.h @@ -12,10 +12,10 @@ #include #include +#include #include #include #include -#include namespace facebook::react { diff --git a/packages/react-native/ReactCommon/react/renderer/core/RawValue.h b/packages/react-native/ReactCommon/react/renderer/core/RawValue.h index 176ca8ce00b0..e96d25328aa0 100644 --- a/packages/react-native/ReactCommon/react/renderer/core/RawValue.h +++ b/packages/react-native/ReactCommon/react/renderer/core/RawValue.h @@ -18,7 +18,7 @@ #include -#include +#include namespace facebook::react { diff --git a/packages/react-native/ReactCommon/react/renderer/core/Sealable.h b/packages/react-native/ReactCommon/react/renderer/core/Sealable.h index a18904ba98b6..74e13041c686 100644 --- a/packages/react-native/ReactCommon/react/renderer/core/Sealable.h +++ b/packages/react-native/ReactCommon/react/renderer/core/Sealable.h @@ -11,7 +11,7 @@ #include -#include +#include namespace facebook::react { diff --git a/packages/react-native/ReactCommon/react/renderer/core/ShadowNode.h b/packages/react-native/ReactCommon/react/renderer/core/ShadowNode.h index 3c016db8334d..2426c9065fc8 100644 --- a/packages/react-native/ReactCommon/react/renderer/core/ShadowNode.h +++ b/packages/react-native/ReactCommon/react/renderer/core/ShadowNode.h @@ -15,6 +15,7 @@ #include #include +#include #include #include #include @@ -22,7 +23,6 @@ #include #include #include -#include namespace facebook::react { diff --git a/packages/react-native/ReactCommon/react/renderer/core/State.h b/packages/react-native/ReactCommon/react/renderer/core/State.h index 437409a119ef..7a07bc268060 100644 --- a/packages/react-native/ReactCommon/react/renderer/core/State.h +++ b/packages/react-native/ReactCommon/react/renderer/core/State.h @@ -10,9 +10,9 @@ #include #ifdef RN_SERIALIZABLE_STATE +#include #include #include -#include #endif #include diff --git a/packages/react-native/ReactCommon/react/renderer/core/graphicsConversions.h b/packages/react-native/ReactCommon/react/renderer/core/graphicsConversions.h index 725ad9ec674d..6b77ed7a209b 100644 --- a/packages/react-native/ReactCommon/react/renderer/core/graphicsConversions.h +++ b/packages/react-native/ReactCommon/react/renderer/core/graphicsConversions.h @@ -12,19 +12,12 @@ #include #include +#include +#include +#include #include -#include #include #include -#include -#include -#include -#include -#include -#include -#include -#include -#include #ifdef RN_SERIALIZABLE_STATE #include diff --git a/packages/react-native/ReactCommon/react/renderer/debug/React/RendererDebug.h b/packages/react-native/ReactCommon/react/renderer/debug/React/RendererDebug.h index 7780c7af94ba..549ea9b75386 100644 --- a/packages/react-native/ReactCommon/react/renderer/debug/React/RendererDebug.h +++ b/packages/react-native/ReactCommon/react/renderer/debug/React/RendererDebug.h @@ -32,7 +32,6 @@ #include #include -#include #include #undef RN_UMBRELLA_CONTEXT