Skip to content

Android - Expense is not displayed in table view when opened via growl. #104682

Closed

Description

@applause-bot

If you haven’t already, check out our contributing guidelines for onboarding. To join our Slack channel, fill out this form.


Version Number: 9.5.16-0
Reproducible in staging?: Yes
Reproducible in production?: N/A - new feature, doesn't exist in prod
If this was caught during regression testing, add the test name, ID and link from BrowserStack: #103703
Email or phone of affected tester (no customers): [email protected]
Issue reported by: Applause Internal Team
Bug source: Exploratory - Significant User Experience Deterioration
Device used: Motorola MotoG60 / Android 12 (Hybrid app)
App Component: Money Requests

Action Performed:

Prerequisite: Account has a workspace.

  1. Open the Expensify app.
  2. Navigate to workspace chat.
  3. Create a manual expense.
  4. Open the report of the just created expense.
  5. Tap on "More" > "Switch to table view"
  6. Select and delete the expense.
  7. Return to "Inbox"
  8. Create a manual expense via FAB and submit it to workspace.
  9. Tap on "VIew" on the growl displayed.
  10. Note that report is opened in "Expense View"
  11. Close and reopen report.
  12. Note that now, report is opened in "Table View"

Expected Result:

After switching to table view, expenses opened via growl should be automatically displayed in table view.

Actual Result:

Expenses opened via growl, are not displayed in table view until opening them for a second time.

Workaround:

Unknown

Platforms:

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

Screenshots/Videos

Bug7292704_1792627998839.Table_growl.mp4

View all open jobs on GitHub

Applause Internal Information
Exported by: Julia Ponikarchuk
Bug ID: 7292704

Activity

  1. added
    DeployBlockerCashThis issue or pull request should block deployment
    BugSomething is broken. Auto assigns a BugZero manager.
    on Oct 22, 2026
  2. applause-bot commented on Oct 22, 2026

    @applause-bot
    Author

    While Applause doesn't embed attachments for this bug, here are the links for quick view:
    https://platform.applause.com/services/links/v1/external/bd40155504e6052321cca7aab4e02479ce074419f14e6ea368e69a69a6bc129a

  3. melvin-bot commented on Oct 22, 2026

    @melvin-bot

    You have been assigned to this deploy blocker because you recently merged this PR: #103703

  4. melvin-bot commented on Oct 22, 2026

    @melvin-bot

    @Beamanator @mountiny @lakchote @daledah you have been assigned to this deploy blocker because you reviewed the offending PR: #103703

  5. github-actions commented on Oct 22, 2026

    @github-actions
    Contributor

    👋 Friendly reminder that deploy blockers are time-sensitive ⏱ issues! Check out the open `StagingDeployCash` deploy checklist to see the list of PRs included in this release, then work quickly to do one of the following:

    1. Identify the pull request that introduced this issue and revert it.
    2. Find someone who can quickly fix the issue.
    3. Fix the issue yourself.
  6. melvin-bot commented on Oct 22, 2026

    @melvin-bot

    💬 A slack conversation has been started in #expensify-open-source

  7. MelvinBot commented on Oct 22, 2026

    @MelvinBot
    Contributor

    Deploy Blocker Investigation

    Causing PR: Reapply "Add a More menu option to switch single-expense reports between expense view and table view" (high confidence).

    Recommendation: Demote or fix forward. Don't revert. This is a gap in a new opt-in feature. Users who never switch to table view see the same behavior as production. The user still lands on the right expense; only the screen differs.

    Root cause: On a narrow layout, tapping "View" on the growl for a single-expense report opens the expense's thread, not the report (navigateToCreatedExpense.ts:113-114). Before this PR, OneTransactionThreadRedirectHandler always redirected that thread to its parent report. The PR added !shouldUseTableViewForSingleExpense to the redirect condition (OneTransactionThreadRedirectHandler.tsx:96-97). In table view, the redirect is skipped, so the user stays on the expense thread, which looks like "Expense View". Reopening the report uses the report route, so table view shows.

    Suggested fix: When table view is on, open the report instead of the thread in the growl's navigation:

    1. In ExpenseAddedGrowl.tsx, read useSingleExpenseReportView and pass shouldUseTableViewForSingleExpense to navigateToCreatedExpense.
    2. In navigateToCreatedExpense, before line 113, navigate to ROUTES.REPORT_WITH_ID.getRoute(iouReportID, ...) when table view is on. Wide layout already does this (L117-L120).
    3. Apply the same change to the Search-tab branch (L75-L80), using ROUTES.SEARCH_REPORT with iouReportID.
    Investigation details
    • Why step 6 matters: Deleting the first expense makes the new one the report's only expense. With two or more expenses, the growl takes the branch at L84, which opens the report first.
    • Likely also affected: iOS and mobile web (same narrow-layout branch), and any layout when the growl is tapped from the Search tab (that branch also opens the thread).
    • Not affected: Wide layout from Inbox, which opens the report RHP directly.
    • Ruled out: The table-view preference loads before the redirect decision (the handler waits on isLoading). The growl code (ExpenseAddedGrowl.tsx, navigateToCreatedExpense.ts) hasn't changed this staging cycle. The only staging-cycle change to OneTransactionThreadRedirectHandler.tsx comes from this PR.
    • Not reproduced live. This conclusion comes from code tracing.

    view run

  8. m-natarajan commented on Oct 22, 2026

    @m-natarajan

    PR reverted and feature "Switch to table view." not available. Samsung Galaxy A40/Android 11/Build 9.5.16-1

    MicrosoftTeams-video.46.mp4
  9. Beamanator commented on Oct 22, 2026

    @Beamanator
    Contributor

    i agree let's close this :D

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

Metadata

Metadata

Labels

BugSomething is broken. Auto assigns a BugZero manager.DeployBlockerCashThis issue or pull request should block deploymentEngineeringHourlyKSv2

Type

No type

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions