From 61cc7ca7f3f5b164499bb3b3bfb0addafb73d495 Mon Sep 17 00:00:00 2001 From: Jakub Piasecki Date: Thu, 3 Sep 2026 00:52:26 -0700 Subject: [PATCH] Upgrade Image visibility to "for frameworks" (#58283) Summary: Reclassifies `react/renderer/components/image:image` from public to "for frameworks" under the C++ stable API three-tier visibility model. Consumers that opt into `RN_STRICT_API` now get a suppressible warning where they previously got an error pointing at the umbrella, and can acknowledge it with `RN_ALLOW_FRAMEWORKS`; without that flag the guards are inert, so no existing build changes behaviour. Changelog: [Internal] Reviewed By: christophpurrer Differential Revision: D118440296 --- .../ReactAndroid/build.gradle.kts | 4 -- .../ReactCommon/React-FabricImage.podspec | 8 +--- .../image/ImageComponentDescriptor.h | 2 +- .../components/image/ImageEventEmitter.h | 2 +- .../renderer/components/image/ImageProps.h | 2 +- .../components/image/ImageShadowNode.h | 2 +- .../renderer/components/image/ImageState.h | 2 +- .../renderer/components/image/React/Image.h | 37 ------------------- .../renderer/components/image/conversions.h | 2 +- .../scripts/ios-prebuild/headers-config.js | 16 -------- 10 files changed, 7 insertions(+), 70 deletions(-) delete mode 100644 packages/react-native/ReactCommon/react/renderer/components/image/React/Image.h diff --git a/packages/react-native/ReactAndroid/build.gradle.kts b/packages/react-native/ReactAndroid/build.gradle.kts index 3d04af49ff47..39e769c837f8 100644 --- a/packages/react-native/ReactAndroid/build.gradle.kts +++ b/packages/react-native/ReactAndroid/build.gradle.kts @@ -169,10 +169,6 @@ val preparePrefab by "../ReactCommon/react/renderer/components/image/", "react/renderer/components/image/", ), - Pair( - "../ReactCommon/react/renderer/components/image/React/", - "React/", - ), // rrc_view Pair( "../ReactCommon/react/renderer/components/view/", diff --git a/packages/react-native/ReactCommon/React-FabricImage.podspec b/packages/react-native/ReactCommon/React-FabricImage.podspec index a82ef901c4c9..3e2f70039ef3 100644 --- a/packages/react-native/ReactCommon/React-FabricImage.podspec +++ b/packages/react-native/ReactCommon/React-FabricImage.podspec @@ -43,19 +43,13 @@ Pod::Spec.new do |s| s.platforms = min_supported_versions s.source = source s.source_files = podspec_sources("react/renderer/components/image/**/*.{m,mm,cpp,h}", "react/renderer/components/image/**/*.h") - s.exclude_files = ["react/renderer/components/image/tests", "react/renderer/components/image/React"] + s.exclude_files = "react/renderer/components/image/tests" s.header_dir = "react/renderer/components/image" s.pod_target_xcconfig = { "USE_HEADERMAP" => "YES", "CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard(), "HEADER_SEARCH_PATHS" => header_search_path.join(" ") } - s.subspec "imageUmbrella" do |ss| - ss.source_files = "react/renderer/components/image/React/*.h" - ss.header_dir = "" - ss.header_mappings_dir = "react/renderer/components/image" - end - resolve_use_frameworks(s, header_mappings_dir: './', module_name: "React_FabricImage") s.dependency "React-jsiexecutor", version diff --git a/packages/react-native/ReactCommon/react/renderer/components/image/ImageComponentDescriptor.h b/packages/react-native/ReactCommon/react/renderer/components/image/ImageComponentDescriptor.h index da793a387562..5df65b321d50 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/image/ImageComponentDescriptor.h +++ b/packages/react-native/ReactCommon/react/renderer/components/image/ImageComponentDescriptor.h @@ -7,7 +7,7 @@ #pragma once -#include +#include #include #include diff --git a/packages/react-native/ReactCommon/react/renderer/components/image/ImageEventEmitter.h b/packages/react-native/ReactCommon/react/renderer/components/image/ImageEventEmitter.h index cbd7eb781869..78c947798b40 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/image/ImageEventEmitter.h +++ b/packages/react-native/ReactCommon/react/renderer/components/image/ImageEventEmitter.h @@ -7,7 +7,7 @@ #pragma once -#include +#include #include #include diff --git a/packages/react-native/ReactCommon/react/renderer/components/image/ImageProps.h b/packages/react-native/ReactCommon/react/renderer/components/image/ImageProps.h index 9da186430d42..474eff3677e8 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/image/ImageProps.h +++ b/packages/react-native/ReactCommon/react/renderer/components/image/ImageProps.h @@ -7,7 +7,7 @@ #pragma once -#include +#include #include #include diff --git a/packages/react-native/ReactCommon/react/renderer/components/image/ImageShadowNode.h b/packages/react-native/ReactCommon/react/renderer/components/image/ImageShadowNode.h index 61bcaba18a47..6ba7e313c945 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/image/ImageShadowNode.h +++ b/packages/react-native/ReactCommon/react/renderer/components/image/ImageShadowNode.h @@ -7,7 +7,7 @@ #pragma once -#include +#include #include #include diff --git a/packages/react-native/ReactCommon/react/renderer/components/image/ImageState.h b/packages/react-native/ReactCommon/react/renderer/components/image/ImageState.h index d49393e65d9e..f4facfa38da9 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/image/ImageState.h +++ b/packages/react-native/ReactCommon/react/renderer/components/image/ImageState.h @@ -7,7 +7,7 @@ #pragma once -#include +#include #include #include diff --git a/packages/react-native/ReactCommon/react/renderer/components/image/React/Image.h b/packages/react-native/ReactCommon/react/renderer/components/image/React/Image.h deleted file mode 100644 index 11fd0c2dca55..000000000000 --- a/packages/react-native/ReactCommon/react/renderer/components/image/React/Image.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - * 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 `react/renderer/components/image` module - public entry point. -// -// #include -// -// Re-exports the module's public interface headers. React Native's own code -// should keep using the fine-grained `` includes; only outside -// consumers use this 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 later *direct* includes in the same TU are still caught, and -// it nests inside an enclosing umbrella rather than disarming it. -#pragma push_macro("RN_UMBRELLA_CONTEXT") -#undef RN_UMBRELLA_CONTEXT -#define RN_UMBRELLA_CONTEXT 1 - -#include -#include -#include -#include -#include -#include - -#undef RN_UMBRELLA_CONTEXT -#pragma pop_macro("RN_UMBRELLA_CONTEXT") diff --git a/packages/react-native/ReactCommon/react/renderer/components/image/conversions.h b/packages/react-native/ReactCommon/react/renderer/components/image/conversions.h index 5d38e469e3f2..6f3b290e2170 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/image/conversions.h +++ b/packages/react-native/ReactCommon/react/renderer/components/image/conversions.h @@ -7,7 +7,7 @@ #pragma once -#include +#include #include diff --git a/packages/react-native/scripts/ios-prebuild/headers-config.js b/packages/react-native/scripts/ios-prebuild/headers-config.js index 78e72e95d615..ffe5b36b81b7 100644 --- a/packages/react-native/scripts/ios-prebuild/headers-config.js +++ b/packages/react-native/scripts/ios-prebuild/headers-config.js @@ -491,22 +491,6 @@ const PodspecExceptions /*: {[key: string]: PodSpecConfiguration} */ = { }, ], }, - 'ReactCommon/React-FabricImage.podspec': { - name: 'React-FabricImage', - headerPatterns: ['react/renderer/components/image/**/*.h'], - excludePatterns: [ - 'react/renderer/components/image/tests', - 'react/renderer/components/image/React', - ], - headerDir: 'react/renderer/components/image', - subSpecs: [ - { - name: 'imageUmbrella', - headerPatterns: ['react/renderer/components/image/React/*.h'], - headerDir: 'React', - }, - ], - }, 'ReactCommon/callinvoker/React-callinvoker.podspec': { name: 'React-callinvoker', headerPatterns: ['**/*.h'],