React-native-firebase: 🔥 Dynamic Link + iOS : App crashes in release build. Working fine in debug mode.

Created on 24 Jun 2019  Â·  37Comments  Â·  Source: invertase/react-native-firebase

Issue

I am implementing firebase dynamic link in my react-native project. It's working fine while I developed and debuged. But once I generate IPA my app get crashes as soon as I launched.
I verifed that if I remove this library and pod for firebase, IPA works fine.

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 'MyProject' do
  # Uncomment the next line if you're using Swift or would like to use dynamic frameworks
   use_frameworks!
  # Pods for Uncomment
    pod 'Firebase/Core', '~> 5.20.2'
    pod 'Firebase/DynamicLinks', '~> 5.20.2'
end

post_install do |installer|
  # This fixes the problems with headers not found
  system("mkdir -p Pods/Headers/Public/FirebaseCore && cp Pods/FirebaseCore/Firebase/Core/Public/* Pods/Headers/Public/FirebaseCore/")
end

target 'MyProject-tvOS' do
  # Uncomment the next line if you're using Swift or would like to use dynamic frameworks
  # use_frameworks!

  # Pods for MyProject-tvOS

  target 'MyProject-tvOSTests' do
    inherit! :search_paths
    # Pods for testing
  end
end

#### `AppDelegate.m`:
/**
 * Copyright (c) 2015-present, Facebook, Inc.
 * All rights reserved.
 *
 * This source code is licensed under the BSD-style license found in the
 * LICENSE file in the root directory of this source tree. An additional grant
 * of patent rights can be found in the PATENTS file in the same directory.
 */

#import "AppDelegate.h"
#import <React/RCTBundleURLProvider.h>
#import <React/RCTRootView.h> 
#import <ReactNativeNavigation/ReactNativeNavigation.h>
#import <Applozic/Applozic.h>
#import <Fabric/Fabric.h>
#import <Crashlytics/Crashlytics.h>
//#import <GoogleMaps/GoogleMaps.h>
#import "RNSplashScreen.h"
#import <React/RCTLinkingManager.h>
#import <Firebase.h>
#import "RNFirebaseLinks.h"
#import "RNFirebaseNotifications.h"

@implementation AppDelegate

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

  [FIROptions defaultOptions].deepLinkURLScheme = @"com.test.myproj";
  [FIRApp configure];
  //========================= Applozic code ===============================
  [ALRegisterUserClientService isAppUpdated];
  [self registerForNotification];
  // Register for Applozic notification tap actions and network change notifications
  ALAppLocalNotifications *localNotification = [ALAppLocalNotifications appLocalNotificationHandler];
  [localNotification dataConnectionNotificationHandler];
  // Override point for customization after application launch.
  if (launchOptions != nil) {
    NSDictionary *dictionary = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
    if (dictionary != nil) {
      ALPushNotificationService *pushNotificationService = [[ALPushNotificationService alloc] init];
      BOOL applozicProcessed = [pushNotificationService processPushNotification:dictionary updateUI:[NSNumber numberWithInt:APP_STATE_INACTIVE]];
      //IF not a appplozic notification, process it
      if (!applozicProcessed) {
        //Note: notification for app
      }
    }
  }
  NSURL *jsCodeLocation;

#ifdef DEBUG
  jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
#else
  jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
#endif
  self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
  self.window.backgroundColor = [UIColor whiteColor];
  [ReactNativeNavigation bootstrap:jsCodeLocation launchOptions:launchOptions];
  [RNSplashScreen show];
  [Fabric with:@[[Crashlytics class]]];
  return YES;
}

- (BOOL)application:(UIApplication *)application
            openURL:(NSURL *)url
            options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options
{
  BOOL handled = [[RNFirebaseLinks instance]
                  application:application
                  openURL:url
                  options:options
                  ] || [RCTLinkingManager
                        application:application
                        openURL:url
                        options:options
                        ];

  return handled;
  }

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
  BOOL handled = [RCTLinkingManager
                  application:application
                  openURL:url
                  sourceApplication:sourceApplication
                  annotation:annotation
                  ];
  return handled;
}

- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity
  restorationHandler:(void (^)(NSArray *))restorationHandler {
  BOOL handled = [[RNFirebaseLinks instance]
                  application:application
                  continueUserActivity:userActivity
                  restorationHandler:restorationHandler
                  ] || [RCTLinkingManager
                        application:application
                        continueUserActivity:userActivity
                        restorationHandler:restorationHandler
                        ];

  return handled;
}

- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)
deviceToken {
  const unsigned *tokenBytes = [deviceToken bytes];
  NSString *hexToken = [NSString stringWithFormat:@"%08x%08x%08x%08x%08x%08x%08x%08x",
                        ntohl(tokenBytes[0]), ntohl(tokenBytes[1]), ntohl(tokenBytes[2]),
                        ntohl(tokenBytes[3]), ntohl(tokenBytes[4]), ntohl(tokenBytes[5]),
                        ntohl(tokenBytes[6]), ntohl(tokenBytes[7])];

  NSString *apnDeviceToken = hexToken;
  if (![[ALUserDefaultsHandler getApnDeviceToken] isEqualToString:apnDeviceToken]) {
    ALRegisterUserClientService *registerUserClientService = [[ALRegisterUserClientService alloc] init];
    [registerUserClientService updateApnDeviceTokenWithCompletion
     :apnDeviceToken withCompletion:^(ALRegistrationResponse
                                      *rResponse, NSError *error) {

       if (error) {
         return;
       }
     }];
  }
  else{
    NSLog(@"In else didRegisterForRemoteNotificationsWithDeviceToken");
  }
}

//Reset badge count above the app icon.
- (void)applicationDidBecomeActive:(UIApplication *)application
{
  application.applicationIconBadgeNumber = 0;
}

- (void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary*)dictionary {
  NSLog(@"Received notification WithoutCompletion: %@", dictionary);
  ALPushNotificationService *pushNotificationService = [[ALPushNotificationService alloc] init];
  [pushNotificationService notificationArrivedToApplication:application withDictionary:dictionary];
}

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(nonnull void (^)(UIBackgroundFetchResult))completionHandler {
  NSLog(@"Received notification Completion: %@", userInfo);
  ALPushNotificationService *pushNotificationService = [[ALPushNotificationService alloc] init];
  [pushNotificationService notificationArrivedToApplication:application withDictionary:userInfo];
  completionHandler(UIBackgroundFetchResultNewData);

}

- (void)applicationDidEnterBackground:(UIApplication *)application {
  ALRegisterUserClientService *registerUserClientService = [[ALRegisterUserClientService alloc] init];
  [registerUserClientService disconnect];
  [[NSNotificationCenter defaultCenter] postNotificationName:@"APP_ENTER_IN_BACKGROUND" object:nil];
}

- (void)applicationWillEnterForeground:(UIApplication *)application {
  ALRegisterUserClientService *registerUserClientService = [[ALRegisterUserClientService alloc] init];
  [registerUserClientService connect];
  [ALPushNotificationService applicationEntersForeground];
  [[NSNotificationCenter defaultCenter] postNotificationName:@"APP_ENTER_IN_FOREGROUND" object:nil];
}

- (void)applicationWillTerminate:(UIApplication *)application {
  [[ALDBHandler sharedInstance] saveContext];
}

-(void)registerForNotification
{
  if(@available(iOS 10.0, *))
  {
    UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
    center.delegate = self;
    [center requestAuthorizationWithOptions:(UNAuthorizationOptionSound | UNAuthorizationOptionAlert | UNAuthorizationOptionBadge) completionHandler:^(BOOL granted, NSError * _Nullable error)
     {
       if(!error)
       {
         dispatch_async(dispatch_get_main_queue(), ^ {
           [[UIApplication sharedApplication] registerForRemoteNotifications];  // required to get the app to do anything at all about push notifications
           NSLog(@"Push registration success." );
         });
       }
       else
       {
         NSLog(@"Push registration FAILED" );
         NSLog(@"ERROR: %@ - %@", error.localizedFailureReason, error.localizedDescription );
         NSLog(@"SUGGESTIONS: %@ - %@", error.localizedRecoveryOptions, error.localizedRecoverySuggestion );
       }
     }];
  }
  else
  {
    [[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound |    UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]];

    [[UIApplication sharedApplication] registerForRemoteNotifications];
  }
}
@end


Android

Click To Expand

#### `android/build.gradle`:

