Add top-level navigation suggestions to Search Router - #96042
Conversation
|
Hey, I noticed you changed If you want to automatically generate translations for other locales, an Expensify employee will have to:
Alternatively, if you are an external contributor, you can run the translation script locally with your own OpenAI API key. To learn more, try running: npx ts-node ./scripts/generateTranslations.ts --helpTypically, you'd want to translate only what you changed by running |
|
The unit test failures are also not related to our PR changes, thanks. |
|
@marufsharifi 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] |
|
@nabi-ebrahimi, could you please merge the main? |
Reviewer Checklist
Screenshots/VideosAndroid: HybridAppScreen.Recording.2026-07-15.at.7.49.20.PM.movAndroid: mWeb ChromeScreen_Recording_20260715_193837_Chrome.mp4iOS: HybridAppScreen.Recording.2026-07-15.at.8.12.20.PM.moviOS: mWeb SafariScreen.Recording.2026-07-15.at.8.29.01.PM.movMacOS: Chrome / SafariScreen.Recording.2026-07-15.at.7.08.17.PM.movScreen.Recording.2026-07-15.at.7.09.56.PM.movScreen.Recording.2026-07-15.at.7.11.31.PM.movScreen.Recording.2026-07-15.at.7.12.05.PM.movScreen.Recording.2026-07-15.at.7.13.05.PM.movScreen.Recording.2026-07-15.at.7.14.27.PM.movScreen.Recording.2026-07-15.at.7.15.34.PM.movScreen.Recording.2026-07-15.at.7.18.09.PM.movScreen.Recording.2026-07-15.at.7.21.13.PM.mov |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 38eb02cfcb
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
|
@nabi-ebrahimi, could you please check the above comments? thanks. |
Codecov Report✅ Changes either increased or maintained existing code coverage, great job!
|
|
@MelvinBot review |
|
@marufsharifi, it is done from my side, all yours. |
ReviewSolid, well-scoped first step for 🟡 Fuzzy matching also matches the
|
|
@Expensify/design, could you please share your feedback here? thanks. |
|
@nabi-ebrahimi, could you please check the above comment? thanks. |
|
@marufsharifi Thanks for the review, addressed above comments can you please do another review. |
marufsharifi
left a comment
There was a problem hiding this comment.
Code looks good and tested, but there are a few minor feedback. thanks.
|
Thanks for that. @nabi-ebrahimi over to you... |
|
@marufsharifi thanks for the detailed review. I addressed the valid comments, added the relevant regression coverage, and replied to the non-actionable or informational threads with context. Could you please take another look when you have a chance? |
|
@codex review |
|
@marufsharifi thanks for the thorough review. I addressed all valid and actionable comments, verified the related tests and checks, and replied with context where no change was required. Could you please take another look when convenient? |
|
@nabi-ebrahimi @marufsharifi great, will review momentarily. to confirm, this PR would be the first item in this list, correct? -> #92752 (comment) |
|
@trjExpensify @heyjennahay ready for product review |
trjExpensify
left a comment
There was a problem hiding this comment.
First PR of several to roll out navigational search 👍
|
✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release. |
|
🚀 Deployed to staging by https://github.com/carlosmiceli in version: 9.4.42-0 🚀
|
Help site review — changes required ✅Yes, this PR introduces a user-facing behavior that isn't documented on the help site: members can now jump to a top-level destination by typing its name (or a The existing Navigating New Expensify article already documents the same five destinations (Home, Inbox, Spend, Workspaces, Account) via the navigation tabs but only covers reaching them through the tabs — so it's the right home for this new capability. Draft help site PR: #96714 What I changed and whyUpdated
Scope: This PR intentionally ships only the five top-level destinations and excludes Spend submenu, Account settings, Workspace settings, Domain, and Create/FAB suggestions — so the doc update is scoped to match the shipped behavior and can be expanded as later parts of #92752 land. Written per
@nabi-ebrahimi, please review the linked help site PR and confirm it reflects the current behavior. Then mark the linked help site PR |
|
🚀 Deployed to production by https://github.com/yuwenmemon in version: 9.4.42-1 🚀
Bundle Size Analysis (Sentry): |
Explanation of Change
This PR introduces the core Search Router navigation infrastructure and adds navigation suggestions for the five top-level destinations:
Navigation suggestions are rendered inside the existing
SelectionListWithSectionsflow, preserving keyboard focus, Enter selection, and existing Search Router row ordering.The suggestions:
go/go toprefixes.goandgo toqueries.Go to {destination}labels.This is the first focused part of #92752. It intentionally does not add Spend submenu, Account settings, Workspace settings, Domain, or Create/FAB suggestions.
Fixed Issues
$ #92752
PROPOSAL: #92752 (comment)
Tests
Plain navigation query
home,inbox,spend,workspaces, andaccount.Go to ...row appears and opens the correct destination.Navigation intent prefixes
go inboxandgo to inbox.GO TO INBOX.Go to Inboxand selecting it opens Inbox.Minimum query length
a,ab, andacc.aorab.accshowsGo to Account.Bare navigation intent and ordering
go, thengo to.Keyboard selection
inbox.Go to Inboxusing Arrow Up/Down and press Enter.Spend navigation
Go to Spend.Workspaces root navigation
Go to Workspaces.Modal close before navigation
Go to ...row.Localized navigation text
Go to {destination}row appears and navigates correctly.Offline tests
Expected: Cached navigation suggestions remain available, local navigation does not crash, and the app recovers normally after reconnecting.
QA Steps
Same as Tests.
// TODO: These must be filled out, or the issue title must include "[No QA]."
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
Screen.Recording.2026-07-15.at.8.07.14.AM.mov
Screen.Recording.2026-07-15.at.8.09.16.AM.mov
Android: mWeb Chrome
Screen_Recording_20260715_080309_Chrome.mp4
Screen_Recording_20260715_080352_Chrome.mp4
iOS: Native
Screen.Recording.2026-07-15.at.8.43.18.AM.mov
Screen.Recording.2026-07-15.at.8.44.00.AM.mov
iOS: mWeb Safari
Screen.Recording.2026-07-15.at.8.59.51.AM.mov
Screen.Recording.2026-07-15.at.9.01.40.AM.mov
MacOS: Chrome / Safari
01
Screen.Recording.2026-07-14.at.3.27.10.PM.mov
02
Screen.Recording.2026-07-14.at.3.31.18.PM.mov
03
Screen.Recording.2026-07-14.at.3.34.42.PM.mov
04
Screen.Recording.2026-07-15.at.7.30.59.AM.mov
05
Screen.Recording.2026-07-15.at.7.31.51.AM.mov
06
Screen.Recording.2026-07-15.at.7.34.17.AM.mov
07
Screen.Recording.2026-07-15.at.7.35.48.AM.mov
08
Screen.Recording.2026-07-15.at.7.44.36.AM.mov
09
Screen.Recording.2026-07-15.at.7.50.32.AM.mov