You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[Due for payment 2026-03-25] Workspace - Non-existing room mention shows green highlight after saving description #85363
Version Number: 9.3.38-0 Reproducible in staging?: Yes Reproducible in production?: No If this was caught during regression testing, add the test name, ID and link from BrowserStack:#55846 Email or phone of affected tester (no customers):sdijnsoijsodosj@gmail.com Issue reported by: Applause Internal Team Bug source: Exploratory - Significant User Experience Deterioration Device used: Mac 26.2 / Chrome App Component: Money Requests
Action Performed:
Go to staging.new.expensify.com
Go to workspace settings > Overview.
Click Description.
Enter a room mention which does not exist (eg, #abc).
Click Save.
Expected Result:
#abc mention will not show green highlight after saving the description because #abc is not an existing room.
Actual Result:
#abc mention shows green highlight briefly after saving the description.
Green highlight indicates the currently opened room, which is not the case as workspace overview is opened.
👋 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:
Identify the pull request that introduced this issue and revert it.
Classification: Frontend bug Causing PR: #55846 - "fix: the mentioned room is not highlighted in policy profile page" by @truph01 (High confidence) Related Issues: #54941 (original issue that PR #55846 fixed)
Recommendation: REVERT
PR #55846 introduced a regression where non-existing room mentions incorrectly show the green highlight (indicating the currently opened room) when saved in workspace descriptions. This happens because the PR sets currentReportID: undefined in the mention context, and non-existing rooms also have reportID: undefined, causing an unintended match (undefined === undefined).
Labels: Removing DeployBlocker label - this is a frontend/App issue that blocks the App deploy only.
📋 Detailed Analysis
Evidence
PR #55846 was intended to fix issue #54941 where room mentions were not highlighted in workspace descriptions. The PR added policyID context to enable room mention highlighting.
However, it introduced a regression visible in the reproduction steps:
When a non-existing room mention (e.g., #abc) is entered in workspace description
After saving, the mention briefly shows green highlight
Green highlight indicates "currently opened room", which is incorrect since workspace overview is open, not #abc
Verification
The bug is in the interaction between these changes:
Please re-state the problem that we are trying to solve in this issue.
When saving a workspace description that contains a non-existing room mention (e.g., #abc), the mention briefly shows a green highlight. Green highlight is reserved for the "currently opened room" mention, which is incorrect here — the user is on the workspace overview page, not in a room called #abc.
What is the root cause of that problem?
PR #55846 added room mention highlighting to workspace descriptions by wrapping the description in a MentionReportContext.Provider in WorkspaceOverviewPage.tsx. However, the context value is missing exactlyMatch: true:
When exactlyMatch is falsy (not set), !exactlyMatch evaluates to true, short-circuiting the OR. The condition becomes just isGroupPolicyReport, which is always true when policyID is provided. This means every mention gets highlighted regardless of whether the room actually exists.
For the green color specifically: isCurrentRoomMention is computed as reportID === currentReportIDValue. For a non-existing room, reportID is undefined (no match found). Since currentReportID is also undefined (WorkspaceOverviewPage explicitly passes undefined), undefined === undefined evaluates to true, triggering the green "our mention" style instead of blue.
By contrast, PureReportActionItem and ReportDetailsPage both correctly set exactlyMatch: true in their context values, which prevents non-existing rooms from being highlighted.
What changes do you think we should make in order to solve the problem?
In src/pages/workspace/WorkspaceOverviewPage.tsx:197, add exactlyMatch: true to the mention context value:
This makes the styling condition require a valid navigationRoute (which only exists when the room is found and has a real reportID), preventing non-existing rooms from being highlighted — matching the behavior of PureReportActionItem and ReportDetailsPage.
What alternative solutions did you explore? (Optional)
An alternative would be to add a guard in MentionReportRenderer to check if reportID is defined before applying any highlight styling. However, this would be a broader change affecting all consumers, whereas the missing exactlyMatch: true is the intended pattern already used by other providers and is a one-line fix scoped to the affected page.
Next Steps for Contributor+ team: Reply with @MelvinBot implement this to create a draft PR, @MelvinBot <your feedback> to refine this analysis, or explain why you are rejecting Melvin's proposal.
changed the title [-]Workspace - Non-existing room mention shows green highlight after saving description[/-][+][Due for payment 2026-03-25] Workspace - Non-existing room mention shows green highlight after saving description[/+]on Mar 18, 2026
The solution for this issue has been 🚀 deployed to production 🚀 in version 9.3.39-3 and is now subject to a 7-day regression period 📆. Here is the list of pull requests that resolve this issue:
@madmax330 The PR fixing this issue has been merged! The following checklist (instructions) will need to be completed before the issue can be closed. Please copy/paste the BugZero 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]
Activity
melvin-bot commentedon Mar 16, 2026
You have been assigned to this deploy blocker because you recently merged this PR: #55846
melvin-bot commentedon Mar 16, 2026
💬 A slack conversation has been started in #expensify-open-source
github-actions commentedon Mar 16, 2026
👋 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:
OSBotify commentedon Mar 16, 2026
🔍 Investigation Summary
Classification: Frontend bug
Causing PR: #55846 - "fix: the mentioned room is not highlighted in policy profile page" by @truph01 (High confidence)
Related Issues: #54941 (original issue that PR #55846 fixed)
Recommendation: REVERT
PR #55846 introduced a regression where non-existing room mentions incorrectly show the green highlight (indicating the currently opened room) when saved in workspace descriptions. This happens because the PR sets
currentReportID: undefinedin the mention context, and non-existing rooms also havereportID: undefined, causing an unintended match (undefined === undefined).Labels: Removing
DeployBlockerlabel - this is a frontend/App issue that blocks the App deploy only.📋 Detailed Analysis
Evidence
PR #55846 was intended to fix issue #54941 where room mentions were not highlighted in workspace descriptions. The PR added
policyIDcontext to enable room mention highlighting.However, it introduced a regression visible in the reproduction steps:
Verification
The bug is in the interaction between these changes:
File: src/pages/workspace/WorkspaceOverviewPage.tsx (line 197)
File: src/components/HTMLEngineProvider/HTMLRenderers/MentionReportRenderer/index.tsx (line 51)
File: src/libs/MentionUtils.ts (lines 27-32)
For non-existing rooms, the loop finds no match, so
reportIDremainsundefined.Root Cause
The comparison
reportID === currentReportIDValueevaluates toundefined === undefined = truewhen:currentReportIDValueisundefined(set explicitly in WorkspaceOverviewPage context)reportIDisundefined(no matching report found for non-existing room name)This causes
isCurrentRoomMentionto betrue, which triggers the green highlight styling on line 62:The fix would need to check that both values are defined before comparing, or use a sentinel value instead of
undefinedfor the context.MelvinBot commentedon Mar 16, 2026
Proposal
Please re-state the problem that we are trying to solve in this issue.
When saving a workspace description that contains a non-existing room mention (e.g.,
#abc), the mention briefly shows a green highlight. Green highlight is reserved for the "currently opened room" mention, which is incorrect here — the user is on the workspace overview page, not in a room called#abc.What is the root cause of that problem?
PR #55846 added room mention highlighting to workspace descriptions by wrapping the description in a
MentionReportContext.ProviderinWorkspaceOverviewPage.tsx. However, the context value is missingexactlyMatch: true:In
MentionReportRenderer/index.tsx:61, the styling condition is:When
exactlyMatchis falsy (not set),!exactlyMatchevaluates totrue, short-circuiting the OR. The condition becomes justisGroupPolicyReport, which is alwaystruewhenpolicyIDis provided. This means every mention gets highlighted regardless of whether the room actually exists.For the green color specifically:
isCurrentRoomMentionis computed asreportID === currentReportIDValue. For a non-existing room,reportIDisundefined(no match found). SincecurrentReportIDis alsoundefined(WorkspaceOverviewPage explicitly passesundefined),undefined === undefinedevaluates totrue, triggering the green "our mention" style instead of blue.By contrast,
PureReportActionItemandReportDetailsPageboth correctly setexactlyMatch: truein their context values, which prevents non-existing rooms from being highlighted.What changes do you think we should make in order to solve the problem?
In
src/pages/workspace/WorkspaceOverviewPage.tsx:197, addexactlyMatch: trueto the mention context value:This makes the styling condition require a valid
navigationRoute(which only exists when the room is found and has a realreportID), preventing non-existing rooms from being highlighted — matching the behavior ofPureReportActionItemandReportDetailsPage.What alternative solutions did you explore? (Optional)
An alternative would be to add a guard in
MentionReportRendererto check ifreportIDis defined before applying any highlight styling. However, this would be a broader change affecting all consumers, whereas the missingexactlyMatch: trueis the intended pattern already used by other providers and is a one-line fix scoped to the affected page.Next Steps for Contributor+ team: Reply with
@MelvinBot implement thisto create a draft PR,@MelvinBot <your feedback>to refine this analysis, or explain why you are rejecting Melvin's proposal.6 remaining items
izarutskaya commentedon Mar 17, 2026
MacOS Monterey - Chrome
Build 9.3.38-2
Passed
Screen.Recording.2026-03-17.at.10.41.46.mp4
Windows/Chrome
Build 9.3.38-2
Recording.3673.mp4
cristipaval commentedon Mar 17, 2026
Thanks! Closing it then
[-]Workspace - Non-existing room mention shows green highlight after saving description[/-][+][Due for payment 2026-03-25] Workspace - Non-existing room mention shows green highlight after saving description[/+]melvin-bot commentedon Mar 18, 2026
Reviewinglabel has been removed, please complete the "BugZero Checklist".melvin-bot commentedon Mar 18, 2026
The solution for this issue has been 🚀 deployed to production 🚀 in version 9.3.39-3 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-03-25. 🎊
melvin-bot commentedon Mar 18, 2026
@madmax330 The PR fixing this issue has been merged! The following checklist (instructions) will need to be completed before the issue can be closed. Please copy/paste the BugZero 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]
melvin-bot commentedon Mar 18, 2026
Triggered auto assignment to @mallenexpensify (
Awaiting Payment)