// N/A
#### `android/app/build.gradle`:
// N/A
#### `android/settings.gradle`:
// N/A
#### `MainApplication.java`:
// N/A
#### `AndroidManifest.xml`:
<!-- N/A -->


Environment

Click To Expand

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

 OUTPUT GOES HERE
- **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 - **`Firebase` module(s) you're using that has the issue:** - `Dynamic Link` - **Are you using `TypeScript`?** - `N`

iOS Links Stale

Most helpful comment

I finally came up with the solution.

One is from @mikehardy https://github.com/invertase/react-native-firebase/issues/2163#issuecomment-495929760 and https://github.com/invertase/react-native-firebase/issues/1893#issuecomment-475607341

So you need to write this on your post_install in Podfile.

Thanks so much for your help!

  system("mkdir -p Pods/Headers/Public/FirebaseCore && cp Pods/FirebaseCore/Firebase/Core/Public/* Pods/Headers/Public/FirebaseCore/")
  system("mkdir -p Pods/Headers/Public/FirebaseDynamicLinks && cp Pods/FirebaseDynamicLinks/Firebase/DynamicLinks/Public/* Pods/Headers/Public/FirebaseDynamicLinks/")

More info

RN: 0.59.10
react-native-firebase: 5.5.6
Firebase/Core: 6.3.0 (as react-native-firebase installation documentation)
I use use_frameworks! in Podfile.

All 37 comments

Dynamic links require (to my way of thinking) a nearly ridiculous amount of set up to work correctly.

You can run release mode apps under XCode or at minimum while plugged in and view their logs via Console.app, you should grab the crash trace and post it here

Can you confirm:

  • what react-native-firebase version you are using
  • that you have configured the link correctly on apple developer site - with the right entitlements in your provisioning profile etc
  • that you have configured the link correctly via FCM
  • I believe you need to put it in the plist as well, that you respond to a given protocol

Additionally I recommend that you use the combo of react-native-firebase 5.5.3 and iOS pods 6.3.0 (current, in other words) at this point, and convert to the new style if you haven’t already https://rnfirebase.io/docs/v5.x.x/releases/v5.5.x#Upgrade-instructions

Finally, you might try this using the SDK directly to see how it goes: https://firebase.google.com/docs/dynamic-links/debug

My app only get crashed when it's run from IPA. Even in release build it works fine. I am attaching the logs from console.app

console

Excpetion cause:
+[RNFirebaseLinks instance]: unrecognized selector sent to class 0x1026c0120

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '+[RNFirebaseLinks instance]: unrecognized selector sent to class 0x1026c0120'
*** First throw call stack:
(0x1e185927c 0x1e0a339f8 0x1e177ab04 0x1e185eac4 0x1e186075c 0x1021a2d80 0x1027b6dac 0x1021c540c 0x1021c5580 0x1021bf69c 0x1021befd4 0x1e1298a38 0x1e12997d4 0x1e1247004 0x1e17eac1c 0x1e17e5b54 0x1e17e50b0 0x1e39e579c 0x20e01b978 0x1021a2e9c 0x1e12aa8e0)
  • Packages version I am using:
"react-native": "^0.59.8",
"react-native-firebase": "^5.4.2",
  • Apple developer site:
    I have set right entitlements in provisioning profile, but do we need to configure the link on apple developer site?

  • Configure link via FCM:
    I have configured the link as per this, just having query in point no 6. Do I need to paste
    {"applinks":{"apps":[],"details":[{"appID":"1234567890.com.example.ios","paths":["/*"]}]}} on apple developer site?

  • Info.plist file:

<key>CFBundleURLTypes</key>
    <array>
        <dict>
            <key>CFBundleTypeRole</key>
            <string>Editor</string>
            <key>CFBundleURLName</key>
            <string>com.my.bundleID</string>
            <key>CFBundleURLSchemes</key>
            <array>
                <string> com.my.bundleID </string>
            </array>
        </dict>
    </array>
  • Pod file:
target 'MyProj' do
  # Uncomment the next line if you're using Swift or would like to use dynamic frameworks
   use_frameworks!
  # Pods for MyProj
    pod 'Firebase/Core', '~> 5.20.2'
    pod 'Firebase/DynamicLinks', '~> 5.20.2'
end

In pod file I am having use_frameworks! as uncommented. Do I need to change that?

I will try react-native-firebase 5.5.3 and iOS pods 6.3.0, and update it over here.

