React-native-firebase: Crashlytics is not reporting crash for iOS but work on android

Created on 4 Nov 2019  路  19Comments  路  Source: invertase/react-native-firebase


Issue



Hi, I'm having an issue with crashlytics for iOS. I have uploaded the dSYMs file to crashlytics on firebase but I still can't see any reporting. I recently migrated from Fabric to Firebase and I follow every step in the installation guide. However, it works on android and I'm able to crash on both iOS and Android but only Android crash logs are reported and I can't even find the build in the filter for iOS which is very strange! can anyone from the team help me with it?

Force Crash
What I called in app

  firebase.crashlytics().log('Test Message!');
  firebase.crashlytics().recordError(37, 'Test Error');
  firebase.crashlytics().crash();

Screenshot 2019-11-04 at 6 01 27 PM

iOS Version
Screenshot 2019-11-04 at 4 52 37 PM

Android Version
Screenshot 2019-11-04 at 4 52 54 PM

As you can see I can't find 1.8.5 on iOS

Run Script
Screenshot 2019-11-04 at 4 51 26 PM


Project Files






iOS

Click To Expand

#### `ios/Podfile`: - [ ] I'm not using Pods - [x] I'm using Pods and my Podfile looks like:

# Uncomment the next line to define a global platform for your project
platform :ios, '9.0'

target 'example' do
  # Comment the next line if you don't want to use dynamic frameworks
  #use_frameworks!

  # Pods for example
  pod 'Firebase/Core', '~> 6.3.0'
  pod 'Firebase/Performance', '~> 6.3.0'
  pod 'GoogleIDFASupport', '~> 3.14.0'
  pod 'Fabric', '~> 1.10.2'
  pod 'Crashlytics', '~> 3.13.2'
  pod 'FBSDKCoreKit', '~> 5.6.0'
  pod 'FBSDKLoginKit', '~> 5.6.0'
  pod 'FBSDKShareKit', '~> 5.6.0'
end
#### `AppDelegate.m`:
/**
 * Copyright (c) Facebook, Inc. and its affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */

#import "AppDelegate.h"

#import <React/RCTBridge.h>
#import <CodePush/CodePush.h>
#import <React/RCTBundleURLProvider.h>
#import <React/RCTRootView.h>
#import <FBSDKCoreKit/FBSDKCoreKit.h>
#import "RNSplashScreen.h"
#import "Orientation.h"
@import Firebase;

@implementation AppDelegate

@synthesize oneSignal = _oneSignal;

- (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window {
  return [Orientation getOrientation];
}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

  [FIRApp configure];
  RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions];
  RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge
                                                   moduleName:@"example"
                                            initialProperties:nil];
  rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1];

  self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
  UIViewController *rootViewController = [UIViewController new];
  rootViewController.view = rootView;
  self.window.rootViewController = rootViewController;
  [self.window makeKeyAndVisible];
  [RNSplashScreen show];

  // You can skip this line if you have the latest version of the SDK installed
  [[FBSDKApplicationDelegate sharedInstance] application:application
    didFinishLaunchingWithOptions:launchOptions];
  return YES;
}

- (BOOL)application:(UIApplication *)application
            openURL:(NSURL *)url
            options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {

  BOOL handled = [[FBSDKApplicationDelegate sharedInstance] application:application
    openURL:url
    sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey]
    annotation:options[UIApplicationOpenURLOptionsAnnotationKey]
  ];
  // Add any custom logic here.
  return handled;
}

- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge
{
#if DEBUG
  return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index.ios" fallbackResource:nil];
#else
  return [CodePush bundleURL];
#endif
}

@end


Environment

Click To Expand

**`react-native info` output:**

React Native Environment Info:
    System:
      OS: macOS 10.15.1
      CPU: (12) x64 Intel(R) Core(TM) i7-8850H CPU @ 2.60GHz
      Memory: 190.63 MB / 32.00 GB
      Shell: 5.7.1 - /bin/zsh
    Binaries:
      Node: 10.16.3 - /usr/local/bin/node
      npm: 6.9.0 - /usr/local/bin/npm
      Watchman: 4.9.0 - /usr/local/bin/watchman
    SDKs:
      iOS SDK:
        Platforms: iOS 13.2, DriverKit 19.0, macOS 10.15, tvOS 13.2, watchOS 6.1
    IDEs:
      Android Studio: 3.5 AI-191.8026.42.35.5791312
      Xcode: 11.2/11B52 - /usr/bin/xcodebuild
    npmPackages:
      react: ^16.8.3 => 16.8.6
      react-native: 0.59.10 => 0.59.10
    npmGlobalPackages:
      react-native-cli: 2.0.1
- **Platform that you're experiencing the issue on**: - [x] iOS - [ ] Android - [ ] **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:** - `^5.5.6` - **`Firebase` module(s) you're using that has the issue:** - `Fabric` - `Crashlytics` - **Are you using `TypeScript`?** - `N`




Think react-native-firebase is great? Please consider supporting all of the project maintainers and contributors by donating via our Open Collective where all contributors can submit expenses. [Learn More]

iOS iOS Crashlytics 5.x.x

