ReportActionAvatars -> UserAvatar for multi avatars migration + leftovers - #97983
ReportActionAvatars -> UserAvatar for multi avatars migration + leftovers#97983jmusial wants to merge 10 commits into
Conversation
Codecov Report✅ Changes either increased or maintained existing code coverage, great job!
|
|
@codex review |
|
Codex Review: Didn't find any major issues. What shall we delve into next? Reviewed commit: ℹ️ About Codex in GitHubCodex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
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". |
|
@sobitneupane 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] |
|
cc. @roryabraham |
|
PR doesn’t need product input as a perf PR. Unassigning and unsubscribing myself. |
|
@sobitneupane this is awaiting C+ review and checklist |
Explanation of Change
Replaces
ReportActionAvatarsat every call site where the accounts to render are already known, introducing three lightweight components -AccountAvatars, andAccountAvatarWithCardFeedand usingAccountAvatarintroduced in previous PR.They resolve icons from the shared personal-details context via a new
useAccountIconshook instead of subscribing to report and policyOnyxkeys. This drops a per-rowOnyxsubscription from menu items, option rows, selection lists, task previews, and card tables.This PR also removes the now-unused
shouldStackHorizontallyandfloatRightAvatarsprops fromMenuItem.Important
May overlap a but with #97961. Not in functionality, but it modifies same files.
Fixed Issues
$ #94586
PROPOSAL:
Tests
Scenario 1 — Selection list avatars, including the workspace subscript
Scenario 2 — Stacked avatars in the workspace invite flow
Offline 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
Screen.Recording.2026-08-10.at.17.00.42.mov
Android: mWeb Chrome
Screen.Recording.2026-08-10.at.17.13.30.mov
iOS: Native
Screen.Recording.2026-08-10.at.16.55.33.mov
iOS: mWeb Safari
Screen.Recording.2026-08-10.at.16.50.34.mov
MacOS: Chrome / Safari
Screen.Recording.2026-08-10.at.16.47.49.mov