I tried with react-native-firebase 5.5.3 and iOS pods 6.3.0, but still my app get crashes with same logs. Here's the log.

pods 6 3 0

Let me know if I can change something.

This still just seems so odd. I’m trying to think what code would run in the ipa that would not be touched by the release version? Because if you generate links in the release version wouldn’t that be the exact same actual code? what is different between your release build and the IPA? Is there any way at all that the IPA is pulling in something stale? Have you tried this on a different machine?

@mikehardy , Yes This is something odd. When I first run app in release mode, my app got crashed. Then after runing and crashing 2-3 times, it's not crashing in release mode but IPA is still crashing in my app's welcome screen, without any interaction. There is no API call or any other mechanisum running in the app at that time.
And we are not generating link from the app.
Yes we tried from different machine as well. We actually uploaded that IPA to apple testflight and our tester gets crashes. When we click on app icon -> Splash screen loads -> Our Welcome screen comes and ask for push permission. and within 1-2 sec app got crashed even we haven't interact with the app.

And once we remove this Firebase pod and other dynamic link releated code, app doesn't crash.
I think this issue is same as ours.

Discovered one thing that can cause variation between release and archive - some Xcode state I didn’t know about - you might try the cleaning I describe here:

https://github.com/invertase/react-native-firebase/issues/2269#issuecomment-506135988

Discovered one thing that can cause variation between release and archive - some Xcode state I didn’t know about - you might try the cleaning I describe here:

#2269 (comment)

Crashing on release mode run is something random. Sometimes it crash on release mode run and sometimes it's not.

Hmm - that sounds like some sort of corruption then. I’d run while plugged into your machine and using Console.app to watch the logs so you can get the full traces of the crashes. I observed some memory corruption in my app with older iOS SDKs and the main reason I did the work in v5 maintenance to use modern SDKs is so I could log upstream bugs. They were memory issues in my case but that will always be app specific…

@mikehardy I think I have resolved that crash issue.

I have changed implementation of 2 AppDelegate methods and now I am not facing crash issue anymore.

I changed to the...

- (BOOL)application:(UIApplication *)application
            openURL:(NSURL *)url
            options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options
{
  return [RCTLinkingManager application:application openURL:url options:options];
}

- (BOOL)application:(UIApplication *)application continueUserActivity:(nonnull NSUserActivity *)userActivity
 restorationHandler:(nonnull void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler
{
  return [RCTLinkingManager application:application
                   continueUserActivity:userActivity
                     restorationHandler:restorationHandler];
}

Which was before

- (BOOL)application:(UIApplication *)application
            openURL:(NSURL *)url
            options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options
{
  BOOL handled = [[RNFirebaseLinks instance]
                  application:application
                  openURL:url
                  options:options
                  ] || [RCTLinkingManager
                        application:application
                        openURL:url
                        options:options
                        ];

  return handled;
  }

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
  BOOL handled = [RCTLinkingManager
                  application:application
                  openURL:url
                  sourceApplication:sourceApplication
                  annotation:annotation
                  ];
  return handled;
}

I was getting +[RNFirebaseLinks instance]: unrecognized selector sent to class 0x1026c0120, So I removed that from AppDelegate's methods and now it's working fine.

Hello 👋, to help manage issues we automatically close stale issues.
This issue has been automatically marked as stale because it has not had activity for quite some time. Has this issue been fixed, or does it still require the community's attention?

This issue will be closed in 15 days if no further activity occurs.
Thank you for your contributions.

@vivekshah-zymr @mikehardy facing the same issue also with use_frameworks!

with the fix you added, I'm assuming you need to get the opening link with Linking from react-native instead of firebase.links().getInitialLink(), right?

Hello 👋, to help manage issues we automatically close stale issues.
This issue has been automatically marked as stale because it has not had activity for quite some time. Has this issue been fixed, or does it still require the community's attention?

This issue will be closed in 15 days if no further activity occurs.
Thank you for your contributions.

I'm facing the same issue.

@Almouro @vivekshah-zymr

What's your FirebaseDynamicLinks version in Podfile.lock?

FirebaseDynamicLinks (= 3.4.3)

Mine is actually lower than what the document said.
Because Segment-Firebase's dependency, I couldn't update Firebase and still using old version in Pod.

hm... I figured my version problem out. but still getting the crash on release.

