Move inline icon out of icon primitives#95286
Conversation
Codecov Report✅ Changes either increased or maintained existing code coverage, great job!
|
…o chore/move-InlineIcon-out-of-icon-primitives
…o chore/move-InlineIcon-out-of-icon-primitives
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: cd2d76da5f
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
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".
| width={shouldUseShortForm ? variables.iconSizeExtraSmall : undefined} | ||
| height={shouldUseShortForm ? variables.iconSizeExtraSmall : undefined} | ||
| <IconComponent | ||
| size={CONST.ICON_SIZE.EXTRA_SMALL} |
There was a problem hiding this comment.
Preserve split dropdown arrow sizing
When ButtonWithDropdownMenu renders a split button that is not short-form (the default, and also the large confirmation buttons), this hard-codes the chevron to EXTRA_SMALL. The previous logic used dropdownArrowIconSize, which resolves to SMALL for normal buttons and MEDIUM for large buttons, so those split dropdowns now render a 12px arrow instead of 16/20px while the surrounding arrow container still uses the normal/large sizing. Keep the existing dropdownArrowIconSize for the standard Icon path and only use the extra-small inline sizing for the short-form case.
Useful? React with 👍 / 👎.
|
@codex review |
|
Codex Review: Didn't find any major issues. Nice work! 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". |
|
cc. @roryabraham 3 rd PR for |
|
LGTM, awaiting C+ review from @Pujan92 |
Reviewer Checklist
Screenshots/VideosAndroid: HybridAppAndroid: mWeb ChromeiOS: HybridAppSimulator.Screen.Recording.-.iPhone.15.Pro.-.2026-07-15.at.01.13.21.moviOS: mWeb SafariMacOS: Chrome / SafariScreen.Recording.2026-07-15.at.01.12.03.mov |
|
✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release. |
|
🚧 roryabraham has triggered a test Expensify/App build. You can view the workflow run here. |
|
🧪🧪 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.35-1 🚀
|
|
🤖 I reviewed the changes in this PR and no help site changes are required — so I did not create a docs PR. Why: This is a purely internal component refactor. It extracts The help site articles under
|
|
🚀 Deployed to production by https://github.com/jasperhuangg in version: 9.4.35-6 🚀
|
Explanation of Change
This PR extracts InlineIcon into its own standalone component (
Icon/InlineIcon) and removes the inline-rendering path from the sharedIconprimitives (droppingBaseIconand the old inline prop). ICall sites that previously passed inline to
Icon—ButtonWithDropdownMenu,MenuItem,CopyTextToClipboard,PressableWithDelayToggle— useInlineIcondirectly instead.The result is a slimmer Icon component and a clearer, more explicit API for inline icon usage.
Fixed Issues
$ #95159
PROPOSAL:
Tests
Just regressions checks on icons, this PR does not change any user facing behaviour.
and
Offline tests
Same as 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
MacOS: Chrome / Safari
Screen.Recording.2026-07-14.at.16.59.28.mov