Skip to content

[$250] LHN flooded with un-actionable workspace expense chats for threshold-based approvers #85817

@mountiny

Description

@mountiny

Slack thread: https://expensify.slack.com/archives/C05LX9D6E07/p1773866461763689

Problem

Users who are high-level approvers with threshold-based approval (i.e., they only approve expenses over a certain dollar amount via approvalLimit/overLimitForwardsTo) are seeing all workspace expense chats in their LHN, even for reports that are well below their approval threshold and will never require their action.

This results in:

  • LHN clogged with dozens/hundreds of un-actionable expense reports daily
  • NewDot becomes unusable -- slows down, messages stop sending
  • On mobile, the app becomes unresponsive until reports are manually dismissed via web

Expected Behavior

A REPORT_PREVIEW action should only mark the workspace expense chat as unread for a participant if they are the next person required to take action on that report (i.e., the current managerID). Other participants in the approval chain who are not the current approver should not have the chat marked as unread for them.

Current Behavior

When a report is submitted, every participant of the employee's policy expense chat receives the update. The high-level approver is a participant because they are in the approval chain. On the first submission:

  1. The policy expense chat is created with participants including the employee, admins, and all approvers in the chain (including the high-level threshold-based approver)
  2. The chat initially starts hidden for non-owners, but makePolicyExpenseChatVisibleForNonAuditorMembers (Report.cpp) flips the notification preference from hidden to always for all non-auditor participants -- regardless of whether the report requires their approval
  3. A REPORT_PREVIEW action is created/updated, making the chat unread for the approver
  4. The chat appears in LHN (in focus mode because it's unread and not muted; in default mode because it has content)

The approve badge (GBR) is correctly scoped to managerID only, so the approver doesn't see action buttons -- but the workspace chats themselves keep appearing as unread.

Impact

High-volume workspaces with many submitters and a multi-level approval chain are significantly affected. The volume of un-actionable LHN items causes performance degradation and makes the app unusable for the high-level approver.

Issue OwnerCurrent Issue Owner: @hoangzinh
Upwork Automation - Do Not Edit
  • Upwork Job URL: https://www.upwork.com/jobs/~022034640384145591407
  • Upwork Job ID: 2034640384145591407
  • Last Price Increase: 2026-04-02

Metadata

Metadata

Assignees

Labels

BugSomething is broken. Auto assigns a BugZero manager.DailyKSv2Hot PickReady for an engineer to pick up and run withInternalRequires API changes or must be handled by Expensify staff

Type

No type
No fields configured for issues without a type.

Projects

Status

CRITICAL

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions