Clean up composer footer and match action buttons to the emoji button - #98781
Clean up composer footer and match action buttons to the emoji button#98781shawnborton wants to merge 4 commits into
Conversation
Codecov Report✅ Changes either increased or maintained existing code coverage, great job!
|
|
cc @dubielzyk-expensify to check this one out - this cleans up the composer's create and expand/collapse buttons to match the emoji button. It gets rid of the border as well: CleanShot.2026-08-17.at.12.43.47.mp4 |
|
🚧 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.
|
Good catch, let me dig into that! |
|
🚧 shawnborton 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! 🧪🧪
|
|
@Eskalifer1 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] |
|
@Eskalifer1 can you help with platform screenshots since this is a Claude/Melvin PR? Thanks! |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 8607581876
ℹ️ 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".
| ]; | ||
|
|
||
| const textInputStyle = [styles.textInputComposeSpacing, styles.textInputComposeBorder, {paddingVertical: 0}]; | ||
| const textInputStyle = [styles.textInputComposeSpacing, {paddingVertical: 0}]; |
There was a problem hiding this comment.
Keep the deferred composer placeholder aligned
When ComposerPlaceholder appears during a navigation transition, it still centers the plus icon and applies variables.avatarChatSpacing (12px) on both sides of its text, while the real composer now bottom-aligns the plus button and uses the new 5px left padding. Swapping in the real composer therefore visibly shifts the placeholder text horizontally and the plus icon vertically; update the placeholder's manual styles to mirror both new layout values.
Useful? React with 👍 / 👎.
|
I did a hard refresh but maybe something went wrong. Looks good now 👍 Send it! |




Explanation of Change
Cleans up the composer footer (the "Write something…" box at the bottom of every chat) and makes its action buttons consistent with the emoji and send buttons.
textInputComposeBorder) between the create (+) button and the text input, in both the live composer and the loading placeholder.+) button to match the emoji button exactly:PressableWithoutFeedbackwith a hover/pressed background color (getButtonBackgroundColorStyle) instead of the old opacity dim, and a dynamic icon fill (getIconFillColor).composerSizeButtonfrom 32×32 to 40×40 and centered its icon (alignItems: 'center'), so the create, expand/collapse, and message-edit cancel buttons all match the 40px emoji/send buttons.justifyContentStartin a reversed column), matching the emoji and send buttons, instead of only when the expand button is present.Note:
composerSizeButtonandtextInputComposeare shared with the inline message-edit composer, so those buttons/input are updated consistently there too. Adding theDesignlabel so @Expensify/design can review.Fixed Issues
$ #98809
PROPOSAL:
Tests
+button and the text input.+button — verify it shows a background color and icon-fill change identical to the emoji button on the right (no opacity dim).+button is 40×40 with its icon centered, matching the emoji and send buttons.+button stays anchored to the bottom of the composer.+button remains bottom-anchored.Offline tests
Not applicable — style-only change with no network behavior.
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
iOS: mWeb Safari
MacOS: Chrome / Safari