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-10-28] [$175] Report field - System message shows "set text to """ after clearing text report field #104507
Version Number: 9.5.15-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:#104124 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: Mac 26.5 / Chrome App Component: Money Requests
Action Performed:
Precondition:
Enable Report fields.
Create a text report field with initial value.
Go to staging.new.expensify.com
Go to workspace chat.
Create an expense.
Open the report.
Click on the text report field.
Clear the field and press Enter.
Scroll the system message.
Expected Result:
System message will show something similar to "clear text field".
Actual Result:
System message shows "set text to """ after clearing text report field.
👋 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.
Root cause: Clearing a text field that only shows its workspace initial value sends an empty oldValue. The message builder then falls through to the changeFieldEmpty wording, which renders set text to "".
Recommendation: Roll forward with a small App-only fix. Revert again only if the fix can't land before the deploy.
In ReportActionsUtils.ts:2435-2440, check for an empty newValue before checking oldValue. Never return changeFieldEmpty when newValue is empty. With no oldValue, use a new "removed {field}" string (translate it in all locales).
In useSaveReportField.ts:67, pass the value the user saw as the previous value: reportField.value ?? reportField.defaultValue ?? ''.
Add a unit test for an empty or undefined oldValue with newValue: ''.
Production isn't affected because the old edit page never saved an empty value. This PR allows clearing text fields (useSaveReportField.ts:41-45).
The PR's tests cover only oldValue: 'Apollo', newValue: ''.
Not verified: whether the server's returned action also has an empty oldValue. If it does, only fix 1 corrects the message after the server responds. Fix 1 covers both cases, so no backend change is needed to clear the blocker.
changed the title [-][$175] Report field - System message shows "set text to """ after clearing text report field[/-][+][Due for payment 2026-10-28] [$175] Report field - System message shows "set text to """ after clearing text report field[/+]on Oct 21, 2026
The solution for this issue has been 🚀 deployed to production 🚀 in version 9.5.15-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-10-28. 🎊
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]
Activity
applause-bot commentedon Oct 20, 2026
While Applause doesn't embed attachments for this bug, here are the links for quick view:
https://platform.applause.com/services/links/v1/external/a5a8fbc57104a26468538b5fcb1cf99a266fa2f5a41f680120b98175842d8dbf
melvin-bot commentedon Oct 20, 2026
You have been assigned to this deploy blocker because you recently merged this PR: #104124
melvin-bot commentedon Oct 20, 2026
@AndrewGable @trjExpensify @daledah you have been assigned to this deploy blocker because you reviewed the offending PR: #104124
melvin-bot commentedon Oct 20, 2026
💬 A slack conversation has been started in #expensify-open-source
github-actions commentedon Oct 20, 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:
MelvinBot commentedon Oct 20, 2026
Deploy Blocker Analysis
Causing PR: Restore: Show up to three report fields per row and edit them inline (high confidence). The auto-assignment is correct.
Root cause: Clearing a text field that only shows its workspace initial value sends an empty
oldValue. The message builder then falls through to thechangeFieldEmptywording, which rendersset text to "".This is the same bug as Report field - System message shows "set text to """ after clearing text report field, which caused the first revert. The PR fixed that issue only when the report already had a saved, non-empty value. It did not fix the issue's actual precondition: a field showing its initial value.
Recommendation: Roll forward with a small App-only fix. Revert again only if the fix can't land before the deploy.
ReportActionsUtils.ts:2435-2440, check for an emptynewValuebefore checkingoldValue. Never returnchangeFieldEmptywhennewValueis empty. With nooldValue, use a new "removed {field}" string (translate it in all locales).useSaveReportField.ts:67, pass the value the user saw as the previous value:reportField.value ?? reportField.defaultValue ?? ''.oldValuewithnewValue: ''.Investigation details
field.value ?? field.defaultValue ?? ''(MoneyRequestViewReportFields.tsx:163-165).defaultValue(ReportField.ts:217-221). A new report copies them as is (ReportUtils.ts:8174), soreportField.valueis empty.previousReportField(useSaveReportField.ts:64-67). The optimistic action setsoldValue: previousReportField.value(ReportUtils.ts:4887-4893).if (oldValue && !newValue)is skipped, thenif (!oldValue)returnschangeFieldEmpty(ReportActionsUtils.ts:2435-2440, en.ts:10775-10777).oldValue: 'Apollo', newValue: ''.oldValue. If it does, only fix 1 corrects the message after the server responds. Fix 1 covers both cases, so no backend change is needed to clear the blocker.Next Steps: Reply with
@MelvinBot implement thisto create a draft PR, or@MelvinBot <your feedback>to refine this analysis.view run
3 remaining items
melvin-bot commentedon Oct 21, 2026
Unable to auto-create job on Upwork. The BZ team member should create it manually for this issue.
m-natarajan commentedon Oct 21, 2026
Chrome / v9.5.15-2
System message is: removed [Text field name]
bandicam.2026-10-21.16-43-30-278.mp4
[-][$175] Report field - System message shows "set text to """ after clearing text report field[/-][+][Due for payment 2026-10-28] [$175] Report field - System message shows "set text to """ after clearing text report field[/+]melvin-bot commentedon Oct 21, 2026
@daledah
The solution for this issue has been 🚀 deployed to production 🚀 in version 9.5.15-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-10-28. 🎊
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]
daledah commentedon Oct 22, 2026
I don’t think there should be a payment here since this issue is a deploy blocker
melvin-bot commentedon Oct 27, 2026
Triggered auto assignment to @mallenexpensify (
Awaiting Payment)melvin-bot commentedon Oct 27, 2026
Payment Summary
Resolving PRs:
[CP Staging] Show "removed" instead of "set to """ when a text report field is cleared #104551
Reviewer: @daledah owed $175 via NewDot
BugZero Checklist (@mallenexpensify)