Sentry
https://expensify.sentry.io/issues/APP-JQQ
Impact (snapshot at filing)
- Users (last 7d): 5
- Users (total since first seen): 5
- Events: 18
- First seen: 2026-08-02
- Last seen: 2026-08-08
- Platform: iOS (HybridApp)
- App version(s): 9.4.49-3
- Mechanism: nsexception (fatal, uncaught)
- Culprit:
-[YAPL logException:], YAPL function navigateToNewDot
Stack trace (top frames, first-party only)
navigateToNewDot@app/libs/TryNewDotManager.js:310:54
app.keyChain.getPassword
@app/libs/DeepLinkManager.js:53:94
Native frames leading in:
-[ExpensifyAppDelegate application:continueUserActivity:restorationHandler:]
DeepLinkManager.handleUniversalLink
+[YAPLJS callFunction:args:]
-[JSValue callWithArguments:]
-[YAPL logException:]
Suspected cause
Opening a universal link routes through DeepLinkManager.handleUniversalLink, which calls TryNewDotManager.navigateToNewDot. That function reads app.keyChain.getPassword at line 310, and app.keyChain is null at that moment, so the app crashes on the deep link.
continueUserActivity can fire before the app finishes initialising, which would explain a null keychain: the deep link handler runs against a partly constructed app object. Worth confirming whether the crash correlates with a cold start from a link.
The fix is to guard app.keyChain in navigateToNewDot and defer the navigation until initialisation completes, rather than reading through a null.
Reproduction
Unknown. To approximate it: force-quit the app, then open an Expensify universal link so the app cold starts directly into continueUserActivity.
Related
Upwork Automation - Do Not Edit
Sentry
https://expensify.sentry.io/issues/APP-JQQ
Impact (snapshot at filing)
-[YAPL logException:], YAPL functionnavigateToNewDotStack trace (top frames, first-party only)
Native frames leading in:
Suspected cause
Opening a universal link routes through
DeepLinkManager.handleUniversalLink, which callsTryNewDotManager.navigateToNewDot. That function readsapp.keyChain.getPasswordat line 310, andapp.keyChainis null at that moment, so the app crashes on the deep link.continueUserActivitycan fire before the app finishes initialising, which would explain a null keychain: the deep link handler runs against a partly constructedappobject. Worth confirming whether the crash correlates with a cold start from a link.The fix is to guard
app.keyChaininnavigateToNewDotand defer the navigation until initialisation completes, rather than reading through a null.Reproduction
Unknown. To approximate it: force-quit the app, then open an Expensify universal link so the app cold starts directly into
continueUserActivity.Related
DeepLinkManagerintoTryNewDotManager), so these two may share a root cause.Upwork Automation - Do Not Edit