@@ -13,11 +13,20 @@ require_relative '../node_modules/react-native-permissions/scripts/setup'
1313$RNFirebaseAnalyticsWithoutAdIdSupport = true
1414$RNFirebaseAsStaticFramework = true
1515
16- # The min_ios_version_supported is iOS 13.4 for RN 74:
17- # However any device that can use iOS 13.4 can also upgrade to iOS 15.6 which
18- # is still supported by the latest version of Xcode for debugging
19- ios_platform_version = '15.6'
16+ # Expo SDK 57 / React Native 0.86 require a minimum deployment target of iOS 16.4.
17+ ios_platform_version = '16.4'
2018platform :ios , ios_platform_version
19+
20+ # Pin the React/Hermes pairing so pod install is deterministic regardless of
21+ # the machine's environment: Hermes V1 (the RN/Expo default engine, and what
22+ # Edge already ships) with React-Core built from source. Do NOT enable
23+ # RCT_USE_PREBUILT_RNCORE: the 0.86.0 prebuilt React-Core binary is built
24+ # against the non-V1 jsi ABI (jsi::Runtime vs V1's jsi::IRuntime), and pairing
25+ # it with the V1 hermesvm artifact crashes at launch with
26+ # "Symbol not found: facebook::jsi::Array::createWithElements".
27+ ENV [ 'RCT_USE_PREBUILT_RNCORE' ] = '0'
28+ ENV [ 'RCT_HERMES_V1_ENABLED' ] = '1'
29+
2130prepare_react_native_project!
2231
2332# Edge addition:
@@ -44,7 +53,25 @@ target 'edge' do
4453 Pod ::UI . warn e
4554 end
4655 end
47- config = use_native_modules!
56+ # Expo SDK 56 autolinking: feed expo's unified native-module config (which
57+ # registers ExpoModulesCore + expo modules + RN community modules) into
58+ # use_native_modules!.
59+ if ENV [ 'EXPO_USE_COMMUNITY_AUTOLINKING' ] == '1'
60+ config_command = [ 'node' , '-e' , "process.argv=['', '', 'config'];require('@react-native-community/cli').run()" ]
61+ else
62+ config_command = [
63+ 'node' ,
64+ '--no-warnings' ,
65+ '--eval' ,
66+ 'require(\'expo/bin/autolinking\')' ,
67+ 'expo-modules-autolinking' ,
68+ 'react-native-config' ,
69+ '--json' ,
70+ '--platform' ,
71+ 'ios'
72+ ]
73+ end
74+ config = use_native_modules! ( config_command )
4875
4976 use_react_native! (
5077 :path => config [ :reactNativePath ] ,
@@ -61,6 +88,20 @@ target 'edge' do
6188 target . build_configurations . each do |config |
6289 config . build_settings [ 'IPHONEOS_DEPLOYMENT_TARGET' ] = ios_platform_version
6390
91+ # Allow non-modular includes (e.g. @react-native-firebase headers that
92+ # include <React/RCTConvert.h>) under use_frameworks! + Xcode 26's strict
93+ # explicit-modules scanning, which otherwise errors on RNFBApp.
94+ config . build_settings [ 'CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES' ] = 'YES'
95+
96+ # @react-native-firebase wrappers import React/Firebase headers
97+ # textually (#import, not @import). Under clang modules + use_frameworks
98+ # on Xcode 26 this fails ("RCTPromiseRejectBlock must be imported from
99+ # module RNFBApp.RNFBAppModule"). Build the RNFB pods without modules so
100+ # their textual imports resolve directly.
101+ if target . name . start_with? ( 'RNFB' )
102+ config . build_settings [ 'CLANG_ENABLE_MODULES' ] = 'NO'
103+ end
104+
64105 # Xcode 17+ / iOS 26 SDK workaround: Re-enable std::allocator<const T>
65106 # which was removed for stricter C++ standard compliance.
66107 # See: https://github.com/getsentry/sentry-cocoa/issues/5172
0 commit comments