Skip to content

[Due for payment 2026-07-21] [$250] TabNavigator NAVIGATE action not handled during deep link login flow #91777

Description

@MelvinBot

Version Number: 9.3.62-5+
Reproducible in staging?: Yes
Reproducible in production?: Unknown
Email or phone of affected tester (no customers): N/A
Issue reported by: Internal (found during investigation of #89028)
Device used: Android/iOS

Action Performed:

  1. Log in to the app
  2. Copy a conversation/chat link
  3. Log out from the app
  4. Open the conversation/chat link from step 2
  5. Log in to the app with the same account
  6. Observe the console

Expected Result:

Navigation to TabNavigator succeeds without errors; the user lands on the deep-linked report.

Actual Result:

Console error:

The action 'NAVIGATE' with payload {"name":"TabNavigator","params":{"initial":false,"screen":"ReportsSplitNavigator","params":{"pop":true,"initial":true,"screen":"Report","params":{"reportID":"..."},"path":"/r/..."},"pop":true},"pop":true} was not handled by any navigator.

Do you have a screen named 'TabNavigator'?

Root Cause Analysis

During the deep link login flow, openReportFromDeepLink awaits waitForProtectedRoutes(), which resolves when CONCIERGE appears in routeNames. However, TabNavigator is loaded lazily via getComponent, so there's a window where the RootStack has registered the screen name but the TabNavigator component hasn't fully mounted to handle the nested navigation action. The Navigation.navigate() call dispatches a NAVIGATE action targeting TabNavigator during this window, producing the unhandled action error.

Recommended Fix

Add NAVIGATORS.TAB_NAVIGATOR to the PROTECTED_SCREENS check (or add a separate readiness check that verifies TabNavigator is in the navigation state before resolving). This ensures waitForProtectedRoutes() doesn't resolve until TabNavigator is actually available to handle navigation.

Related Issues

Platforms:

  • Android: App
  • iOS: App
  • Android: mWeb Chrome
  • iOS: mWeb Safari
  • iOS: mWeb Chrome
  • Windows: Chrome
  • MacOS: Chrome / Safari

Screenshots/Videos

Screenshot from situchan's investigation in #89028:

console
Upwork Automation - Do Not Edit
Issue OwnerCurrent Issue Owner: @situchan

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

Awaiting PaymentAuto-added when associated PR is deployed to productionBugSomething is broken. Auto assigns a BugZero manager.DailyKSv2ExternalAdded to denote the issue can be worked on by a contributor

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions