Skip to content

[Due for payment 2026-10-22] Expense - Remove receipt system message is not shown in self dm on removing the receipt. #102533

Open

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: V9.4.95-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: #100801
Email or phone of affected tester (no customers): dreamnitethedragon+vegst@gmail.com
Issue reported by: Applause Internal Team
Bug source: Exploratory - Significant User Experience Deterioration
Device used: Redmi note 10s android 13
App Component: Money Requests

Action Performed:

  1. Launch app
  2. Create a manual expense in self dm entering Merchant
  3. Open the expense and add a receipt via camera image
  4. Note added a receipt system message is shown
  5. Tap receipt and delete it

Expected Result:

Remove receipt system message must be shown in self dm on removing the receipt.

Actual Result:

Remove receipt system message is not shown in self dm on removing the receipt.

Workaround:

Unknown

Platforms:

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

Screenshots/Videos

Bug7272477_1790681164444.Screenrecorder-2026-09-29-16-52-40-203.mp4

View all open jobs on GitHub

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

Issue OwnerCurrent Issue Owner: @mallenexpensify

Activity

  1. added
    DeployBlockerCashThis issue or pull request should block deployment
    BugSomething is broken. Auto assigns a BugZero manager.
    on Sep 29, 2026
  2. applause-bot commented on Sep 29, 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/1406f82e16611393fc5d46312200bb6f8563dcdcc6611b1912fe0699785555bd

  3. melvin-bot commented on Sep 29, 2026

    @melvin-bot

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

  4. melvin-bot commented on Sep 29, 2026

    @melvin-bot

    @arosiclair @flaviadefaria @truph01 you have been assigned to this deploy blocker because you reviewed the offending PR: #100801

  5. github-actions commented on Sep 29, 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 Sep 29, 2026

    @melvin-bot

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

  7. melvin-bot commented on Sep 29, 2026

    @melvin-bot

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

  8. 25 remaining items

  9. MelvinBot commented on Oct 20, 2026

    @MelvinBot
    Contributor

    It's a pre-existing issue, not a regression from Add an audit trail for receipt additions. Production already failed to show "removed a receipt" for self-DM expenses before that PR merged. The PR added a new "added a receipt" message, and that made the missing removal message easy to notice.

    Evidence
    • The removal code didn't change. Before the PR, detachReceipt built the removal action with transactionReport?.reportID (Receipt.ts:132-136). A self-DM expense has reportID = '0', so that report doesn't exist and the action never shows in the self DM or the expense thread.
    • The PR's only change to detachReceipt passes a new transactionThreadReportID argument to the offline conflict resolver. That argument only cleans up queued "added a receipt" actions. The action-building and Onyx writes were not touched.
    • The issue itself says "Reproducible in production?: N/A - new feature".
    • The fix was new behavior, not a revert. Add an audit trail for receipt additions added a new receiptRemoved message and resolveTransactionThreadReport so self-DM expenses post to the open thread. A self-DM removal message wasn't shown before either PR.

    I checked this in the code and did not reproduce it on production.

  10. truph01 commented on Oct 20, 2026

    @truph01
    Contributor

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

    Based on #102533 (comment), it is pre-existing issue

  11. truph01 commented on Oct 20, 2026

    @truph01
    Contributor

    Contributor+ Checklist:

    • [Contributor] The offending PR and associated issue have been commented on, pointing out the bug it caused and why, so the author and reviewers can learn from the mistake.

      Link to the comment on the PR:
      Link to the comment on the Issue:

    • [Contributor] If the regression was CRITICAL (e.g. interrupts a core flow) A discussion in #expensify-open-source has been started about whether any other steps should be taken (e.g. updating the PR review checklist) in order to catch this type of bug sooner.

      Link to discussion:

    • [Contributor] If it was decided to create a regression test for the bug, please propose the regression test steps using the template below to ensure the same bug will not reach production again.

    Regression Test Proposal

    Precondition:

    Test:

    Test case 1:

    1. Submitter submit an expense without receipt
    2. Submitter or admin add new receipt
    3. Verify that the message added a receipt is created
    4. Replace the receipt
    5. Verify that there're 2 messages: Removed a receipt & Added a receipt

    Test case 2:

    1. Submitter submit an expense without receipt
    2. Submitter or admin add new receipt
    3. Verify that the message added a receipt is created
    4. Remove the receipt
    5. Observe the message removed a receipt is shown
    6. Reset cache and restart
    7. Observe the message removed a receipt is preserved

    Test case 3:

    1. Launch app
    2. Open workspace chat
    3. Toggle on forced offline
    4. Create a manual expense entering Merchant
    5. Open the expense and add the receipt via camera image
    6. Note add receipt message is shown
    7. Remove the receipt and verify remove receipt message is shown
    8. Add receipt via choose file and note add receipt message is shown
    9. Now delete receipt
    10. Toggle off forced offline
    11. Verify that: Add receipt message must not be missing and system message must not reorder.

    Test case 4:

    1. Launch app
    2. Create a manual expense in self dm entering Merchant
    3. Open the expense and add a receipt via camera image
    4. Note added a receipt system message is shown
    5. Tap receipt and delete it
    6. Verify that: Remove receipt system message must be shown in self dm on removing the receipt.

    Do we agree 👍 or 👎

  12. added
    Awaiting PaymentAuto-added when associated PR is deployed to production
    and removed on Oct 20, 2026
  13. melvin-bot commented on Oct 21, 2026

    @melvin-bot

    Triggered auto assignment to @mallenexpensify (Awaiting Payment)

  14. melvin-bot commented on Oct 21, 2026

    @melvin-bot

    Payment Summary

    Resolving PRs:

    BugZero Checklist (@mallenexpensify)

    • I have confirmed assignees, roles, and Upwork contracts look correct
    • I have paid out Upwork contracts / manual NewDot requests
    • [BugZero Assignee] I have created a GH issue for creating/updating the regression test once above steps have been agreed upon
  15. mallenexpensify commented on Oct 24, 2026

    @mallenexpensify
    Contributor
    Image

    @truph01 plz fully fill out the C+ Checklist

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

Type

No type

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions