Reduce desktop LHN row height to 44px#84651
Conversation
Convert sectionMenuItem from a static style to a dynamic function that accepts shouldUseNarrowLayout, returning 44px height on desktop and keeping 52px on mobile. Update all consuming components to pass the layout flag. Co-authored-by: Shawn Borton <shawnborton@users.noreply.github.com>
|
The failing check is ESLint check (full codebase lint). This failure is unrelated to this PR's changes. Analysis: The ESLint warnings are all in files that are NOT part of this PR's diff:
Evidence: This PR only modifies these files:
There is zero overlap between the failing files and the PR's changed files. The Changed files ESLint check (which lints only the files changed in this PR) passed. The full ESLint check has also been failing on |
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.
|
|
🚧 @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.
|
@thesahindia 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] |
|
@eVoloshchak was assigned on the original issue, so perhaps they should review. cc @Expensify/design too. This is ready. |
|
That's a great shout - @MelvinBot can you update the skeleton loaders in the left hand navigation to be 44px tall on desktop too? I think only the Reports page has LHN skeletons. |
The SuggestedSearchSkeleton component had NAV_ITEM_HEIGHT hardcoded to 52px. Since this skeleton is only rendered on desktop (wide layout), it should match the new 44px row height introduced for desktop LHN items. Co-authored-by: Shawn Borton <shawnborton@users.noreply.github.com>
|
@eVoloshchak 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] |
|
Updated the Change: |
|
🚧 @shawnborton has triggered a test Expensify/App build. You can view the workflow run here. |
src/styles/index.ts
Outdated
| paddingHorizontal: 16, | ||
| paddingVertical: shouldUseNarrowLayout ? 8 : 4, | ||
| height: shouldUseNarrowLayout ? 52 : 44, | ||
| alignItems: 'center' as const, |
There was a problem hiding this comment.
| alignItems: 'center' as const, | |
| alignItems: 'center', |
There was a problem hiding this comment.
Removed the as const assertion.
…HNRowHeight Co-authored-by: Eugene Voloshchak <eVoloshchak@users.noreply.github.com>
|
Merged the latest |
…HNRowHeight Co-authored-by: Shawn Borton <shawnborton@users.noreply.github.com>
…' into claude-reduceDesktopLHNRowHeight Co-authored-by: Shawn Borton <shawnborton@users.noreply.github.com>
|
Fixed the failing ESLint check: The branch had a stale |
|
All checks are now passing after the earlier merge of
No code changes were needed — the previous ESLint failure was resolved by the |
|
@MelvinBot, address comments #84651 (comment) and #84651 (comment) |
- Add sectionMenuItemHeight (52) and sectionMenuItemHeightCompact (44) to variables.ts instead of hardcoding in the sectionMenuItem style - Update SuggestedSearchSkeleton to reference the shared variable - Remove unnecessary 'as const' from alignItems Co-authored-by: Eugene Voloshchak <eVoloshchak@users.noreply.github.com>
Reviewer Checklist
Screenshots/VideosMacOS: Chrome / SafariScreen.Recording.2026-03-11.at.15.56.55.mov |
|
We did not find an internal engineer to review this PR, trying to assign a random engineer to #84641 as well as to this PR... Please reach out for help on Slack if no one gets assigned! |
|
All you @cristipaval |
|
✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release. |
|
🚧 @cristipaval 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/cristipaval in version: 9.3.37-0 🚀
|
|
Deploy Blocker #85170 was identified to be related to this PR. |
|
🚀 Deployed to production by https://github.com/cristipaval in version: 9.3.37-10 🚀
|





Explanation of Change
The LHN navigation rows on the Account Settings, Workspace Editor, Reports/Search, and Domain pages all use a fixed 52px height. On desktop, this wastes vertical space and forces users to scroll when many navigation items are present. This PR reduces the row height to 44px on desktop while keeping 52px on mobile to preserve comfortable tap targets.
The
sectionMenuItemstyle is converted from a static style object (instaticStyles) to a dynamic function (indynamicStyles) that acceptsshouldUseNarrowLayoutand returns the appropriate height. All consuming components are updated to call the function with the layout flag.Fixed Issues
$ #84641
PROPOSAL: #84641 (comment)
Tests
Offline tests
N/A — This is a styling-only change that does not involve network requests or data.
QA Steps
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectiontoggleReportand notonIconClick)src/languages/*files and using the translation methodSTYLE.md) were followedAvatar, 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.ScrollViewcomponent to make it scrollable when more elements are added to the page.mainbranch was merged into this PR after a review, I tested again and verified the outcome was still expected according to theTeststeps.Screenshots/Videos
Web: Desktop
Account Settings (44px rows):

Workspace Editor (44px rows):

Reports/Search (44px rows):

Android: Native
No change on mobile — rows remain at 52px.
Android: mWeb Chrome
No change on mobile — rows remain at 52px.
iOS: Native
No change on mobile — rows remain at 52px.
iOS: mWeb Safari
No change on mobile — rows remain at 52px.
MacOS: Chrome / Safari
Same as Web: Desktop screenshots above — 44px rows on wide layout.