invertase / react-native-firebase

🔥 A well-tested feature-rich modular Firebase implementation for React Native. Supports both iOS & Android platforms for all Firebase services.
https://rnfirebase.io
Other
11.6k stars 2.19k forks source link

[🔥🐛] Xcode 15 "An attribute list cannot appear here" (iOS) #7366

Closed abdi4 closed 11 months ago

abdi4 commented 11 months ago

Issue

I updated Xcode to v15 and got this error in a Firestore settings file: "An attribute list cannot appear here"

Describe your issue here

Project Files

Javascript

Click To Expand

#### `package.json`: ```json { "name": "abdi", "version": "1.19.25", "private": true, "scripts": { "ios": "react-native run-ios" }, "dependencies": { "@adrianso/react-native-device-brightness": "^1.2.5", "@expo/react-native-action-sheet": "^3.8.0", "@intercom/intercom-react-native": "3.0.5", "@react-native-async-storage/async-storage": "^1.17.10", "@react-native-camera-roll/camera-roll": "^5.3.1", "@react-native-clipboard/clipboard": "^1.11.1", "@react-native-community/datetimepicker": "^6.5.0", "@react-native-community/netinfo": "^9.3.4", "@react-native-community/push-notification-ios": "^1.10.1", "@react-native-firebase/analytics": "^14.11.1", "@react-native-firebase/app": "^14.11.1", "@react-native-firebase/firestore": "^14.12.0", "@react-native-firebase/installations": "^14.11.1", "@react-native-firebase/messaging": "^14.11.1", "@react-native-firebase/remote-config": "^14.11.1", "@react-native-firebase/storage": "^14.11.1", "@sentry/react-native": "^4.7.1", "appcenter": "2.5.0", "appcenter-analytics": "2.5.0", "formik": "^2.2.9", "json-stable-stringify": "^1.0.1", "jwt-decode": "^3.1.2", "libphonenumber-js": "^1.10.13", "lodash.debounce": "^4.0.8", "lodash.get": "^4.4.2", "lodash.isequal": "^4.5.0", "lodash.memoize": "^4.1.2", "lodash.omit": "^4.5.0", "lodash.pick": "^4.4.0", "lodash.throttle": "^4.1.1", "lodash.uniqby": "^4.5.0", "lottie-ios": "3.4.1", "lottie-react-native": "^5.1.4", "moment": "2.27.0", "moment-timezone": "0.5.31", "patch-package": "^6.4.7", "postinstall-postinstall": "^2.1.0", "promise.allsettled": "^1.0.2", "pusher-redux": "^0.5.0", "query-string": "^7.1.1", "react": "17.0.2", "react-content-loader": "5.0.2", "react-native": "0.67.5", "react-native-alternate-icons": "^0.5.0", "react-native-app-auth": "^6.4.3", "react-native-audio-recorder-player": "^3.5.1", "react-native-background-fetch": "^3.1.0", "react-native-barcode-mask": "^1.2.4", "react-native-barcode-svg": "^0.0.15", "react-native-blob-util": "^0.16.2", "react-native-bootsplash": "3.2.6", "react-native-calendars": "1.1264.0", "react-native-camera": "^3.9.0", "react-native-circular-progress": "^1.3.0", "react-native-code-push": "^6.2.0", "react-native-color-wheel": "https://github.com/netbeast/react-native-color-wheel.git#8cf9b24e0e9d7806b7f77ada22568ff20c461bd5", "react-native-config": "^1.4.8", "react-native-device-info": "^10.2.1", "react-native-dotenv": "^3.3.1", "react-native-draggable-flatlist": "^3.1.1", "react-native-fast-image": "^8.6.1", "react-native-file-viewer": "^2.0.0", "react-native-flipper": "0.162.0", "react-native-gesture-handler": "^2.7.1", "react-native-get-random-values": "^1.8.0", "react-native-gifted-chat": "0.13.0", "react-native-google-fit": "^0.19.0", "react-native-google-places-autocomplete": "^1.4.1", "react-native-health": "^1.17.0", "react-native-htmlview": "^0.16.0", "react-native-image-picker": "^4.10.3", "react-native-image-viewing": "^0.2.2", "react-native-keyboard-aware-scroll-view": "^0.9.5", "react-native-linear-gradient": "^2.6.2", "react-native-localize": "^2.2.4", "react-native-maps": "^0.26.1", "react-native-modal": "^13.0.1", "react-native-modal-datetime-picker": "^14.0.0", "react-native-mparticle": "^2.7.6", "react-native-permissions": "^3.8.4", "react-native-purchases": "6.0.1", "react-native-push-notification": "^8.1.1", "react-native-qrcode-svg": "^6.1.2", "react-native-rate": "^1.1.10", "react-native-reanimated": "^2.12.0", "react-native-redash": "^10.1.1", "react-native-render-html": "^4.2.0", "react-native-safe-area-context": "^4.4.1", "react-native-screens": "^2.18.1", "react-native-share": "^8.2.0", "react-native-shared-element": "^0.8.4", "react-native-signature-capture": "^0.4.10", "react-native-snap-carousel": "^3.9.1", "react-native-sound": "^0.11.2", "react-native-svg": "^13.5.0", "react-native-tab-view": "2.16.0", "react-native-url-polyfill": "^1.3.0", "react-native-vector-icons": "^9.2.0", "react-native-video": "5.2.1", "react-native-view-shot": "^3.5.0", "react-native-walkthrough": "^0.2.1", "react-native-watch-connectivity": "^0.5.0", "react-native-webview": "^11.23.1", "react-native-youtube-iframe": "^2.2.2", "react-navigation": "^4.4.3", "react-navigation-redux-helpers": "^3.0.0", "react-navigation-shared-element": "^1.0.0", "react-navigation-stack": "^1.7.3", "react-navigation-tabs": "^2.11.2", "react-redux": "^8.0.4", "redux": "^4.2.0", "redux-action-watch": "^1.0.6", "redux-flipper": "^2.0.2", "redux-persist": "^6.0.0", "reselect": "^4.1.6", "tinycolor2": "^1.4.2", "uuid": "^9.0.0", "victory-native": "^36.6.11", "yup": "^0.32.11" }, "reactNativePermissionsIOS": [ "AppTrackingTransparency", "BluetoothPeripheral", "Calendars", "Camera", "Contacts", "FaceID", "LocationAccuracy", "LocationAlways", "LocationWhenInUse", "MediaLibrary", "Microphone", "Motion", "Notifications", "PhotoLibrary", "PhotoLibraryAddOnly", "Reminders", "Siri", "SpeechRecognition", "StoreKit" ], "devDependencies": { "@babel/cli": "^7.2.3", "@babel/core": "^7.12.9", "@babel/preset-env": "^7.12.11", "@babel/preset-typescript": "^7.13.0", "@babel/runtime": "^7.12.5", "@react-native-community/eslint-config": "^3.1.0", "@testing-library/jest-native": "^5.0.0", "@testing-library/react-native": "^11.2.0", "@tsconfig/react-native": "^2.0.2", "@types/jest": "^29.1.2", "@types/lodash.debounce": "^4.0.7", "@types/lodash.get": "^4.4.7", "@types/lodash.throttle": "^4.1.7", "@types/react": "17.0.30", "@types/react-native": "^0.65.8", "@types/react-native-calendars": "1.1264.3", "@types/react-native-push-notification": "^8.1.1", "@types/react-native-vector-icons": "^6.4.12", "@types/react-native-video": "^5.0.14", "@types/react-test-renderer": "^17.0.1", "@types/uuid": "^8.3.4", "@typescript-eslint/eslint-plugin": "^5.40.1", "@typescript-eslint/parser": "^5.40.1", "@welldone-software/why-did-you-render": "^7.0.1", "appium": "^1.22.3", "appium-doctor": "^1.16.2", "babel-eslint": "^10.1.0", "babel-jest": "^29.2.0", "babel-plugin-module-resolver": "^4.1.0", "babel-plugin-transform-inline-environment-variables": "^0.4.4", "babel-plugin-transform-remove-console": "^6.9.4", "chalk": "^4.1.2", "commander": "8.3.0", "eslint": "8.25.0", "eslint-config-airbnb": "^19.0.4", "eslint-plugin-import": "^2.26.0", "eslint-plugin-jsx-a11y": "^6.6.1", "eslint-plugin-prettier": "^4.2.1", "eslint-plugin-react": "^7.31.10", "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-react-native": "^4.0.0", "jest": "^29.2.0", "jest-circus": "^29.2.0", "jest-jasmine2": "^29.2.2", "metro-react-native-babel-preset": "^0.73.2", "mock-async-storage": "^2.2.0", "prettier": "^2.7.1", "prettier-eslint": "^15.0.1", "react-native-infinite-flatlist-patch": "^1.1.2", "react-native-version": "^4.0.0", "react-test-renderer": "17.0.2", "shelljs": "^0.8.5", "typescript": "4.8.4", "webdriverio": "^7.25.2", "yalc": "^1.0.0-pre.53" }, "resolutions": { "react-devtools-core": "4.24.3", "react-native-gifted-chat/@expo/react-native-action-sheet": "^3.6.0", "**/moment-timezone/moment": "2.27.0", "**/@types/react": "17.0.30" }, "engines": { "node": ">=16.17.1" }, "isSwift": true, "rnpm": { "assets": [ "./assets/fonts" ] } } ``` #### `firebase.json` for react-native-firebase v6: ```json # N/A ```

