App Crashes instantly in Test Flight

Hi everyone!

I recently developed an app (sort of a social media app), built in React Native Expo. I have finally after months of coding, completed the App. It works completely fine and passes all my testcases on multiple devices. It has also passed Apples review and after a few tries become stable on all their devices. However, when I released it to TestFlight, it opens and crashes immediately? I have tried numerous fixes, error boundaries etc. but to no avail.

I am really struggling here, I can't seem to replicate the error at all even in Xcode. It seems to just crash on open where the splashscreen flashes, not sure why? I have attached the crash report and redacted the TEAM_ID and DEVICE_ID. Any help would be greatly appreciated.

Warm regards, Hassan | Founder @ Oneforge

Answered by DTS Engineer in 822261022

As part of your release qualification testing, you should take a look at Testing a release build, as the methods you should adopt for doing so are not just the build-and-run workflow. That can help you catch issues like this before you release.

As to the specifics of this crash, if you save that file with the .ips file extension and open that on your Mac, you'll get something that is more readable. It shows this backtrace:

Last Exception Backtrace:
0   CoreFoundation                	       0x1983bd5ec __exceptionPreprocess + 164
1   libobjc.A.dylib               	       0x195939244 objc_exception_throw + 88
2   CoreFoundation                	       0x19849d960 _CFPrefsResetPreferences + 0
3   GymBuddiesConnect             	       0x100c86b58 0x100c0c000 + 502616
4   GymBuddiesConnect             	       0x100c85a44 0x100c0c000 + 498244
5   GymBuddiesConnect             	       0x100c86f3c 0x100c0c000 + 503612
6   GymBuddiesConnect             	       0x100c58a44 0x100c0c000 + 313924
7   libdispatch.dylib             	       0x1a0142248 _dispatch_call_block_and_release + 32
8   libdispatch.dylib             	       0x1a0143fa8 _dispatch_client_callout + 20
9   libdispatch.dylib             	       0x1a014b5cc _dispatch_lane_serial_drain + 768
10  libdispatch.dylib             	       0x1a014c124 _dispatch_lane_invoke + 380
11  libdispatch.dylib             	       0x1a015738c _dispatch_root_queue_drain_deferred_wlh + 288
12  libdispatch.dylib             	       0x1a0156bd8 _dispatch_workloop_worker_thread + 540
13  libsystem_pthread.dylib       	       0x222fff680 _pthread_wqthread + 288
14  libsystem_pthread.dylib       	       0x222ffd474 start_wqthread + 8

and also:

Thread 2 name:   Dispatch queue: expo.controller.errorRecoveryQueue
Thread 2 Crashed:

You have missing symbols to know what happened in the middle of your exception backtrace there, but you have symbols from other libraries in your app that you depend on. You can look to see if you have those symbols at all by going through these steps from the documentation.

If you can get those symbols, they will be helpful to identify more about the source of the crash. Thread 2 identifies that the Expo third-party library is involved in the crash, so the missing symbols likely relate to their library, so you should take this crash report to their support resources to determine your debugging options provided within their environment from this point.

— Ed Ford,  DTS Engineer

As part of your release qualification testing, you should take a look at Testing a release build, as the methods you should adopt for doing so are not just the build-and-run workflow. That can help you catch issues like this before you release.

As to the specifics of this crash, if you save that file with the .ips file extension and open that on your Mac, you'll get something that is more readable. It shows this backtrace:

Last Exception Backtrace:
0   CoreFoundation                	       0x1983bd5ec __exceptionPreprocess + 164
1   libobjc.A.dylib               	       0x195939244 objc_exception_throw + 88
2   CoreFoundation                	       0x19849d960 _CFPrefsResetPreferences + 0
3   GymBuddiesConnect             	       0x100c86b58 0x100c0c000 + 502616
4   GymBuddiesConnect             	       0x100c85a44 0x100c0c000 + 498244
5   GymBuddiesConnect             	       0x100c86f3c 0x100c0c000 + 503612
6   GymBuddiesConnect             	       0x100c58a44 0x100c0c000 + 313924
7   libdispatch.dylib             	       0x1a0142248 _dispatch_call_block_and_release + 32
8   libdispatch.dylib             	       0x1a0143fa8 _dispatch_client_callout + 20
9   libdispatch.dylib             	       0x1a014b5cc _dispatch_lane_serial_drain + 768
10  libdispatch.dylib             	       0x1a014c124 _dispatch_lane_invoke + 380
11  libdispatch.dylib             	       0x1a015738c _dispatch_root_queue_drain_deferred_wlh + 288
12  libdispatch.dylib             	       0x1a0156bd8 _dispatch_workloop_worker_thread + 540
13  libsystem_pthread.dylib       	       0x222fff680 _pthread_wqthread + 288
14  libsystem_pthread.dylib       	       0x222ffd474 start_wqthread + 8

and also:

Thread 2 name:   Dispatch queue: expo.controller.errorRecoveryQueue
Thread 2 Crashed:

You have missing symbols to know what happened in the middle of your exception backtrace there, but you have symbols from other libraries in your app that you depend on. You can look to see if you have those symbols at all by going through these steps from the documentation.

If you can get those symbols, they will be helpful to identify more about the source of the crash. Thread 2 identifies that the Expo third-party library is involved in the crash, so the missing symbols likely relate to their library, so you should take this crash report to their support resources to determine your debugging options provided within their environment from this point.

— Ed Ford,  DTS Engineer

App Crashes instantly in Test Flight
 
 
Q