Skip to content

[Due for payment 2026-10-12] Expense - Growl is shown after creating split distance expense from QAB #102831

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): idjosdjnoidjsionj@gmail.com
Issue reported by: Applause Internal Team
Bug source: Exploratory - Significant User Experience Deterioration
Device used: Mac 26.5 / Chrome
App Component: Money Requests

Action Performed:

  1. Go to staging.new.expensify.com
  2. Open 1:1 DM with other user.
  3. Split an expense with the user.
  4. Open FAB > click Split Manual under Quick action > split an expense with the user.
  5. Repeat Step 4 with Split scan and Split distance from QAB.

Expected Result:

No growl will be shown after creating split expense from QAB.

Actual Result:

Growl is shown after creating split distance expense from QAB.
Nothing happens after clicking View on the growl after splitting distance from QAB.

Workaround:

Unknown

Platforms:

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

Screenshots/Videos

Bug7274852_1790903538878.8.mp4

View all open jobs on GitHub

Applause Internal Information
Exported by: Mita Rachim
Bug ID: 7274852

Issue OwnerCurrent Issue Owner: @situchan

Activity

  1. added
    DeployBlockerCashThis issue or pull request should block deployment
    BugSomething is broken. Auto assigns a BugZero manager.
    on Oct 2, 2026
  2. 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/964c0c48bf40732676913a965c6cb74fbf574aa72700fa895626016d0bc4a6d3

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

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

  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 (high confidence)

    Root cause: createDistanceRequest sends the “Expense added” growl whenever isFromGlobalCreate is true, even when iouType is SPLIT (Split.ts:2381-2383). Manual and scan splits use other functions that never send the growl. That's why only distance splits show it.

    Why “View” does nothing: for a split, the transaction ID is the split container, which lives under SPLIT_REPORT_ID ('-2'). The growl can't find a report or IOU action for it, so it can't open a transaction thread.

    Recommendation: roll forward. Fix it with a one-line guard instead of reverting the 70-file PR:

    if (isFromGlobalCreate && iouType !== CONST.IOU.TYPE.SPLIT) {
        signalExpenseAddedGrowl(parameters.transactionID, CONST.SEARCH.DATA_TYPES.EXPENSE);
    }

    If a quick fix isn't possible, revert the PR.

    Investigation details
    1. Quick action passes isFromFloatingActionButton: true (QuickActionMenuItem.tsx:211), so getIsFromGlobalCreate returns true (TransactionUtils:1761-1763).
    2. In useExpenseSubmission.ts, distance requests go through createDistanceRequest for every iouType, including split. Manual split uses splitBillAndOpenReport (L1177-L1180), and scan split uses startSplitBill (L1068-L1108). Neither sends the growl.
    3. Before the PR, this spot called highlightTransactionOnSearchRouteIfNeeded. A split container never appears in Search, so that call had no visible effect.
    4. ExpenseAddedGrowl.tsx:115-120 hides the growl only when the focused report matches transaction.reportID. The user is on the 1:1 chat, not '-2', so the growl shows.
    5. When the user clicks “View”, createTransactionThreadReport returns early without a report (Report/index.ts:2482-2484). The growl then logs Unable to resolve transaction thread reportID and doesn't navigate (ExpenseAddedGrowl.tsx:148-151).

    Also affected: a distance split from FAB > Create expense > Distance should show the same bug.

    Optional safety net: in ExpenseAddedGrowl.tsx, skip the growl when transaction.reportID === CONST.REPORT.SPLIT_REPORT_ID.

    Suggested test: in tests/actions/IOUTest/SplitTest.ts, call createDistanceRequest with iouType: SPLIT and isFromGlobalCreate: true. Then assert that no growl transaction ID is set.

    This finding comes from reading the code. I didn't reproduce it in the app.


    view run

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

  10. mhawryluk commented on Oct 2, 2026

    @mhawryluk
    Member

    I will create a fix PR shortly

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

  13. m-natarajan commented on Oct 2, 2026

    @m-natarajan

    Chrome / v9.5.1-2
    Not repro

    bandicam.2026-10-02.15-39-00-813.mp4
  14. added and removed
    ReviewingHas a PR in review
    on Oct 5, 2026
  15. changed the title [-]Expense - Growl is shown after creating split distance expense from QAB[/-] [+][Due for payment 2026-10-12] Expense - Growl is shown after creating split distance expense from QAB[/+] 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