Repository navigation
Gate Report Details request data behind ReportDetailsActions - #102749
mjasikowski merged 6 commits into
Conversation
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.
|
|
@MelvinBot review |
ReviewI found no behavior regressions. The refactor matches Suggestion: remove the dead task logic from The hook only mounts for money cases, so the task branches can never be true:
The task logic now lives in What I checked
|
|
@nkdengineer 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] |
Reviewer Checklist
Screenshots/VideosAndroid: HybridAppScreen.Recording.2026-10-06.at.00.41.30.movAndroid: mWeb ChromeScreen.Recording.2026-10-06.at.00.43.57.moviOS: HybridAppScreen.Recording.2026-10-06.at.00.42.00.moviOS: mWeb SafariScreen.Recording.2026-10-06.at.00.43.26.movMacOS: Chrome / SafariScreen.Recording.2026-10-06.at.00.37.22.movScreen.Recording.2026-10-06.at.00.37.34.movScreen.Recording.2026-10-06.at.00.37.51.movScreen.Recording.2026-10-06.at.00.38.25.movScreen.Recording.2026-10-06.at.00.38.55.movScreen.Recording.2026-10-06.at.00.40.49.mov |
|
@sosek108 Please resolve conflicts. |
|
@nkdengineer resolved |
nkdengineer
left a comment
There was a problem hiding this comment.
Looks good to me and test well.
|
🚧 mjasikowski 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/mjasikowski in version: 9.5.4-0 🚀
|
|
No help site update is needed. This PR is an internal refactor of the Report Details page. It moves the action rows into new components without changing any labels, steps, or behavior users see. |
|
🚀 Deployed to production by https://github.com/puneetlath in version: 9.5.4-3 🚀
Bundle Size Analysis (Sentry): |
Explanation of Change
This moves the action area at the bottom of the Report Details page (the menu rows and the Delete row) behind a new
ReportDetailsActionscomponent. It takes onlyreportID, reads the report itself, works out which case the page is in and mounts different children per case.For money requests, expense reports, invoices and track expense reports it renders
ReportDetailsRequestActions. That component is now the only place that calls the newuseReportDetailsRequestDatahook, which holds the money request derivations the page used to compute for every report: the IOU report and transaction, the duplicate transactions, the delete options and the title of the Delete row. For chats, rooms and tasks it renders the newReportDetailsTaskDeleteActioninstead, which shows the task Delete row and runs the task delete. So a chat or a room no longer mounts any of the money request subscriptions. A track expense report still mounts them, as it did before, because its menu rows need that data.The menu rows themselves are not extracted yet.
ReportDetailsActionsgets them from the page through a render prop and passes the request data in for the money cases only. The next PR in the stack replaces that render prop with its own menu component.useAncestorsmoves into the task delete component because the task delete is its only user. That component reads its own report, parent report, parent report action, report actions, Concierge report ID, guide account IDs and delegate email. The money delete flow and its confirm modal stay in the page until PR 7.This should not change behaviour. A new unit test checks that a chat room does not mount the request data subscriptions and an expense report does.
Stack note: this is PR 5 of 8 in the
DynamicReportDetailsPagedecomposition (parent issue #102173).Fixed Issues
$ #102180
PROPOSAL:
Tests
prodand no Delete row is shownprodprodprodprodprodOffline tests
N/A
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
Nagranie.z.ekranu.2026-10-5.o.09.57.59.mov
iOS: mWeb Safari
MacOS: Chrome / Safari
Nagranie.z.ekranu.2026-10-5.o.09.53.42.mov