iOS

Click To Expand

#### `ios/Podfile`: - [ ] I'm not using Pods - [x] I'm using Pods and my Podfile looks like: ```ruby require_relative '../node_modules/react-native/scripts/react_native_pods' require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules' platform :ios, '13.0' # Prevent massive warning messages on `pod install` # https://github.com/CocoaPods/CocoaPods/issues/3763 install! 'cocoapods', :deterministic_uuids => false # https://rnfirebase.io/analytics/usage#disable-ad-id-usage-on-ios $RNFirebaseAnalyticsWithoutAdIdSupport = true target 'abdi' do project 'abdi', 'Staging' => :release config = use_native_modules! use_react_native!( :path => config[:reactNativePath], :hermes_enabled => true ) # Needed for react-native-giphy-keyboard pod 'PINCache', :modular_headers => true # Needed for RN RNAudioRecorderPlayer pod 'React-Core', :path => '../node_modules/react-native/', :modular_headers => true pod 'mParticle-Apple-SDK', '~> 8.8.0' pod 'react-native-mparticle', :path => '../node_modules/react-native-mparticle' pod 'mParticle-AppsFlyer' target 'abdiTests' do inherit! :complete # Pods for testing end # Enables Flipper. # # Note that if you have use_frameworks! enabled, Flipper will not work and # you should disable the next line. # Source: https://github.com/facebook/flipper/blob/main/react-native/ReactNativeFlipperExample/ios/Podfile use_flipper!({ 'Flipper' => '0.167.0', 'Flipper-Folly' => '2.6.10', 'Flipper-DoubleConversion' => '3.2.0', 'Flipper-Glog' => '0.5.0.3', 'Flipper-PeerTalk' => '0.0.4', 'OpenSSL-Universal' => '1.1.1100' }) # Set bitcode, deployment targets and xcode 12 compat post_install do |installer| react_native_post_install(installer) __apply_Xcode_12_5_M1_post_install_workaround(installer) installer.pods_project.targets.each do |target| target.build_configurations.each do |config| config.build_settings['ONLY_ACTIVE_ARCH'] = 'YES' # React Native: hermes doesn't support i386. arm64 added by us for m1 compat config.build_settings['EXCLUDED_ARCHS[sdk=iphonesimulator*]'] = 'i386 arm64' end end installer.pods_project.build_configurations.each do |config| if config.name == 'Staging' config.build_settings['CONFIGURATION_BUILD_DIR'] = '$(BUILD_DIR)/Release$(EFFECTIVE_PLATFORM_NAME)' end config.build_settings['ONLY_ACTIVE_ARCH'] = 'YES' config.build_settings['ENABLE_BITCODE'] = config.name == 'Debug' || config.name == 'Develop' ? 'NO' : 'YES' # This was causing some issues running release mode locally config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '12.0' # React Native: hermes doesn't support i386. arm64 added by us for m1 compat config.build_settings['EXCLUDED_ARCHS[sdk=iphonesimulator*]'] = 'i386 arm64' # https://stackoverflow.com/a/53882177 config.build_settings['ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES'] = '$(inherited)' config.build_settings['CODE_SIGNING_ALLOWED'] = 'NO' end end end ``` #### `AppDelegate.m`: ```objc #import "AppDelegate.h" #import "RNBootSplash.h" //#import //#import #import #import #import #import "ReactNativeConfig.h" #import #import #import #import #import @import Firebase; @import RNSiriShortcuts; @import mParticle_Apple_SDK; #import #import #import #import #import #import #import @implementation AppDelegate - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary *)options { [[MParticle sharedInstance] openURL: url options: options]; if ([self.authorizationFlowManagerDelegate resumeExternalUserAgentFlowWithURL:url]) { return YES; } return [RCTLinkingManager application:application openURL:url options:options]; } - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [self initializeFlipper:application]; // start mParticlez NSString *mParticleAPIKey = [ReactNativeConfig envFor:@"IOS_MPARTICLE_API_KEY"]; NSString *mParticleSecret = [ReactNativeConfig envFor:@"IOS_MPARTICLE_API_SECRET"]; NSString *mParticlePlanId = [ReactNativeConfig envFor:@"MPARTICLE_DATAPLAN_ID"]; NSNumberFormatter *f = [[NSNumberFormatter alloc] init]; f.numberStyle = NSNumberFormatterDecimalStyle; NSNumber *mParticlePlanVersion = [f numberFromString:[ReactNativeConfig envFor:@"MPARTICLE_DATAPLAN_VERSION"]]; MParticleOptions *mParticleOptions = [MParticleOptions optionsWithKey:mParticleAPIKey secret:mParticleSecret]; // This disables mParticles default AppDelegate proxy (which overrides this) // Because of this, some mParticle functions may not automatically be called, unless invoked with [MParticle sharedInstance] // Examples in openURL and continueUserActivity // see MPSurrogateAppDelegate.m for what's probably a complete list of functions // (openURL, didReceiveRemoteNotification, didRegisterForRemoteNotificationsWithDeviceToken, didFailToRegisterForRemoteNotificationsWithError, continueUserActivity, didUpdateUserActivity) mParticleOptions.proxyAppDelegate = NO; mParticleOptions.onCreateBatch = ^NSDictionary * _Nullable(NSDictionary * _Nonnull batch) { // the modified version of the passed in object to return NSMutableDictionary *modifiedBatch = [NSMutableDictionary dictionaryWithDictionary:batch]; // a mutable copy of the messages array NSMutableArray *modifiedMessages = [batch[@"msgs"] mutableCopy]; // a built-up list of messages to remove from the batch NSMutableSet *messageIdsToRemove = [NSMutableSet setWithCapacity:modifiedMessages.count]; for (NSDictionary *message in modifiedMessages) { // remove state transition (AST) events, except // for initialisation and exit (based on fields) NSString *type = message[@"dt"]; BOOL isFirstRun = [message[@"ifr"] boolValue]; BOOL isUpgrade = [message[@"iu"] boolValue]; if ([type isEqualToString:@"ast"] && !isFirstRun && !isUpgrade) { [messageIdsToRemove addObject:message[@"id"]]; } } // create a filter to remove messages with. checks ID is not in the remove set NSPredicate *filterMessagesById = [NSPredicate predicateWithFormat:@"NOT (id IN %@)", messageIdsToRemove]; [modifiedMessages filterUsingPredicate:filterMessagesById]; modifiedBatch[@"msgs"] = modifiedMessages; return modifiedBatch; }; mParticleOptions.dataPlanId = mParticlePlanId; // Always undercase with white space replaced with '_' mParticleOptions.dataPlanVersion = mParticlePlanVersion; [[MParticle sharedInstance] startWithOptions:mParticleOptions]; // end mParticle [FIRApp configure]; // Check if the app launched with any shortcuts BOOL launchedFromShortcut = [launchOptions objectForKey:@"UIApplicationLaunchOptionsUserActivityDictionaryKey"] != nil; // Add a boolean to the initialProperties to let the app know you got the initial shortcut NSDictionary *initialProperties = @{ @"launchedFromShortcut":@(launchedFromShortcut) }; // [AppCenterReactNativeAnalytics registerWithInitiallyEnabled:true]; // Initialize AppCenter analytics // [AppCenterReactNative register]; // Initialize AppCenter // Intercom NSString *intercomApiKey = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"IntercomAPIKey"]; NSString *intercomAppId = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"IntercomAppId"]; [IntercomModule initialize:intercomApiKey withAppId:intercomAppId]; RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions]; RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge moduleName:@"mypthubnative" initialProperties:initialProperties]; if (@available(iOS 13.0, *)) { rootView.backgroundColor = [UIColor systemBackgroundColor]; } else { rootView.backgroundColor = [UIColor whiteColor]; } self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; UIViewController *rootViewController = [UIViewController new]; rootViewController.view = rootView; self.window.rootViewController = rootViewController; [self.window makeKeyAndVisible]; [RNBootSplash initWithStoryboard:@"BootSplash" rootView:rootView]; [[TSBackgroundFetch sharedInstance] didFinishLaunching]; return YES; } - (NSURL *)sourceURLForBridge:(RCTBridge *)bridge { #if DEBUG return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil]; #else return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"]; #endif } // This method checks for shortcuts issued to the app - (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray> *restorableObjects))restorationHandler { UIViewController *viewController = [self.window rootViewController]; RCTRootView *rootView = (RCTRootView*) [viewController view]; [[MParticle sharedInstance] continueUserActivity: userActivity restorationHandler: restorationHandler]; // If the initial properties say the app launched from a shortcut (see above), tell the library about it. if ([[rootView.appProperties objectForKey:@"launchedFromShortcut"] boolValue]) { ShortcutsModule.initialUserActivity = userActivity; rootView.appProperties = @{ @"launchedFromShortcut":@NO }; } [ShortcutsModule onShortcutReceivedWithUserActivity:userActivity]; UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter]; center.delegate = self; return YES; } // Required for the register event. - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { [RNCPushNotificationIOS didRegisterForRemoteNotificationsWithDeviceToken:deviceToken]; // Intercom [IntercomModule setDeviceToken:deviceToken]; } // Required for the notification event. You must call the completion handler after handling the remote notification. - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler { [RNCPushNotificationIOS didReceiveRemoteNotification:userInfo fetchCompletionHandler:completionHandler]; } // Required for the registrationError event. - (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error { [RNCPushNotificationIOS didFailToRegisterForRemoteNotificationsWithError:error]; } // Required for localNotification event - (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)(void))completionHandler { [RNCPushNotificationIOS didReceiveNotificationResponse:response]; } //Called when a notification is delivered to a foreground app. -(void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions options))completionHandler { completionHandler(UNAuthorizationOptionSound | UNAuthorizationOptionAlert | UNAuthorizationOptionBadge); } - (void) initializeFlipper:(UIApplication *)application { #if DEBUG #ifdef FB_SONARKIT_ENABLED FlipperClient *client = [FlipperClient sharedClient]; SKDescriptorMapper *layoutDescriptorMapper = [[SKDescriptorMapper alloc] initWithDefaults]; [client addPlugin: [[FlipperKitLayoutPlugin alloc] initWithRootNode: application withDescriptorMapper: layoutDescriptorMapper]]; [client addPlugin: [[FKUserDefaultsPlugin alloc] initWithSuiteName:nil]]; [client addPlugin: [FlipperKitReactPlugin new]]; [client addPlugin: [[FlipperKitNetworkPlugin alloc] initWithNetworkAdapter:[SKIOSNetworkAdapter new]]]; [client start]; #endif #endif } @end ```


