Update table pages to scroll full page - #93877
Conversation
265dd82 to
e3d26d7
Compare
|
@Krishna2323 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] |
|
🚧 @shawnborton has triggered a test Expensify/App build. You can view the workflow run here. |
This comment has been minimized.
This comment has been minimized.
|
Otherwise feeling pretty good to me, very excited for this one! |
trjExpensify
left a comment
There was a problem hiding this comment.
Looks nice, good from product. 👍
|
@KJ21-ENG ios_mWeb.mp4 |
Krishna2323
left a comment
There was a problem hiding this comment.
Works well! ![]()
ios_hybrid.mp4
web_chrome.mp4
|
Lets ship it! @KJ21-ENG please keep an eye out for blockers, lets try to keep this on staging if we can |
|
🚧 JS00001 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! 🧪🧪
|
luacmartins
left a comment
There was a problem hiding this comment.
Thanks for getting this through the finish line. Let's watch out for blockers!
|
Sure, IMO we have already addressed good amount of potential blockers, Yaa but given the scale of this PR, there are high chances that some issues may still remain. WIll try to fix them ASAP if any found 🫡 |
|
🚀 Deployed to staging by https://github.com/JS00001 in version: 9.4.60-0 🚀
|
|
🤖 No help site changes required. I reviewed this PR against the help articles in This change is a presentation-layer refactor of the shared The help site describes what features do and how to accomplish tasks (managing categories, tags, members, company cards, rules, etc.), not the scroll/layout mechanics of the tables those pages render. None of that documented behavior changes here — a grep of Because no docs update is warranted, I did not open a draft help site PR. |
|
Deploy Blocker #99373 was identified to be related to this PR. |
|
investigating these blockers. |
Replied here #99377 (comment) |
|
🚀 Deployed to production by https://github.com/AndrewGable in version: 9.4.60-2 🚀
Bundle Size Analysis (Sentry): |


Explanation of Change
Adds
headerComponentsupport to the sharedTableso page-level controls (header content, buttons, search/filter bar) render inside the table'sFlashListand scroll away with the rows, while the table column header is rendered as a sticky list item. Row render indexes andscrollToIndexcallers remain aligned to the real table data, and sticky-header activation waits until the list has data to avoid the StickyHeaders load-time error.All migrated table pages now use the table-owned header flow: Workspaces, Domains (list, admins, groups, members), Categories, Tags, Taxes, Members, Company Cards, Distance Rates, Per Diem, Rooms, Rules (personal rules and all workspace rules tabs), Agents, Expensify Cards, and report participants.
The table empty states (
Table.EmptyState/Table.NoResultsState) render inside the scrolling list below the page header, so the page controls stay visible and usable when the table is empty or a search/filter matches nothing.This PR also $ #95556: on native, focusing the table search bar now scrolls it above the keyboard (using the existing
useScrollToFocusedInputpattern), so the input stays visible while typing in landscape.Fixed Issues
$ #92930
PROPOSAL: #92930 (comment)
$ #95556
Tests
Offline 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
611393262-bb275b7b-db8e-4386-b9f5-19de01001916.mp4
Android: mWeb Chrome
611381825-6fceb35a-5f11-4439-97cd-76fac7124bd9.mp4
iOS: Native
Screen.Recording.2026-06-23.at.12.49.39.AM.mov
iOS: mWeb Safari
VIDEO-2026-06-23-00-03-34.mp4
MacOS: Chrome / Safari
ezyZip.53.mp4