Most helpful comment

@hiroyaiizuka try it in release mode on a real device with a forced crash, then reopen the app, wait a little bit (use the time to make sure you've got your dSYMs downloaded from apple developer and uploaded to crashlytics) then re-check

I just did this and it works

All 19 comments

There are some really good pointers in the related issues if you search the list

https://github.com/invertase/react-native-firebase/issues/2534#issuecomment-530954622

There are some really good pointers in the related issues if you search the list

#2534 (comment)

Hi, thanks for your reply as I mentioned in my post there are no missing dSYM files because I have uploaded all of it manually myself(download from appstoreconnect) so I think it might be something else that I couldn't figure out.

UPDATE
I can see the crashes in Xcode but there's nothing on Crashlytics which is very strange. Did I miss out something when I migrated from Fabric to Firebase is there a way to verify? because I can call the Crashlytics method like crash(), record() or other Firebase module without a problem so I assume it is working fine.
Screenshot 2019-11-05 at 9 34 40 AM

Definitely release mode?
Definitely restarted the app (the crashes go out when you launch next time)?
On a real device? (I think Simulator might work but I don't trust it)
馃

Definitely release mode?
Definitely restarted the app (the crashes go out when you launch next time)?
On a real device? (I think Simulator might work but I don't trust it)
馃

Yeah, I released a build on Testflight and purposely crash the app but I still can't get any report on iOS Crashlytics but when I crash on Android I can see it on Android Crashlytics though

For the simulator, I can see the log saying it was successfully reported but I still can't see anything

Screenshot 2019-11-06 at 1 01 10 PM

Screenshot 2019-11-06 at 1 01 51 PM

I found out it is because of missing Fabric key because I migrated from Fabric previously and I deleted it from info.plist. Sorry for wasting your time, appreciate your help! @mikehardy

thanks for reporting back the root cause. Seems like we need a FAQ that gets all these things together in one spot since we seem to discover new failure modes about once a month

If you started a new "troubleshooting.md" page here: https://github.com/invertase/react-native-firebase/tree/master/docs/crashlytics

Patterned off this maybe https://raw.githubusercontent.com/invertase/react-native-firebase/master/docs/crashlytics/ios-setup.md

And linked it here: https://github.com/invertase/react-native-firebase/blob/master/docs/sidebar.yaml#L138

We could maybe start a list of "things to check if you can't see your crashes"

Hi @johnlim5847, Are you using react-native-firebase v6? I have the same issue. But I just followed these steps: https://github.com/invertase/react-native-firebase/blob/master/docs/crashlytics/ios-setup.md
But I cannot see any crashes on firebase dashboard. I can see the crashes on the "Organizer" window.
I have understood with "${PODS_ROOT}/Fabric/run" we don't have to add the Fabric Key in info.plist, is this correct? @mikehardy
*Note: Im migrating my app from RN0.50 to RN0.61.1.
Before I was using:
Xcode 10, RN0.50 (without pods) and react-native-firebase (5.5.5)
Now: Xcode 11, RN0.61.1 (with Pods) and react-native-firebase (6.0.0)

 "@react-native-firebase/analytics": "^6.0.0",
 "@react-native-firebase/app": "^6.0.0",
 "@react-native-firebase/crashlytics": "^6.0.0",

*I was able to see the analytics on the firebase dashboard.

Thanks!

@rodribech20 did you figure out this issue? I'm facing the same...

@rodribech20 no I'm using v5 because my react native version is still 0.59.10.

same problem.

Android is all ok, but iOS we can't see any logs after upgrading RN 0.59 to 0.61.5.

    "@react-native-firebase/app": "^6.1.0",
    "@react-native-firebase/crashlytics": "^6.1.0",

@hiroyaiizuka try it in release mode on a real device with a forced crash, then reopen the app, wait a little bit (use the time to make sure you've got your dSYMs downloaded from apple developer and uploaded to crashlytics) then re-check

I just did this and it works

@mikehardy
Thank you for your kind comments. I'll try later! 馃槉

Hello @mikehardy , I`m have the sam problem, my application does not connect, just shows

image

In my experience no two problems are exactly alike. For what it's worth I just spun up a new firebase ios app and mine looked like that until I actually forced a test crash on a real device on a release build then restarted the app, and I'd uploaded the dSYMs correctly. Have you triple-checked all of those steps?

@mikehardy there is no way for me to upload the dysm manually. i always get the "Error loading your missing dSYMs"

I strongly recommend fastlane to automate this. You have to use scripts to upload now, and fastlane knows how to fetch the dSYMs from apple and upload them to crashlytics. https://stackoverflow.com/questions/54577202/how-to-run-upload-symbols-to-upload-dsyms-as-a-part-of-xcode-build-process/55796619#55796619

Building in Release mode was the key for me. Thanks!

Was this page helpful?
0 / 5 - 0 ratings

Related issues

rtman picture rtman  路  3Comments

joecaraccio picture joecaraccio  路  3Comments

jonaseck2 picture jonaseck2  路  3Comments

escobar5 picture escobar5  路  3Comments

romreed picture romreed  路  3Comments