Fix: Circle icon showing behind back button on workspace pages in landscape mode#94218
Conversation
…rent layering on native
|
Videos looking good on my end 👍 |
|
🚧 mountiny has triggered a test Expensify/App build. You can view the workflow run here. |
This comment has been minimized.
This comment has been minimized.
|
@truph01 Gentle bump. |
|
@samranahm Could you merge main? |
There was a problem hiding this comment.
Pull request overview
This PR addresses a native (landscape) workspace-settings UI layering issue where the split navigator’s central pane can be visually transparent, allowing the workspace sidebar (including a circular icon) to show behind the Back button. It does so by making key containers/screens explicitly render an opaque appBG background.
Changes:
- Adds
theme.appBGbackground to theheaderBarstyle so the header area is no longer transparent. - Sets native split-navigator screen
contentStyletothemeStyles.appBGso split navigator panes render opaquely on native. - Applies
styles.appBGtoBaseSelectionListcontainer and list to prevent see-through areas in list-based workspace settings pages.
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 2 comments.
| File | Description |
|---|---|
src/styles/index.ts |
Makes headerBar opaque via backgroundColor: theme.appBG. |
src/libs/Navigation/AppNavigator/useSplitNavigatorScreenOptions.ts |
Sets native split navigator contentStyle to appBG for opaque split panes. |
src/components/SelectionList/BaseSelectionList.tsx |
Forces selection list containers/lists to use appBG to avoid transparency bleed-through. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Codecov Report✅ Changes either increased or maintained existing code coverage, great job!
|
|
Done. |
|
@samranahm Could you check all AI' comments above? |
|
@truph01 I added the comments, please take a look. |
Reviewer Checklist
Screenshots/VideosAndroid: HybridAppAndroid: mWeb ChromeiOS: HybridAppScreen.Recording.2026-07-09.at.17.20.44.movScreen.Recording.2026-07-09.at.17.22.18.movScreen.Recording.2026-07-09.at.17.22.50.movScreen.Recording.2026-07-09.at.17.23.31.moviOS: mWeb SafariMacOS: Chrome / Safari |
|
|
||
| return ( | ||
| <View style={[styles.flex1, addBottomSafeAreaPadding && !hasFooter && paddingBottomStyle, style?.containerStyle]}> | ||
| <View style={[styles.flex1, styles.appBG, addBottomSafeAreaPadding && !hasFooter && paddingBottomStyle, style?.containerStyle]}> |
There was a problem hiding this comment.
appBG on BaseSelectionList may be redundant with the screen-level fix
The contentStyle: themeStyles.appBG on native screen options already gives every screen a solid background. Adding appBG directly to the selection list container and scroll view extends the change to all ~343 consumers, including web where this bug doesn't occur, and would need overriding if a future caller expects a different background (e.g. inside a highlightBG bottom sheet). Could you confirm whether the contentStyle fix alone resolves the issue?
There was a problem hiding this comment.
@truph01 Yes, after removing appBG change from BaseSelectionList, the circle didn't appear on any page. I'll remove these changes and keep only the contentStyle and headerBar fix.
|
✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release. |
|
🚧 mountiny 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/mountiny in version: 9.4.33-0 🚀
|
|
🤖 I reviewed the changes in this PR against Expensify's help site content under No help site changes are required. This PR is a purely visual/rendering fix. It adds opaque
so the workspace sidebar no longer shows through behind the Back button in landscape mode on native. There is no change to feature behavior, user-facing workflows, settings labels, tab names, or button copy — nothing that the public help articles document. Help site articles cover how features work and how to use them, and a background-color/z-order fix has no documentable user-facing behavior change. Accordingly, I did not create a draft docs PR. @samranahm, since no help site changes are needed here, there's no linked help site PR to review. If you believe there's a user-facing behavior change I missed that should be documented, let me know and I'll create the docs PR. |
|
Deploy Blocker #95863 was identified to be related to this PR |
Explanation of Change
On native, split navigator central screens and their header/list areas are transparent, so the workspace sidebar show through the back button on landscape mode in workspace pages after we move header buttons inline. This PR adds opaque
appBGbackgrounds to split navigator native screens,headerBar, andBaseSelectionListso the central pane fully covers the sidebar underneath.Fixed Issues
$ #90374
PROPOSAL: #90374 (comment)
Tests
Offline tests
Same as test
QA Steps
Same as test
// TODO: These must be filled out, or the issue title must include "[No QA]."
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
Android: Native
Android.Native.mp4
Android.Native.landscape.mp4
Android: mWeb Chrome
Android.mWeb.mp4
iOS: Native
IOS.Native.mp4
IOS.Native.landscape.mp4
iOS: mWeb Safari
IOS.mWeb.mp4
MacOS: Chrome / Safari
macOS.Chrome.mp4