CompactAvatar + multi-select rows - #99421
roryabraham merged 9 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. Swish! 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". |
dylanexpensify
left a comment
There was a problem hiding this comment.
good from a product perspective 👍
|
@truph01 kind bump |
Reviewer Checklist
Screenshots/VideosAndroid: HybridAppScreen.Recording.2026-09-04.at.15.45.35.movAndroid: mWeb ChromeScreen.Recording.2026-09-04.at.15.42.44.moviOS: HybridAppScreen.Recording.2026-09-04.at.15.44.57.moviOS: mWeb SafariScreen.Recording.2026-09-04.at.15.43.27.movMacOS: Chrome / SafariScreen.Recording.2026-09-04.at.15.39.21.movScreen.Recording.2026-09-04.at.15.41.09.mov |
|
@jmusial Could you fix the typecheck issue? |
Sure, missed that sorry :( EDIT: updated |
| prefix: string; | ||
|
|
||
| /** Stores user's preferred skin tone */ | ||
| preferredSkinToneIndex: number; |
There was a problem hiding this comment.
NAB: I'm wondering if this should be a normal prop or if leaf nodes should subscribe directly. I think as useOnyx becomes more lightweight/efficient it will be increasingly a best practice to bring subscriptions lower in the tree so that only the leaves that need it re-render on changes, rather than larger subtrees.
| /** Show that we can use large mention picker. | ||
| * Depending on available space and whether the input is expanded, we can have a small or large mention suggester. | ||
| * When this value is false, the suggester will have a height of 2.5 items. When this value is true, the height can be up to 5 items. */ | ||
| isMentionPickerLarge: boolean; |
There was a problem hiding this comment.
This is a configuration prop that survived. NAB since AutoCompleteSuggestions is not in-scope for this PR.
| /** Measures the parent container's position and dimensions. Also add cursor coordinates */ | ||
| measureParentContainerAndReportCursor: (callback: MeasureParentContainerAndCursorCallback) => void; | ||
|
|
||
| /** Reset the emoji suggestions */ |
There was a problem hiding this comment.
| /** Reset the emoji suggestions */ | |
| /** Reset the mention suggestions */ |
right?
There was a problem hiding this comment.
this is the only thing I considered blocking on, but I won't since it's just a comment. @jmusial consider opening a quick follow-up.
There was a problem hiding this comment.
I'll add it to next PR for this decomp, draf already here, so it shouldn't take too long
|
🚧 roryabraham 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/roryabraham in version: 9.4.73-0 🚀
|
|
🤖 No help site changes are required for this PR, so I did not create a draft docs PR. This is an internal component refactor with no change to what a user sees or does. Why I reached that conclusionWhat the PR changes: all 21 files are
What it does not change:
Help site check: the mention suggestion list and multi-select filter rows this PR touches are UI plumbing that I reviewed If you disagree, tell me which flow you think a customer would notice differently after this PR and I'll draft the article update for it. You asked me to close with the line below. There is no help site PR to link, because no docs change is needed — so there is nothing for you to mark
|
|
🚀 Deployed to production by https://github.com/mountiny in version: 9.4.73-3 🚀
Bundle Size Analysis (Sentry): |
Explanation of Change
CompactAvatarprimitive, replaces four hand-rolled copies.MultiSelectListItem+UserSelectionListItemmigrated to it, plusListItemComposed.Title/.Subtitlereal leftElementprop onBaseSelectListItem.MentionSuggestions,EmojiSuggestions). Row renderers extracted fromuseCallbackinto components, mention rows now useCompactAvatar.Fixed Issues
$ #98360
PROPOSAL:
Tests
Scenario 1: Mention suggestion
Scenario 2: Multi select row
Offline tests
Same as 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
Screen.Recording.2026-09-02.at.14.54.48.mov
Android: mWeb Chrome
Screen.Recording.2026-09-02.at.14.54.10.mov
iOS: Native
Screen.Recording.2026-09-02.at.14.47.49.mov
iOS: mWeb Safari
Screen.Recording.2026-09-02.at.14.48.54.mov
MacOS: Chrome / Safari
Screen.Recording.2026-09-02.at.14.37.22.mov