refactor: add dedicated TaskSearchView#94820
Conversation
…-view # Conflicts: # src/components/Search/index.tsx
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.
|
|
@codex review |
|
🤖 Verified on web (dev NewDot, branch
|
Reviewer Checklist
Screenshots/VideosAndroid: HybridAppAndroid: mWeb ChromeiOS: HybridAppiOS: mWeb SafariMacOS: Chrome / SafariScreen.Recording.2026-07-02.at.01.04.21.mov |
|
OOO until next week 👋 If anything comes up, I've asked the callstack team to keep an eye on things. Thanks! |
|
🚧 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.27-1 🚀
|
Help site review — no changes requiredI reviewed the changes in this PR against the help site articles under Why: This is a purely internal refactor of the Search component. It adds a dedicated The changed files are all code and tests:
There are no new or changed feature names, tab names, settings labels, buttons, or user-facing flows, so nothing in the public help site (task search, Search, reports, etc.) becomes inaccurate as a result of this PR. No draft help site PR was created. @BartekObudzinski, please review the linked help site PR and confirm it reflects the current behavior. Then mark the linked help site PR (Note: no help site PR was created because this refactor has no user-facing impact. If you believe a docs update is still warranted, let me know what behavior changed and I'll draft one.) |
|
🚀 Deployed to production by https://github.com/grgia in version: 9.4.27-2 🚀
Bundle Size Analysis (Sentry): |


Explanation of Change
This adds a dedicated
TaskSearchViewfor the task search type, composing the shareduseSearchListViewStatehook andSearchListViewLayoutchrome overBaseSearchList(the same pattern asExpenseFlatSearchView). The router now dispatches the task type to it instead of the legacySearchListshell. Task rows useTaskListItem, have no column data and no exit animation, and long press is suppressed; the parent-report name still comes from the report-attributes selector insideTaskListItem, so there is no behavior change.Fixed Issues
$ #95034
Tests
Offline tests
QA Steps
Same as tests.
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectiontoggleReportand notonIconClick)Avatar, 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-01.at.12.24.03.mov
Android: mWeb Chrome
iOS: Native
Screen.Recording.2026-07-01.at.12.25.00.mov
iOS: mWeb Safari
MacOS: Chrome / Safari
Screen.Recording.2026-07-01.at.12.22.55.mov