Now my Podfile.lock has

  - Firebase/DynamicLinks (6.3.0):
    - Firebase/CoreOnly
    - FirebaseDynamicLinks (~> 4.0.0)
  - FirebaseDynamicLinks (4.0.1):
    - FirebaseAnalyticsInterop (~> 1.0)
    - FirebaseCore (~> 6.0)

@vivekshah-zymr Hey, I want to ask the same question with @Almouro .

Firebase Dynamic link is working fine with your workaround?
RCTLinkingManager gets you to have enough functionality?

Had the same issue and as others said, this was related to firebase.
"react": "16.8.6",
"react-native": "0.60.5",

I gave a try with latest Firebase

pod 'Firebase/Core', '~> 6.7.0'

But, still having the problem.

Just saying latest is actually 6.8.0 now (if you do a pod outdated you'll see it though it seems they haven't published the release notes yet). That won't fix it if 6.7.0 didn't though.

If you're crashing on release and expect help you'll need to get the crash trace and post it though I think

@mikehardy yes, I checked all the commits on firebase-ios-sdk done in DynamicLink folder. I couldn’t find the one that might cause the problem.

And my crash trace is same with @vivekshah-zymr ‘s trace.

I will look at RNF as well if it’s this library’s problem.

That is most odd. Your Podfile(.lock) appears to have Links in it...all I can think of is some wierd Xcode cache issue. You might try the react-native-clean-project npm module, then run react-native clean-project and it will prompt you for what to clean. If you clean Xcode build folders, it will clean out lots of obscure things (even DerivedData) that have caused similar problems in the past. Doesn't fix everyone but has a non-zero chance of helping

@mikehardy yeah, of course. Dynamic link is working fine with debug. It crashes only on the testflight and production. The crash happens exactly in the same place with @vivekshah-zymr and same crash stack trace.

I don’t know why you’re mentioning the cache but I already even tried ‘pod deintegrate’. But yeah, I will update here.

There are many levels of cache for Xcode, and I've seen the cache of compiled objects in DerivedData trip people up. Had to PR it myself - I have definitely seen it work https://github.com/pmadruga/react-native-clean-project/pull/19

I mean, our release build is built on CD (Bitrise) without cache so maybe it works on debug because of the cache but other way around is impossible.
But thanks for the help. I will try those.

Ah, I see what you mean then. Can you reproduce the release build issue locally, or it works with release target on your machine and only fails on bitrise? There are a few lingering issues with Xcode builds on AppCenter as well and maybe we're in that area #1667 - I don't feel like we ever got a satisfying answer to that one

@mikehardy That's actually a good idea. I also can try with a different version of XCode on Bitrise.
Please note that this problem does not make it fail on the building but just crashes on runtime.

