I’m currently facing an issue while upgrading my React Native app. I recently updated the project from React Native 0.76.9 to 0.79.6 to meet the Google Play Store 16KB memory page requirement.
The Android build works fine after the upgrade. However, when building the iOS version, I encounter the following error during the build process.
As part of the migration, I switched to Bridgeless mode and created a new AppDelegate.swift file along with the necessary bridging header files (previously I was using AppDelegate.mm).
I have already tried the following steps without success:
Reinstalled all dependencies (node_modules, Pods, etc.)
Cleaned the build and recompiled
Followed the migration documentation
I’m attaching the details of my package.json, Podfile, and AppDelegate.swift for reference.
Could someone please help me identify what might be causing this issue? Any suggestions or guidance would be greatly appreciated!
Errors from Xcode (Xcode version 16.3)
Module map file '/Users/usr1/Library/Developer/Xcode/DerivedData/MyApp-fenbzzaupgebbsaxhzglnynncvua/Build/Products/Debug-iphonesimulator/FirebaseCoreInternal/FirebaseCoreInternal.modulemap' not found
Module map file '/Users/usr1/Library/Developer/Xcode/DerivedData/MyApp-fenbzzaupgebbsaxhzglnynncvua/Build/Products/Debug-iphonesimulator/FirebaseCrashlytics/FirebaseCrashlytics.modulemap' not found
Module map file '/Users/usr1/Library/Developer/Xcode/DerivedData/MyApp-fenbzzaupgebbsaxhzglnynncvua/Build/Products/Debug-iphonesimulator/FirebaseRemoteConfigInterop/FirebaseRemoteConfigInterop.modulemap' not found
Module map file '/Users/usr1/Library/Developer/Xcode/DerivedData/MyApp-fenbzzaupgebbsaxhzglnynncvua/Build/Products/Debug-iphonesimulator/FirebaseSessions/FirebaseSessions.modulemap' not found
Module map file '/Users/usr1/Library/Developer/Xcode/DerivedData/MyApp-fenbzzaupgebbsaxhzglnynncvua/Build/Products/Debug-iphonesimulator/GTMAppAuth/GTMAppAuth.modulemap' not found
Module map file '/Users/usr1/Library/Developer/Xcode/DerivedData/MyApp-fenbzzaupgebbsaxhzglnynncvua/Build/Products/Debug-iphonesimulator/PromisesSwift/Promises.modulemap' not found
Module map file '/Users/usr1/Library/Developer/Xcode/DerivedData/MyApp-fenbzzaupgebbsaxhzglnynncvua/Build/Products/Debug-iphonesimulator/react-native-keyboard-controller/react_native_keyboard_controller.modulemap' not found
Module map file '/Works/WB2/rnUpgrades/build1/appv2/ios/Pods/Headers/Public/AppAuth/AppAuth.modulemap' not found
Module map file '/Works/WB2/rnUpgrades/build1/appv2/ios/Pods/Headers/Public/DoubleConversion/DoubleConversion.modulemap' not found
Module map file '/Works/WB2/rnUpgrades/build1/appv2/ios/Pods/Headers/Public/FBLPromises/PromisesObjC.modulemap' not found
Module map file '/Works/WB2/rnUpgrades/build1/appv2/ios/Pods/Headers/Public/FirebaseCore/FirebaseCore.modulemap' not found
Module map file '/Works/WB2/rnUpgrades/build1/appv2/ios/Pods/Headers/Public/FirebaseCoreExtension/FirebaseCoreExtension.modulemap' not found
Module map file '/Works/WB2/rnUpgrades/build1/appv2/ios/Pods/Headers/Public/FirebaseInstallations/FirebaseInstallations.modulemap' not found
Module map file '/Works/WB2/rnUpgrades/build1/appv2/ios/Pods/Headers/Public/GTMSessionFetcher/GTMSessionFetcher.modulemap' not found
Module map file '/Works/WB2/rnUpgrades/build1/appv2/ios/Pods/Headers/Public/GoogleDataTransport/GoogleDataTransport.modulemap' not found
Module map file '/Works/WB2/rnUpgrades/build1/appv2/ios/Pods/Headers/Public/GoogleSignIn/GoogleSignIn.modulemap' not found
Module map file '/Works/WB2/rnUpgrades/build1/appv2/ios/Pods/Headers/Public/GoogleUtilities/GoogleUtilities.modulemap' not found
Module map file '/Works/WB2/rnUpgrades/build1/appv2/ios/Pods/Headers/Public/RCTDeprecation/RCTDeprecation.modulemap' not found
Module map file '/Works/WB2/rnUpgrades/build1/appv2/ios/Pods/Headers/Public/RCTFabric/React-RCTFabric.modulemap' not found
Module map file '/Works/WB2/rnUpgrades/build1/appv2/ios/Pods/Headers/Public/RCTRuntime/React-RCTRuntime.modulemap' not found
Module map file '/Works/WB2/rnUpgrades/build1/appv2/ios/Pods/Headers/Public/RCTTypeSafety/RCTTypeSafety.modulemap' not found
Module map file '/Works/WB2/rnUpgrades/build1/appv2/ios/Pods/Headers/Public/RNReanimated/RNReanimated.modulemap' not found
Module map file '/Works/WB2/rnUpgrades/build1/appv2/ios/Pods/Headers/Public/RNWorklets/RNWorklets.modulemap' not found
Module map file '/Works/WB2/rnUpgrades/build1/appv2/ios/Pods/Headers/Public/React/React-Core.modulemap' not found
Module map file '/Works/WB2/rnUpgrades/build1/appv2/ios/Pods/Headers/Public/ReactAppDependencyProvider/ReactAppDependencyProvider.modulemap' not found
Module map file '/Works/WB2/rnUpgrades/build1/appv2/ios/Pods/Headers/Public/ReactCodegen/ReactCodegen.modulemap' not found
Module map file '/Works/WB2/rnUpgrades/build1/appv2/ios/Pods/Headers/Public/ReactCommon/ReactCommon.modulemap' not found
Module map file '/Works/WB2/rnUpgrades/build1/appv2/ios/Pods/Headers/Public/React_Fabric/React-Fabric.modulemap' not found
Module map file '/Works/WB2/rnUpgrades/build1/appv2/ios/Pods/Headers/Public/React_FabricComponents/React-FabricComponents.modulemap' not found
Module map file '/Works/WB2/rnUpgrades/build1/appv2/ios/Pods/Headers/Public/React_NativeModulesApple/React-NativeModulesApple.modulemap' not found
Module map file '/Works/WB2/rnUpgrades/build1/appv2/ios/Pods/Headers/Public/React_RCTAppDelegate/React-RCTAppDelegate.modulemap' not found
Module map file '/Works/WB2/rnUpgrades/build1/appv2/ios/Pods/Headers/Public/folly/RCT-Folly.modulemap' not found
Module map file '/Works/WB2/rnUpgrades/build1/appv2/ios/Pods/Headers/Public/glog/glog.modulemap' not found
Module map file '/Works/WB2/rnUpgrades/build1/appv2/ios/Pods/Headers/Public/jsi/React-jsi.modulemap' not found
Module map file '/Works/WB2/rnUpgrades/build1/appv2/ios/Pods/Headers/Public/jsinspector_modern/React-jsinspector.modulemap' not found
Module map file '/Works/WB2/rnUpgrades/build1/appv2/ios/Pods/Headers/Public/jsinspector_modern_tracing/React-jsinspectortracing.modulemap' not found
Module map file '/Works/WB2/rnUpgrades/build1/appv2/ios/Pods/Headers/Public/nanopb/nanopb.modulemap' not found
Module map file '/Works/WB2/rnUpgrades/build1/appv2/ios/Pods/Headers/Public/react_debug/React-debug.modulemap' not found
Module map file '/Works/WB2/rnUpgrades/build1/appv2/ios/Pods/Headers/Public/react_featureflags/React-featureflags.modulemap' not found
Module map file '/Works/WB2/rnUpgrades/build1/appv2/ios/Pods/Headers/Public/react_nativemodule_defaults/React-defaultsnativemodule.modulemap' not found
Module map file '/Works/WB2/rnUpgrades/build1/appv2/ios/Pods/Headers/Public/react_nativemodule_dom/React-domnativemodule.modulemap' not found
Module map file '/Works/WB2/rnUpgrades/build1/appv2/ios/Pods/Headers/Public/react_nativemodule_featureflags/React-featureflagsnativemodule.modulemap' not found
Module map file '/Works/WB2/rnUpgrades/build1/appv2/ios/Pods/Headers/Public/react_nativemodule_idlecallbacks/React-idlecallbacksnativemodule.modulemap' not found
Module map file '/Works/WB2/rnUpgrades/build1/appv2/ios/Pods/Headers/Public/react_nativemodule_microtasks/React-microtasksnativemodule.modulemap' not found
Module map file '/Works/WB2/rnUpgrades/build1/appv2/ios/Pods/Headers/Public/react_renderer_css/React-renderercss.modulemap' not found
Module map file '/Works/WB2/rnUpgrades/build1/appv2/ios/Pods/Headers/Public/react_renderer_debug/React-rendererdebug.modulemap' not found
Module map file '/Works/WB2/rnUpgrades/build1/appv2/ios/Pods/Headers/Public/react_renderer_graphics/React-graphics.modulemap' not found
Module map file '/Works/WB2/rnUpgrades/build1/appv2/ios/Pods/Headers/Public/react_renderer_imagemanager/React-ImageManager.modulemap' not found
Module map file '/Works/WB2/rnUpgrades/build1/appv2/ios/Pods/Headers/Public/react_runtime/React-jsitooling.modulemap' not found
Module map file '/Works/WB2/rnUpgrades/build1/appv2/ios/Pods/Headers/Public/react_utils/React-utils.modulemap' not found
Module map file '/Works/WB2/rnUpgrades/build1/appv2/ios/Pods/Headers/Public/reacthermes/React-hermes.modulemap' not found
Module map file '/Works/WB2/rnUpgrades/build1/appv2/ios/Pods/Headers/Public/yoga/Yoga.modulemap' not found
My AppDelegate.swift
import UIKit
// ✅ Import specific Firebase modules (not just "Firebase")
import FirebaseCore
import FirebaseAnalytics // If using analytics
import FirebaseMessaging // For push notifications
import FBSDKCoreKit
import FBSDKLoginKit
import SDWebImage
import SDWebImageWebPCoder
import React
import UserNotifications
@main
class AppDelegate: UIResponder, UIApplicationDelegate, RCTBridgeDelegate, UNUserNotificationCenterDelegate {
var window: UIWindow?
var bridge: RCTBridge?
// MARK: - Application Lifecycle
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
// 1️⃣ Firebase Configuration
FirebaseApp.configure()
print("✅ Firebase configured")
// Configure Firebase Messaging (if using push notifications)
Messaging.messaging().delegate = self
print("✅ Firebase Messaging configured")
// 2️⃣ SDWebImage WebP Support
SDImageCodersManager.shared.addCoder(SDImageWebPCoder.shared)
print("✅ SDWebImage WebP configured")
// 3️⃣ Facebook SDK Initialization
ApplicationDelegate.shared.application(
application,
didFinishLaunchingWithOptions: launchOptions
)
print("✅ Facebook SDK configured")
// 4️⃣ Request Push Notification Permissions
UNUserNotificationCenter.current().delegate = self
let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
UNUserNotificationCenter.current().requestAuthorization(
options: authOptions,
completionHandler: { granted, error in
if let error = error {
print("❌ Notification permission error: \(error)")
} else {
print("✅ Notification permission granted: \(granted)")
}
}
)
application.registerForRemoteNotifications()
// 5️⃣ Initialize React Native Bridge
bridge = RCTBridge(delegate: self, launchOptions: launchOptions)
// 6️⃣ Create Root View based on architecture
let rootView: UIView
#if RCT_NEW_ARCH_ENABLED
// New Architecture: Use Fabric Surface Hosting View
print("🎉 NEW ARCHITECTURE ENABLED - Using Fabric")
rootView = RCTFabricSurfaceHostingProxyRootView(
bridge: bridge!,
moduleName: "MyApp",
initialProperties: [:]
)
#else
// Bridge Mode: Use traditional RCTRootView
print("⚠️ BRIDGE MODE - New Architecture not enabled")
rootView = RCTRootView(
bridge: bridge!,
moduleName: "MyApp",
initialProperties: [:]
)
#endif
rootView.backgroundColor = UIColor.white
// 7️⃣ Setup Window and Root View Controller
let rootViewController = UIViewController()
rootViewController.view = rootView
window = UIWindow(frame: UIScreen.main.bounds)
window?.rootViewController = rootViewController
window?.makeKeyAndVisible()
// 8️⃣ Show Splash Screen
showSplashScreen()
return true
}
// MARK: - RCTBridgeDelegate
func sourceURL(for bridge: RCTBridge) -> URL? {
#if DEBUG
print("📦 Loading bundle from Metro...")
return RCTBundleURLProvider.sharedSettings().jsBundleURL(forBundleRoot: "index")
#else
print("📦 Loading bundle from main bundle...")
return Bundle.main.url(forResource: "main", withExtension: "jsbundle")
#endif
}
// MARK: - Facebook App Events
func applicationDidBecomeActive(_ application: UIApplication) {
AppEvents.shared.activateApp()
print("✅ Facebook App Events activated")
}
// MARK: - Push Notifications - Device Token
func application(
_ application: UIApplication,
didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data
) {
// Firebase Messaging
Messaging.messaging().apnsToken = deviceToken
let tokenParts = deviceToken.map { data in String(format: "%02.2hhx", data) }
let token = tokenParts.joined()
print("✅ Device Token: \(token)")
}
func application(
_ application: UIApplication,
didFailToRegisterForRemoteNotificationsWithError error: Error
) {
print("❌ Failed to register for remote notifications: \(error)")
}
// MARK: - Deep Linking
func application(
_ app: UIApplication,
open url: URL,
options: [UIApplication.OpenURLOptionsKey : Any] = [:]
) -> Bool {
print("🔗 Deep link received: \(url)")
var handled = false
// Facebook Deep Linking
if ApplicationDelegate.shared.application(app, open: url, options: options) {
print("✅ Facebook handled URL")
handled = true
}
// Google Sign-In (uncomment if using)
// import GoogleSignIn at top
// if GIDSignIn.sharedInstance.handle(url) {
// print("✅ Google Sign-In handled URL")
// handled = true
// }
// React Native Linking
if RCTLinkingManager.application(app, open: url, options: options) {
print("✅ React Native handled URL")
handled = true
}
return handled
}
// MARK: - Universal Links
func application(
_ application: UIApplication,
continue userActivity: NSUserActivity,
restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void
) -> Bool {
print("🔗 Universal link received: \(userActivity.webpageURL?.absoluteString ?? "nil")")
return RCTLinkingManager.application(
application,
continue: userActivity,
restorationHandler: restorationHandler
)
}
// MARK: - Splash Screen Helper
private func showSplashScreen() {
// Using react-native-splash-view
if let splashViewClass = NSClassFromString("SplashView") as? NSObject.Type {
let sharedInstanceSelector = NSSelectorFromString("sharedInstance")
if splashViewClass.responds(to: sharedInstanceSelector),
let splashInstance = splashViewClass.perform(sharedInstanceSelector)?.takeUnretainedValue() as? NSObject {
let showSplashSelector = NSSelectorFromString("showSplash")
if splashInstance.responds(to: showSplashSelector) {
splashInstance.perform(showSplashSelector)
print("✅ Splash Screen shown successfully")
return
}
}
}
print("⚠️ SplashView module not found - make sure react-native-splash-view is installed")
}
}
// MARK: - UNUserNotificationCenterDelegate
extension AppDelegate {
func userNotificationCenter(
_ center: UNUserNotificationCenter,
willPresent notification: UNNotification,
withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void
) {
print("📱 Notification received in foreground: \(notification.request.content.title)")
// Extract notification data
let userInfo = notification.request.content.userInfo
print("📱 Notification data: \(userInfo)")
if #available(iOS 14.0, *) {
completionHandler([.badge, .sound, .banner, .list])
} else {
completionHandler([.badge, .sound, .alert])
}
}
func userNotificationCenter(
_ center: UNUserNotificationCenter,
didReceive response: UNNotificationResponse,
withCompletionHandler completionHandler: @escaping () -> Void
) {
let userInfo = response.notification.request.content.userInfo
print("📱 Notification tapped: \(userInfo)")
// Handle notification tap - you can pass data to React Native here
completionHandler()
}
}
// MARK: - Firebase Messaging Delegate
extension AppDelegate: MessagingDelegate {
func messaging(
_ messaging: Messaging,
didReceiveRegistrationToken fcmToken: String?
) {
print("✅ Firebase FCM Token: \(fcmToken ?? "nil")")
let dataDict: [String: String] = ["token": fcmToken ?? ""]
NotificationCenter.default.post(
name: Notification.Name("FCMToken"),
object: nil,
userInfo: dataDict
)
// Send token to React Native if needed
// You can send this via React Native event emitter
}
}
package.json
{
"name": "MyApp",
"version": "0.0.1",
"private": true,
"scripts": {
"android": "react-native run-android",
"ios": "react-native run-ios",
"ios:clean": "cd ios && rm -rf build Pods Podfile.lock && pod install && cd ..",
"pods": "cd ios && RCT_NEW_ARCH_ENABLED=1 pod install && cd ..",
"lint": "eslint .",
"start": "react-native start",
"test": "jest",
"android:prod": "react-native run-android --mode=prodDebug --appId com.myapp",
"android:prod-release": "react-native run-android --mode=prodRelease --appId com.myapp",
"android:staging-release": "react-native run-android --mode=stagingRelease --appId com.myapp.staging",
"android:staging": "react-native run-android --mode=stagingDebug --appId com.myapp.staging",
"postinstall": "patch-package"
},
"dependencies": {
"@aashu-dubey/react-native-rating-bar": "^0.2.0",
"@invertase/react-native-apple-authentication": "^2.4.1",
"@react-native-async-storage/async-storage": "^2.1.0",
"@react-native-clipboard/clipboard": "^1.15.0",
"@react-native-community/netinfo": "^11.4.1",
"@react-native-community/push-notification-ios": "^1.11.0",
"@react-native-firebase/analytics": "^21.14.0",
"@react-native-firebase/app": "^21.14.0",
"@react-native-firebase/crashlytics": "^21.14.0",
"@react-native-firebase/messaging": "^21.14.0",
"@react-native-google-signin/google-signin": "^13.1.0",
"@react-navigation/native": "^7.1.18",
"@react-navigation/native-stack": "^7.3.28",
"@rneui/themed": "^4.0.0-rc.8",
"@twotalltotems/react-native-otp-input": "^1.3.11",
"country-list-json": "^1.1.0",
"date-fns": "^4.1.0",
"expo-status-bar": "^2.2.3",
"jwt-decode": "^4.0.0",
"patch-package": "^8.0.0",
"react": "19.0.0",
"react-native": "0.79.6",
"react-native-config": "^1.5.6",
"react-native-device-info": "^14.1.1",
"react-native-fast-image": "^8.6.3",
"react-native-fbsdk-next": "^13.4.1",
"react-native-flash-message": "^0.4.2",
"react-native-gesture-handler": "^2.28.0",
"react-native-image-crop-picker": "^0.51.0",
"react-native-image-progress": "^1.2.0",
"react-native-image-zoom-viewer": "^3.0.1",
"react-native-intl-phone-input": "^1.2.27",
"react-native-keyboard-controller": "^1.19.1",
"react-native-notifications": "^5.1.0",
"react-native-phone-input": "^1.3.7",
"react-native-push-notification": "^8.1.1",
"react-native-reanimated": "^4.1.3",
"react-native-reanimated-carousel": "4.0.3",
"react-native-recaptcha-that-works": "^2.0.0",
"react-native-redux": "^1.0.12",
"react-native-render-html": "^6.3.4",
"react-native-safe-area-context": "^5.6.1",
"react-native-screens": "^4.15.2",
"react-native-select-dropdown": "^3.3.0",
"react-native-share": "^12.0.3",
"react-native-slick": "^1.6.0",
"react-native-splash-screen": "^3.3.0",
"react-native-splash-view": "^0.0.19",
"react-native-svg": "^15.14.0",
"react-native-svg-transformer": "^1.5.0",
"react-native-vector-icons": "^10.2.0",
"react-native-webview": "^13.12.5",
"react-native-worklets": "^0.6.1"
},
"devDependencies": {
"@babel/core": "^7.25.2",
"@babel/preset-env": "^7.25.3",
"@babel/runtime": "^7.25.0",
"@react-native-community/cli": "18.0.0",
"@react-native-community/cli-platform-android": "18.0.0",
"@react-native-community/cli-platform-ios": "18.0.0",
"@react-native/babel-preset": "0.79.6",
"@react-native/eslint-config": "0.79.6",
"@react-native/metro-config": "0.79.6",
"@react-native/typescript-config": "0.79.6",
"@types/jest": "^29.5.13",
"@types/react": "^19.0.0",
"@types/react-native-push-notification": "^8.1.4",
"@types/react-test-renderer": "^19.0.0",
"@types/styled-components-react-native": "^5.2.5",
"babel-plugin-transform-remove-console": "^6.9.4",
"eslint": "^8.19.0",
"jest": "^29.6.3",
"prettier": "2.8.8",
"react-test-renderer": "19.0.0",
"typescript": "5.0.4"
},
"engines": {
"node": ">=18"
}
}
Pod file
# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'
# Resolve react_native_pods.rb with node to allow for hoisting
require Pod::Executable.execute_command('node', ['-p',
'require.resolve(
"react-native/scripts/react_native_pods.rb",
{paths: [process.argv[1]]},
)', __dir__]).strip
platform :ios, min_ios_version_supported
# platform :ios, '15.0'
prepare_react_native_project!
linkage = ENV['USE_FRAMEWORKS'] || 'static'
if linkage != nil
Pod::UI.puts "Configuring Pod with #{linkage}ally linked Frameworks".green
use_frameworks! :linkage => linkage.to_sym
end
def shared_pod
config = use_native_modules!
pod 'SDWebImage', :modular_headers => true
pod 'SDWebImageWebPCoder', :modular_headers => true
use_react_native!(
:path => config[:reactNativePath],
:hermes_enabled => true,
:fabric_enabled => true,
:new_arch_enabled => true,
# Enables Flipper.
#
# Note that if you have use_frameworks! enabled, Flipper will not work and
# you should disable the next line.
# :flipper_configuration => flipper_config,
# An absolute path to your application root.
:app_path => "#{Pod::Config.instance.installation_root}/.."
)
end
target 'MyApp' do
config = use_native_modules!
shared_pod
# Comment the next line if you don't want to use dynamic frameworks
# use_frameworks!
# Pods for MyApp
target 'MyAppTests' do
inherit! :search_paths
# Pods for testing
end
post_install do |installer|
# https://github.com/facebook/react-native/blob/main/packages/react-native/scripts/react_native_pods.rb#L197-L202
react_native_post_install(
installer,
config[:reactNativePath],
:mac_catalyst_enabled => false,
# :ccache_enabled => true
)
# installer.pods_project.build_configurations.each do |config|
# config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64"
# end
end
end
target 'MyApp Staging' do
inherit! :complete
shared_pod
end
target 'MyApp Staging-1' do
# Comment the next line if you don't want to use dynamic frameworks
use_frameworks!
# Pods for MyApp Staging-1
end