Android

Click To Expand

#### Have you converted to AndroidX? - [ ] my application is an AndroidX application? - [ ] I am using `android/gradle.settings` `jetifier=true` for Android compatibility? - [ ] I am using the NPM package `jetifier` for react-native compatibility? #### `android/build.gradle`: ```groovy // N/A ``` #### `android/app/build.gradle`: ```groovy // N/A ``` #### `android/settings.gradle`: ```groovy // N/A ``` #### `MainApplication.java`: ```java // N/A ``` #### `AndroidManifest.xml`: ```xml ```


Environment

iOS

Click To Expand

**`react-native info` output:** ``` System: OS: macOS 13.5.1 CPU: (10) arm64 Apple M1 Pro Memory: 245.67 MB / 16.00 GB Shell: version: "5.9" path: /bin/zsh Binaries: Node: version: 16.18.0 path: ~/.nvm/versions/node/v16.18.0/bin/node Yarn: version: 1.22.19 path: ~/.nvm/versions/node/v16.18.0/bin/yarn npm: version: 8.19.2 path: ~/.nvm/versions/node/v16.18.0/bin/npm Watchman: version: 2023.08.14.00 path: /opt/homebrew/bin/watchman Managers: CocoaPods: version: 1.11.3 path: /Users/abdi/.rvm/gems/ruby-3.1.4/bin/pod SDKs: iOS SDK: Platforms: - DriverKit 23.0 - iOS 17.0 - macOS 14.0 - tvOS 17.0 - watchOS 10.0 Android SDK: Not Found IDEs: Android Studio: 2022.2 AI-222.4459.24.2221.9971841 Xcode: version: 15.0/15A240d path: /usr/bin/xcodebuild Languages: Java: version: 11.0.14.1 path: /usr/bin/javac Ruby: version: 3.1.4 path: /Users/abdi/.rvm/rubies/ruby-3.1.4/bin/ruby npmPackages: "@react-native-community/cli": Not Found react: installed: 17.0.2 wanted: 17.0.2 react-native: installed: 0.67.5 wanted: 0.67.5 react-native-macos: Not Found npmGlobalPackages: "*react-native*": Not Found Android: hermesEnabled: false newArchEnabled: false iOS: hermesEnabled: true newArchEnabled: false ``` - **Platform that you're experiencing the issue on**: - [x] iOS - [ ] Android - [x] **iOS** but have not tested behavior on Android - [ ] **Android** but have not tested behavior on iOS - [ ] Both - **`react-native-firebase` version you're using that has this issue:** - v14.11.1 - **`Firebase` module(s) you're using that has the issue:** - Firestore - **Are you using `TypeScript`?** - Y & v4.8.5