Ok, interesting found. I removed all build cache and derived data and now I got the same crash on debug as well.

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '+[RNFirebaseLinks instance]: unrecognized selector sent to class 0x109838490'
*** First throw call stack:
(
    0   CoreFoundation                      0x00000001111048db __exceptionPreprocess + 331
    1   libobjc.A.dylib                     0x000000010f41cac5 objc_exception_throw + 48
    2   CoreFoundation                      0x0000000111122b94 +[NSObject(NSObject) doesNotRecognizeSelector:] + 132
    3   CoreFoundation                      0x0000000111109623 ___forwarding___ + 1443
    4   CoreFoundation                      0x000000011110b418 _CF_forwarding_prep_0 + 120
    5   AAAAAA                              0x0000000108ee5027 $s6 AAAAAA 11AppDelegateC11application_4open7optionsSbSo13UIApplicationC_10Foundation3URLVSDySo0G17OpenURLOptionsKeyaypGtF + 183
    6   AAAAAA                              0x0000000108ee5382 $s6 AAAAAA 11AppDelegateC11application_4open7optionsSbSo13UIApplicationC_10Foundation3URLVSDySo0G17OpenURLOptionsKeyaypGtFTo + 242
    7   GoogleUtilities                     0x000000010c4df686 -[GULAppDelegateSwizzler application:openURL:options:] + 486
    8   AAAAAA                              0x0000000108fae47c -[FIRDynamicLinks passRetrievedDynamicLinkToApplication:] + 332
    9   AAAAAA                              0x0000000108fae74c -[FIRDynamicLinks retrievalProcess:completedWithResult:] + 364
    10  AAAAAA                              0x0000000108fa3380 -[FIRDLDefaultRetrievalProcessV2 handleRequestResultsUpdated] + 560
    11  AAAAAA                              0x0000000108fa280a __68-[FIRDLDefaultRetrievalProcessV2 retrievePendingDynamicLinkInternal]_block_invoke + 442
    12  AAAAAA                              0x0000000108faafb4 __105-[FIRDynamicLinkNetworking sendRequestWithBaseURLString:requestBody:endpointPath:parserBlock:completion:]_block_invoke_3 + 52
    13  libdispatch.dylib                   0x00000001135b4d7f _dispatch_call_block_and_release + 12
    14  libdispatch.dylib                   0x00000001135b5db5 _dispatch_client_callout + 8
    15  libdispatch.dylib                   0x00000001135c3080 _dispatch_main_queue_callback_4CF + 1540
    16  CoreFoundation                      0x000000011106ba79 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 9
    17  CoreFoundation                      0x0000000111066126 __CFRunLoopRun + 2310
    18  CoreFoundation                      0x00000001110654d2 CFRunLoopRunSpecific + 626
    19  GraphicsServices                    0x000000011591a2fe GSEventRunModal + 65
    20  UIKitCore                           0x000000011e106fc2 UIApplicationMain + 140
    21  AAAAAA                              0x0000000108ee90b8 main + 72
    22  libdyld.dylib                       0x000000011362a541 start + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException

And below pod command solves the problem https://stackoverflow.com/a/42218599/949795
but it will happen again if I remove the cache/derived data.

pod deintegrate
pod install

But it's good start to investigate the problem. Thanks.

very weird - but I prefer having a 100% reproducible problem than debug/release target differences. I guess you can at least add those pod commands to builds temporarily and get moving but I would definitely hunt that down. Thanks for posting back

@benevbright , my workaround for this crash is as per https://github.com/invertase/react-native-firebase/issues/2283#issuecomment-508014259
Have you tried that?

@vivekshah-zymr I tried it. It prevents the crash but we lose the Firebase-Dynamiclink functionalities, don't we?

And I ran into this problem too when I use Linking from react-native instead.
https://github.com/facebook/react-native/issues/24429#issuecomment-529243930

I finally came up with the solution.

One is from @mikehardy https://github.com/invertase/react-native-firebase/issues/2163#issuecomment-495929760 and https://github.com/invertase/react-native-firebase/issues/1893#issuecomment-475607341

So you need to write this on your post_install in Podfile.

Thanks so much for your help!

  system("mkdir -p Pods/Headers/Public/FirebaseCore && cp Pods/FirebaseCore/Firebase/Core/Public/* Pods/Headers/Public/FirebaseCore/")
  system("mkdir -p Pods/Headers/Public/FirebaseDynamicLinks && cp Pods/FirebaseDynamicLinks/Firebase/DynamicLinks/Public/* Pods/Headers/Public/FirebaseDynamicLinks/")

More info

RN: 0.59.10
react-native-firebase: 5.5.6
Firebase/Core: 6.3.0 (as react-native-firebase installation documentation)
I use use_frameworks! in Podfile.

That's odd, this was needed with RNFB v5.5.6 and RN0.60.5 and Pods 6.7.0 (or 6.8.0)?

My versions

  • RN: 0.59.10
  • react-native-firebase: 5.5.6
  • Firebase/Core: 6.3.0 (as react-native-firebase installation documentation)

And you mentioned RN 0.59.x still needs this workaround. https://github.com/invertase/react-native-firebase/issues/2163#issuecomment-518700082

Yes - okay - that makes a bit more sense. I'm really glad you got it working - it put up quite a fight. Carefully re-examine that workaround when you move to RN60+ as I don't think it will be needed anymore, but software is so frequently surprising

Hello 👋, to help manage issues we automatically close stale issues.
This issue has been automatically marked as stale because it has not had activity for quite some time. Has this issue been fixed, or does it still require the community's attention?

This issue will be closed in 15 days if no further activity occurs.
Thank you for your contributions.

Closing this issue after a prolonged period of inactivity. If this is still present in the latest release, please feel free to create a new issue with up-to-date information.

Was this page helpful?
0 / 5 - 0 ratings