Repository navigation
Part 3 - Audit usage of Str.removeSMSDomain - #100056
Conversation
|
@shubham1206agra Please copy/paste the Reviewer Checklist from here into a new comment on this PR and complete it. If you have the K2 extension, you can simply click: [this button] |
|
@FitseTLT Fix CI checks please |
Codecov Report❌ Looks like you've decreased code coverage for some files. Please write tests to increase, or at least maintain, the existing level of code coverage. See our documentation here for how to interpret this table.
|
Reviewer Checklist
Screenshots/VideosScreen.Recording.2026-09-03.at.9.28.01.PM.mov |
|
🚧 mountiny has triggered a test Expensify/App build. You can view the workflow run here. |
|
✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release. |
|
🧪🧪 Use the links below to test this adhoc build on Android, iOS, and Web. Happy testing! 🧪🧪
|
|
🚀 Deployed to staging by https://github.com/mountiny in version: 9.4.74-0 🚀
|
|
🤖 No help site changes are required for this PR — no docs PR created. This PR is a display-formatting fix. It swaps How I checkedWhat the PR changes: the rendered value of member and approver names in the workflows list, the workflow editor, the approval limit page, and the Expenses from selector — plus additive search matching on the new format. No new feature, no new or renamed setting, no changed toggle or button label, no changed navigation path. Articles reviewed:
Specific things I looked for and did not find:
Because the rendered number is now correct rather than different-by-design, this is a bug fix bringing the UI in line with what the docs already imply. If you think a help article should call out how phone-login members appear in approval workflows, reply with |
|
🚀 Deployed to production by https://github.com/mountiny in version: 9.4.74-2 🚀
|
Explanation of Change
The approval workflow surfaces displayed member and approver names through
Str.removeSMSDomain, which only strips the@expensify.smssuffix. A phone-login user with no display name therefore rendered as a raw+15551234567in the workflows list, the workflow editor, the approval limit page, and the "Expenses from" member selector, instead of the national format for the viewer's country.This replaces those calls with
formatPhoneNumberfromuseLocalize(), so the values react to the viewer's country code. Display names are guarded withStr.isSMSLoginfirst, becauseformatPhoneNumbersubstitutes non-breaking spaces and would break wrapping on ordinary names; logins are formatted directly, since it leaves non-phone strings unchanged.getApprovalLimitDescriptiontakesformatPhoneNumberas an injected parameter, matching how it already receivestranslateandconvertToDisplayString. The workflow search is left additive rather than swapped, so typing raw digits still matches alongside the newly displayed format.Fixed Issues
$ #97957
PROPOSAL: N/A — issue owner
Tests
Setup: a workspace on a Control policy with at least four approval workflows (the search field only appears above three), at least two members whose login is a phone number and who have no display name set, so the login is what renders, plus one member with an ordinary display name.
+15551234567, on both the "Expenses from" line and the approver line.[x] Verify that no errors appear in the JS console
Offline tests
Same as tests
QA Steps
Same as tests
Offline tests
Same as tests
QA Steps
Same as tests
Offline tests
Same as tests
QA Steps
Same as tests
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectionAvatar, I verified the components usingAvatarare working as expected)StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))npm run compress-svg)Avataris modified, I verified thatAvataris working as expected in all cases)Designlabel and/or tagged@Expensify/designso the design team can review the changes.mainbranch was merged into this PR after a review, I tested again and verified the outcome was still expected according to theTeststeps.Screenshots/Videos
Android: Native
Android: mWeb Chrome
iOS: Native
iOS: mWeb Safari
MacOS: Chrome / Safari
2026-09-01.19-46-05.mp4