From 8a2e7efe010c49a293c146654094b1cb5d6e6acd Mon Sep 17 00:00:00 2001 From: Christian Falch Date: Thu, 14 Aug 2025 07:06:48 -0700 Subject: [PATCH] Use correct version of jsi.cpp (#53266) Summary: When building the xcframeworks on iOS we're including the file `jsi/jsi.cpp` in the Swift Package. This file is also included in Hermes and React Native should use the hermes version of these symbols. This is even described (but overlooked) in the React-jsi podspec file. This causes the error seen in the bug addressed by this commit. The fix is to exclude the `jsi/jsi.cpp` file from the jsi target in our swift package. Fixes https://github.com/facebook/react-native/issues/53257 ## Changelog: [IOS] [FIXED] - Fixed wrong jsi symbols in use when using React.xcframework Pull Request resolved: https://github.com/facebook/react-native/pull/53266 Test Plan: Tested using a precompiled xcframework in the reproduction repository. Reviewed By: rshest Differential Revision: D80252131 Pulled By: cipolleschi fbshipit-source-id: 915e94a1d80c2f45575e58d8054239484e861285 --- packages/react-native/Package.swift | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/react-native/Package.swift b/packages/react-native/Package.swift index bf6f3e98149..6280f48ab08 100644 --- a/packages/react-native/Package.swift +++ b/packages/react-native/Package.swift @@ -84,7 +84,10 @@ let reactDebug = RNTarget( let jsi = RNTarget( name: .jsi, path: "ReactCommon/jsi", - excludedPaths: ["jsi/test", "CMakeLists.txt", "jsi/CMakeLists.txt"], + // JSI is a part of hermes-engine. Including them also in react-native will violate the One Definition Rule. + // Precompiled binaries are only supported with hermes - so we can safely exclude the jsi.cpp file. + // https://github.com/facebook/react-native/issues/53257 + excludedPaths: ["jsi/test", "jsi/jsi.cpp", "CMakeLists.txt", "jsi/CMakeLists.txt"], dependencies: [.reactNativeDependencies] )