Skip to content

Commit 4cd2782

Browse files
javachemeta-codesync[bot]
authored andcommitted
Extract react/bridging into its own React-bridging pod (#57354)
Summary: Pull Request resolved: #57354 Split the `react/bridging` headers out of the `ReactCommon` pod's `turbomodule/bridging` subspec into a standalone `React-bridging` podspec, mirroring the existing `React-bridging` SwiftPM target. This makes bridging a dependency-graph leaf so other modules can depend on it without pulling in `ReactCommon` / `React-cxxreact`. Consumers that previously reached `react/bridging` headers transitively through `ReactCommon` now resolve them through the standalone pod. The CocoaPods header-search-path injection in `update_search_paths` lists `React-bridging` alongside the other core frameworks so the headers resolve everywhere, and pods that link the `LongLivedObject` / `CallbackWrapper` symbols (`React-Fabric`, the nativemodule feature pods, `React-NativeModulesApple`, `React-RCTFBReactNativeSpec`) gain an explicit `React-bridging` dependency. All `ReactCommon/turbomodule/bridging` references in podspecs, the autolinker, the codegen template, and their test snapshots are repointed to `React-bridging`. Changelog: [Internal] Reviewed By: cortinico Differential Revision: D109868509 fbshipit-source-id: 20f90877c45dd39feb04703a45d5ecef6bb165a0
1 parent bb3c121 commit 4cd2782

19 files changed

Lines changed: 68 additions & 26 deletions

packages/react-native/Package.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -262,13 +262,13 @@ let reactRuntimeScheduler = RNTarget(
262262
dependencies: [.reactNativeDependencies, .reactFeatureFlags, .reactCxxReact, .reactPerfLogger, .reactPerformanceTimeline, .reactRendererConsistency, .reactUtils, .reactRuntimeExecutor]
263263
)
264264

265-
/// ReactCommon.podspec
266-
/// This target represent the ReactCommon/turbomodule/bridging subspec
265+
/// React-bridging.podspec
267266
let reactTurboModuleBridging = RNTarget(
268267
name: .reactTurboModuleBridging,
269268
path: "ReactCommon/react/bridging",
269+
searchPaths: [CallInvokerPath],
270270
excludedPaths: ["tests"],
271-
dependencies: [.reactNativeDependencies, .reactPerfLogger, .reactCxxReact, .jsi, .logger]
271+
dependencies: [.reactNativeDependencies, .jsi]
272272
)
273273

274274
/// React-jserrorhandler.podspec
@@ -904,7 +904,7 @@ extension String {
904904
static let reactRCTLinking = "React-RCTLinking"
905905
static let reactCoreModules = "React-CoreModules"
906906
static let reactRCTAnimatedModuleProvider = "RCTAnimatedModuleProvider"
907-
static let reactTurboModuleBridging = "ReactCommon/turbomodule/bridging"
907+
static let reactTurboModuleBridging = "React-bridging"
908908
static let reactTurboModuleCore = "ReactCommon/turbomodule/core"
909909
static let reactTurboModuleCoreDefaults = "ReactCommon/turbomodule/core/defaults"
910910
static let reactTurboModuleCoreMicrotasks = "ReactCommon/turbomodule/core/microtasks"

packages/react-native/React/React-RCTFBReactNativeSpec.podspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ Pod::Spec.new do |s|
5454
s.dependency "React-NativeModulesApple"
5555

5656
add_dependency(s, "ReactCommon", :subspec => "turbomodule/core", :additional_framework_paths => ["react/nativemodule/core"])
57-
add_dependency(s, "ReactCommon", :subspec => "turbomodule/bridging", :additional_framework_paths => ["react/nativemodule/bridging"])
57+
s.dependency "React-bridging"
5858

5959
depend_on_js_engine(s)
6060
add_rn_third_party_dependencies(s)

packages/react-native/ReactCommon/React-Fabric.podspec

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ Pod::Spec.new do |s|
4545
s.dependency "React-featureflags"
4646
s.dependency "React-runtimescheduler"
4747
s.dependency "React-cxxreact"
48+
s.dependency "React-bridging"
4849

4950
add_dependency(s, "React-runtimeexecutor", :additional_framework_paths => ["platform/ios"])
5051
add_dependency(s, "React-rendererdebug")

packages/react-native/ReactCommon/ReactCommon.podspec

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -43,27 +43,17 @@ Pod::Spec.new do |s|
4343
s.subspec "turbomodule" do |ss|
4444
ss.dependency "React-callinvoker", version
4545
ss.dependency "React-perflogger", version
46-
ss.dependency "React-cxxreact", version
4746
ss.dependency "React-jsi", version
4847
ss.dependency "React-logger", version
4948
if use_hermes()
5049
ss.dependency "hermes-engine"
5150
end
5251

53-
ss.subspec "bridging" do |sss|
54-
sss.dependency "React-jsi", version
55-
sss.source_files = podspec_sources("react/bridging/**/*.{cpp,h}", "react/bridging/**/*.h")
56-
sss.exclude_files = "react/bridging/tests"
57-
sss.header_dir = "react/bridging"
58-
sss.pod_target_xcconfig = { "HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)/ReactCommon\"" }
59-
if use_hermes()
60-
sss.dependency "hermes-engine"
61-
end
62-
end
63-
6452
ss.subspec "core" do |sss|
6553
sss.source_files = podspec_sources("react/nativemodule/core/ReactCommon/**/*.{cpp,h}", "react/nativemodule/core/ReactCommon/**/*.h")
6654
sss.pod_target_xcconfig = { "HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)/ReactCommon\" \"$(PODS_CONFIGURATION_BUILD_DIR)/React-debug/React_debug.framework/Headers\" \"$(PODS_CONFIGURATION_BUILD_DIR)/React-debug/React_featureflags.framework/Headers\" \"$(PODS_CONFIGURATION_BUILD_DIR)/React-utils/React_utils.framework/Headers\"" }
55+
sss.dependency "React-bridging"
56+
sss.dependency "React-cxxreact", version
6757
sss.dependency "React-debug", version
6858
sss.dependency "React-featureflags", version
6959
sss.dependency "React-utils", version

packages/react-native/ReactCommon/jserrorhandler/React-jserrorhandler.podspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ Pod::Spec.new do |s|
3838

3939
s.dependency "React-jsi"
4040
s.dependency "React-cxxreact"
41-
s.dependency "ReactCommon/turbomodule/bridging"
41+
s.dependency "React-bridging"
4242
add_dependency(s, "React-featureflags")
4343
add_dependency(s, "React-debug")
4444

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
# Copyright (c) Meta Platforms, Inc. and affiliates.
2+
#
3+
# This source code is licensed under the MIT license found in the
4+
# LICENSE file in the root directory of this source tree.
5+
6+
require "json"
7+
8+
package = JSON.parse(File.read(File.join(__dir__, "..", "..", "..", "package.json")))
9+
version = package['version']
10+
11+
source = { :git => 'https://github.com/facebook/react-native.git' }
12+
if version == '1000.0.0'
13+
# This is an unpublished version, use the latest commit hash of the react-native repo, which we’re presumably in.
14+
source[:commit] = `git rev-parse HEAD`.strip if system("git rev-parse --git-dir > /dev/null 2>&1")
15+
else
16+
source[:tag] = "v#{version}"
17+
end
18+
19+
Pod::Spec.new do |s|
20+
s.name = "React-bridging"
21+
s.version = version
22+
s.summary = "-"
23+
s.homepage = "https://reactnative.dev/"
24+
s.license = package["license"]
25+
s.author = "Meta Platforms, Inc. and its affiliates"
26+
s.platforms = min_supported_versions
27+
s.source = source
28+
s.source_files = podspec_sources("*.{cpp,h}", "*.h")
29+
s.header_dir = "react/bridging"
30+
s.pod_target_xcconfig = {
31+
"USE_HEADERMAP" => "YES",
32+
"CLANG_CXX_LANGUAGE_STANDARD" => rct_cxx_language_standard(),
33+
"DEFINES_MODULE" => "YES"
34+
}
35+
36+
resolve_use_frameworks(s, header_mappings_dir: "../..", module_name: "React_bridging")
37+
38+
s.dependency "React-jsi"
39+
s.dependency "React-callinvoker"
40+
s.dependency "React-timing"
41+
42+
add_rn_third_party_dependencies(s)
43+
add_rncore_dependency(s)
44+
end

packages/react-native/ReactCommon/react/nativemodule/core/platform/ios/React-NativeModulesApple.podspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ Pod::Spec.new do |s|
3737
s.source_files = podspec_sources("ReactCommon/**/*.{mm,cpp,h}", "ReactCommon/**/*.{h}")
3838

3939
s.dependency "ReactCommon/turbomodule/core"
40-
s.dependency "ReactCommon/turbomodule/bridging"
40+
s.dependency "React-bridging"
4141
s.dependency "React-callinvoker"
4242
s.dependency "React-Core"
4343
s.dependency "React-cxxreact"

packages/react-native/ReactCommon/react/nativemodule/dom/React-domnativemodule.podspec

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ Pod::Spec.new do |s|
5151

5252
s.dependency "Yoga"
5353
s.dependency "ReactCommon/turbomodule/core"
54+
s.dependency "React-bridging"
5455
s.dependency "React-Fabric"
5556
s.dependency "React-Fabric/bridging"
5657
s.dependency "React-FabricComponents"

packages/react-native/ReactCommon/react/nativemodule/idlecallbacks/React-idlecallbacksnativemodule.podspec

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ Pod::Spec.new do |s|
4848
add_rncore_dependency(s)
4949

5050
s.dependency "ReactCommon/turbomodule/core"
51+
s.dependency "React-bridging"
5152
s.dependency "React-runtimescheduler"
5253
add_dependency(s, "React-RCTFBReactNativeSpec")
5354
add_dependency(s, "React-runtimeexecutor", :additional_framework_paths => ["platform/ios"])

packages/react-native/ReactCommon/react/nativemodule/intersectionobserver/React-intersectionobservernativemodule.podspec

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ Pod::Spec.new do |s|
5555
add_rncore_dependency(s)
5656

5757
s.dependency "ReactCommon/turbomodule/core"
58+
s.dependency "React-bridging"
5859

5960
s.dependency "React-Fabric"
6061
s.dependency "React-Fabric/bridging"

0 commit comments

Comments
 (0)