mikehardy commented 11 months ago

It would help to include any information at all to troubleshoot this. I am running Xcode 15 in all my local dev environments without problem on my demonstration build script (https://github.com/mikehardy/rnfbdemo/blob/main/make-demo.sh), and am already testing it in CI, it builds fine there

Closing this as non-reproducible as no information to reproduce supplied / local attempts work

Meegan commented 11 months ago

Could it be related to this? https://developer.apple.com/forums/thread/735747

I'm also experiencing this issue -- but I'm hesitant to say it's directly because of this package, as I've had to do a number of workarounds to get my packages/code buildable with xcode 15

abdi4 commented 11 months ago

Yeah it seems like the same issue @Meegan, opened the issue here because i couldn't find a solution in that thread.

@mikehardy I've now added the missing info. Can you please reopen this issue as multiple people are experiencing it? Happy to answer any other qs you may have

abdi4 commented 11 months ago

This issue was also raised here. Would be good to know if there's a solution (other than upgrading to the latest version) for those of us who can't upgrade atm.

mikehardy commented 11 months ago

I'm not sure there will be a valid workaround here, Xcode 15 did a number of things (like, "hey, let's implement a completely new linker! with breaking changes!") that simply will require new versions of software in order to work correctly.

Stated differently: if you want your software to work on Xcode 15 you need to be prepared to upgrade.

I see this in the updated details (thank you!):


    "@react-native-firebase/analytics": "^14.11.1",
    "@react-native-firebase/app": "^14.11.1",
    "@react-native-firebase/firestore": "^14.12.0",
    "@react-native-firebase/installations": "^14.11.1",
    "@react-native-firebase/messaging": "^14.11.1",
    "@react-native-firebase/remote-config": "^14.11.1",
    "@react-native-firebase/storage": "^14.11.1",

That's old software. And it contains code that will not work with Xcode 15.

Currently there are no reproducers running on current software so this will not be reopened as - based on what I see with my test script and current versions - there is nothing left to fix, and there will be no actual change in this repository in order for things to work.

I appreciate that upgrading software is the equivalent of "sideways" (that is: not forward...) motion / activity from the perspective of getting features your clients care about shipped, however Apple forces this on us basically once a year, and so does Google with Android updates. Mobile development is a sea of churn and updating has to have regular time + budget allocated for it