Repository navigation
iOS: Stop covering the UI with the boot splash when the app only goes inactive - #106097
Conversation
|
|
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
@Expensify/design Hey, I wanted to ask for your opinion on this change. Context:
What do you think? Does this feel like a good improvement? |
|
I'm honestly not sure—most of my banking apps follow the same pattern we current have (splash even under control center). What are the security implications of the option you've prepared? Does it undo any of the security we baked into the current pattern? I think if we're good from a security perspective, I'm down with it. But otherwise, I'd like to get broader team buy-in since I assume we added that backgrounding for a good reason. |
|
@dannymcclain Both options satisfy the Group-IB audit finding. The finding was about the app-switcher snapshots that the mobile devices save to disk and with either option those snapshots only ever contain the splash. So nothing we added for the audit gets undone. The only difference is UX. The "before" option is the one that got reported as a regression (for an unexpected splash over Control Center). When we discussed it on Slack, the "after" option was deemed to feel smoother and less in the way (fair point imo). I do get that covering the screen more aggressively can make the app feel more secure too. |
|
I don't think I have a strong opinion. I agree that the After screenshot feels a little less jarring, so as long as it still satisfies security requirements, I am down with it. For some reason though, the bottom tabs in your screenshot do not feel correct - you might need a fresh pull of main? |
I feel the same. If we're still meeting whatever security requirements we need to, I'm down with that version. |
Yup, good catch! It's not from this PR, so it should go away with a fresh main @daledah It looks like we're aligned on the "after" version, so you can go ahead with the review |
Reviewer Checklist
Screenshots/Videosios.mov |
daledah
left a comment
There was a problem hiding this comment.
thanks @OlGierd03 for the PR, LGTM
This is exactly where I am too. I've noticed Wise does this too. I think it's mostly a security question. I don't mind whats there or the after. Given we did this initially do we need to check with someone to ensure that we're not breaking a security requirement we need? |
|
Here's the full report for clarity:
So for me this checks all boxes. |
|
✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release. |
|
🚧 Beamanator 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/Beamanator in version: 9.5.34-0 🚀
|
|
🚀 Deployed to production by https://github.com/yuwenmemon in version: 9.5.34-1 🚀
Bundle Size Analysis (Sentry): |
Explanation of Change
MOBILE-EXPENSIFY: https://github.com/Expensify/Mobile-Expensify/pull/14218
The iOS privacy overlay (boot splash covering the UI) was shown in
sceneWillResignActive, which UIKit also calls when the app only goes inactive (Control Center, Notification Center, system permission prompts, Face ID), so the splash showed up over the app in those cases. The overlay is now shown insceneDidEnterBackgroundand removed insceneWillEnterForeground. iOS takes the app-switcher snapshot aftersceneDidEnterBackgroundreturns, so the snapshot saved on disk still only contains the splash. When swiping straight into the app switcher, the card shows live content until the app actually goes to the background, that view is never written to disk.Fixed Issues
$ #105430
Tests
Precondition: signed in on iOS.
Offline tests
N/A
QA Steps
Same as tests
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectionAvatar, I verified the components usingAvatarare working as expected)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
iOS: Native
Screen.Recording.2026-11-05.at.13.08.39.mov