Skip to content

[Due for payment 2026-10-12] Expense - Back button reopens expense after opening expense and tapping View on growl #102833

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.1-1
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: #100015
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: Samsung Galaxy S25 FE / Android 16
App Component: Money Requests

Action Performed:

  1. Launch Expensify app.
  2. Go to workspace chat.
  3. Create an expense.
  4. Go back to LHN.
  5. Create an expense and submit it to workspace chat from FAB.
  6. Quickly tap on the expense preview.
  7. Tap View on the growl.
  8. Tap app back button three times.

Expected Result:

App will return to LHN.

Actual Result:

App reopens the expense from Step 6.
This issue is not reproducible if the report contains only one expense (Step 3 is not performed).

Workaround:

Unknown

Platforms:

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

Screenshots/Videos

Bug7274830_1790900133878.Screen_Recording_20261002_081302_Expensify.mp4

View all open jobs on GitHub

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

Issue OwnerCurrent Issue Owner: @situchan

Activity

  1. applause-bot commented on Oct 2, 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/2b9a2bc0735d14c49c119da8236d21cb5155e6aac82892f91ba6296953a8f561

  2. added
    BugSomething is broken. Auto assigns a BugZero manager.
    on Oct 2, 2026
  3. melvin-bot commented on Oct 2, 2026

    @melvin-bot

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

  4. melvin-bot commented on Oct 2, 2026

    @melvin-bot

    @mountiny @situchan you have been assigned to this deploy blocker because you reviewed the offending PR: #100015

  5. melvin-bot commented on Oct 2, 2026

    @melvin-bot

    @mhawryluk you have been assigned to this deploy blocker because you authored the offending PR: #100015

  6. github-actions commented on Oct 2, 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.
  7. melvin-bot commented on Oct 2, 2026

    @melvin-bot

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

  8. MelvinBot commented on Oct 2, 2026

    @MelvinBot
    Contributor

    Deploy Blocker Analysis

    Causing PR: Confirm new expenses with a “View” toast instead of scrolling to and highlighting the row v2 by mhawryluk (high confidence). The auto-assignment is correct. This PR adds the growl, its "View" button, and the navigation it runs.

    Root cause: On narrow layouts, "View" tries to replace the expense open in the RHP. Instead, it pushes a new screen on top. The old expense stays in the back stack, so pressing back reopens it.

    Recommendation: Fix forward in navigateToCreatedExpense.ts. Revert if a fix can't land quickly. Use one of these options:

    1. When a report is open in the RHP, open the thread as SEARCH_REPORT with forceReplace. The non-inbox branch at lines 57-61 already does this.
    2. Dismiss the RHP before navigating to REPORT_WITH_ID.
    Investigation details

    Mechanism

    1. Submitting from the FAB queues the growl (TrackExpense.ts:2004-2006).
    2. In a report with two or more expenses, tapping the preview opens the report and then the expense thread in the RHP (MoneyRequestReportPreview/index.tsx:286-294).
    3. The early-return guard (navigateToCreatedExpense.ts:46) doesn't fire, so forceReplace becomes true (line 54).
    4. The narrow-layout branch navigates to REPORT_WITH_ID, a full-screen route in the tab navigator. linkTo sets REPLACE (linkTo/index.ts:222-224). It then overrides that to PUSH because the RHP, not the tab navigator, is on top (lines 245-251).

    Why one expense doesn't reproduce it: With a single expense, the preview opens only the report and no RHP. The guard at line 46 then returns early.

    Secondary issue: The growl and the preview resolve the thread ID in opposite order. The growl uses transactionThreadReportID ?? childReportID (ExpenseAddedGrowl.tsx:132). The preview uses the reverse (MoneyRequestReportPreview/index.tsx:246). Aligning them lets the guard catch "View" on the expense already open.

    Other PRs ruled out: I diffed production against staging for navigation, report preview, growl, and inbox code. Only this PR changes the navigation or growl behavior involved.

    Not verified: I didn't run the app on Android, so I haven't confirmed which back press brings the old expense back.

    Related deploy blockers from the same PR:


    view run

  9. mhawryluk commented on Oct 2, 2026

    @mhawryluk
    Member

    I will look into this

  10. melvin-bot commented on Oct 2, 2026

    @melvin-bot

    ⚠️ Looks like this issue was linked to a Deploy Blocker here

    If you are the assigned CME please investigate whether the linked PR caused a regression and leave a comment with the results.

    If a regression has occurred and you are the assigned CM follow the instructions here.

    If this regression could have been avoided please consider also proposing a recommendation to the PR checklist so that we can avoid it in the future.

  11. melvin-bot commented on Oct 2, 2026

    @melvin-bot

    ⚠️ Looks like this issue was linked to a Deploy Blocker here

    If you are the assigned CME please investigate whether the linked PR caused a regression and leave a comment with the results.

    If a regression has occurred and you are the assigned CM follow the instructions here.

    If this regression could have been avoided please consider also proposing a recommendation to the PR checklist so that we can avoid it in the future.

  12. m-natarajan commented on Oct 2, 2026

    @m-natarajan

    Not repro, Samsung S23FE/ Android 16, v9.5.1-5

    102833.mp4
  13. self-assigned this
    on Oct 2, 2026
  14. added and removed
    ReviewingHas a PR in review
    on Oct 5, 2026
  15. changed the title [-]Expense - Back button reopens expense after opening expense and tapping View on growl[/-] [+][Due for payment 2026-10-12] Expense - Back button reopens expense after opening expense and tapping View on growl[/+] on Oct 5, 2026
  16. melvin-bot commented on Oct 5, 2026

    @melvin-bot

    @situchan

    The solution for this issue has been 🚀 deployed to production 🚀 in version 9.5.1-9 and is now subject to a 7-day regression period 📆. Here is the list of pull requests that resolve this issue:

    If no regressions arise, payment will be issued on 2026-10-12. 🎊

    The following checklist (instructions) will need to be completed before the issue can be closed. Please copy/paste the Contributor+ Checklist from here into a new comment on this GH and complete it. If you have the K2 extension, you can simply click: [this button]. If no checklist is needed for this issue, you can click: [no checklist button]

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.DailyKSv2Engineering

Type

No type

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions