Fix: open Currency RHP when updating workspace currency from Workflows#93098
Conversation
The deferred navigation via setNavigationActionToMicrotaskQueue was being silently undone by the confirm modal's guarded history.back(), so the Currency RHP never opened. Navigate directly inside the confirm handler, matching the working invoice VBA section. Co-authored-by: Yauheni Horbach <ZhenjaHorbach@users.noreply.github.com>
|
No code fix is needed — all CI checks that test the code are green. The only failing check is
It fails because the human-only sections of the PR description are still incomplete — the Tests / QA Steps sections and the PR Author Checklist checkbox haven't been filled in/ticked. I intentionally don't fill those out on a human's behalf, so this requires the PR's human co-author to:
Everything else passed — |
|
@MelvinBot |
|
@thelullabyy 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] |
|
🤖 Marked this PR as ready for review. |
Reviewer Checklist
Screenshots/VideosAndroid: HybridApp2026-06-09.19.25.15.movAndroid: mWeb Chrome2026-06-09.19.25.15.moviOS: HybridApp2026-06-09.20.09.17.moviOS: mWeb Safari2026-06-09.19.18.56.movMacOS: Chrome / Safari2026-06-09.19.17.11.mov |
|
Works good! |
|
🤖 No action needed — this PR has already been merged and all checks are currently passing (no failing checks remain). The earlier failures must have resolved before merge. If you're seeing a specific check that still looks red, let me know which one and I'll dig in. |
|
🚧 @roryabraham 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/roryabraham in version: 9.4.2-0 🚀
Bundle Size Analysis (Sentry): |
|
🤖 No help site changes required. I reviewed the changes in this PR against the help site articles under This is a pure navigation bug fix: it swaps deferred navigation ( There is no new feature, UI text, label, tab, or setting introduced — so there is nothing for the help site to document or update. The help articles describe what features do and how to use them, not the internal navigation mechanics this PR corrects. Because no documentation update is needed, I did not create a draft help site PR. @ZhenjaHorbach, please confirm you agree no help site updates are needed here. If you believe a related article should still be updated, let me know which flow and I'll draft the changes. |
|
🚀 Deployed to staging by https://github.com/roryabraham in version: 9.4.4-1 🚀
Bundle Size Analysis (Sentry): |
|
🤖 Help site review — no documentation changes required. This PR is a purely internal navigation-timing fix. It changes Why no docs are needed:
Since this is a bug fix that restores already-documented behavior rather than a change to how the product works, the @ZhenjaHorbach, if you believe a help article should document this Workflows → Payment currency-update flow (it currently is not covered), let me know and I'll draft one. |
|
🚀 Deployed to production by https://github.com/Julesssss in version: 9.4.4-3 🚀
|
Explanation of Change
Pressing "Update workspace currency" in the Workflows → Payment "Add bank account" confirm modal did nothing, so the Currency RHP never opened.
The confirm handler
confirmCurrencyChangeAndHideModalnavigated deferred, viaNavigation.setNavigationActionToMicrotaskQueue. The confirm modal usesuseConfirmModalwithshouldHandleNavigationBack: true, and when that modal hides,Modal.hideModalschedules a guardedwindow.history.back()onsetTimeout(0)that only short-circuits if a new history entry was pushed in the meantime. Because the navigation was deferred past thatsetTimeout(0), the guard saw no new entry, ranhistory.back(), and cancelled the forward navigation.This change navigates directly (synchronously) inside the handler — matching the working sibling
WorkspaceInvoiceVBASection.confirmCurrencyChangeAndHideModal, which navigates to the identicalWORKSPACE_OVERVIEW_CURRENCYroute synchronously and is unaffected. This restores the synchronous-navigation contract the modal's guard relies on.Fixed Issues
$ #93062
PROPOSAL: #93062 (comment)
Tests
// TODO: The human co-author must fill out the tests you ran before marking this PR as "ready for review".
// Please describe what tests you performed that validates your changes worked.
Offline tests
Same as Tests.
QA Steps
// TODO: The human co-author must fill out the QA tests you ran before marking this PR as "ready for review".
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectioncanBeMissingparam foruseOnyxtoggleReportand notonIconClick)src/languages/*files and using the translation methodSTYLE.md) were followedAvatar, 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.ScrollViewcomponent to make it scrollable when more elements are added to the page.mainbranch was merged into this PR after a review, I tested again and verified the outcome was still expected according to theTeststeps.Screenshots/Videos
MacOS: Chrome / Safari