-
Notifications
You must be signed in to change notification settings - Fork 3.5k
Fix the issue with the padding above keyboard in the SignInModal along with derivatives #69267
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix the issue with the padding above keyboard in the SignInModal along with derivatives #69267
Conversation
…mansion-labs/expensify-app-fork into fix-reload-on-new-sign-in-page
…rd03/fix-reload-on-new-sign-in-page
…rd03/fix-reload-on-new-sign-in-page
| const session = useSession(); | ||
| // Use of SignInPageWrapped (with shouldEnableMaxHeight prop in SignInPageWrapper) is a workaround for Safari not supporting interactive-widget=resizes-content. | ||
| // This allows better scrolling experience after keyboard shows for modals with input, that are larger than remaining screen height. | ||
| // More info https://github.com/Expensify/App/pull/62799#issuecomment-2943136220. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍
war-in
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Great job overall! Just a few comments
src/pages/signin/SignInModal.tsx
Outdated
| // Use of SignInPageWrapped (with shouldEnableMaxHeight prop in SignInPageWrapper) is a workaround for Safari not supporting interactive-widget=resizes-content. | ||
| // This allows better scrolling experience after keyboard shows for modals with input, that are larger than remaining screen height. | ||
| // More info https://github.com/Expensify/App/pull/62799#issuecomment-2943136220. | ||
| const SignInPageBase = isMobileSafari() ? SignInPageWrapped : SignInPage; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's maybe wrap this in useCallback to compute the value only once (it won't change)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You're right. The idea of memoization slipped my mind. It makes perfect sense 👍
I've committed the addition of useMemo
src/pages/signin/SignInPage.tsx
Outdated
| testID={SignInPageWrapper.displayName} | ||
| testID="SignInPageWrapper" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's revert this change
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You're totally right. That's what I intended to do
| useImperativeHandle(ref, () => ({ | ||
| navigateBack, | ||
| })); | ||
| useHandleBackButton(navigateBack); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why was this removed? 🤔
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I must have left it by mistake. It stemmed from investigating a bug I recently encountered in the Android app and yet not reported. When in the SignInModal and clicking the Android hardware back button, not only does the modal close as expected, but the entire app also closes. This bug does not occur after the deletion you mentioned. Of course, this change should not be part of this PR, and the issue should be addressed in a different PR. I’ll report the bug and would be happy to work on resolving it.
Glad you noticed. Thank you 🙇
|
I noticed the unit test failed and will look into it shortly. |
|
@OlGierd03 the failing test should be fixed with this PR - #69398 |
Reviewer Checklist
Screenshots/VideosAndroid: HybridAppandroid-app-2025-08-29_16.33.28.mp4Android: mWeb Chromeandroid-chrome-2025-08-29_16.38.05.mp4iOS: HybridAppios-app-2025-08-29_15.35.52.mp4iOS: mWeb Safariios-safari-2025-08-29_15.39.23.mp4MacOS: Chrome / Safaridesktop-chrome-2025-08-28_16.43.29.mp4MacOS: Desktopdesktop-app-2025-08-29_17.01.56.mp4 |
This comment was marked as resolved.
This comment was marked as resolved.
|
Will continue testing tomorrow - having some issues with native builds at the moment. |
Hi, the issue you're talking about has been reported and the solution has recently been deployed to staging, so the problem should not occur. I personally do not encounter the issue on staging, as the video shows. Moreover, the issue regarding the extra padding above the keyboard only occurs on the Android app, and the issue regarding extra padding above the "Done" row in the language menu only occurs on the iOS app, so neither is reproducible on the web. Screen.Recording.2025-08-28.at.17.19.45.mov |
Julesssss
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@OlGierd03 could you merge main into this branch please
|
@OlGierd03 Nice, looks like it's resolved now after you merged main! |
@OlGierd03 Looks like your iOS native recording failed to upload, can you upload it again? Also, did you test with |
I've focused on the removal of the additional padding above the selector and never considered that it might be expected to push the page with the footer above the selector so it would be fully visible. Previously, before those changes, the footer and selector behaved the same way; the only difference was the additional padding. I propose changing this behaviour in another issue, if necessary. |
|
Agreed! And thanks for the workaround, that saved me a bunch of time 😄 |
jjcoffee
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM and tests well!
|
✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release. |
|
There is an issue with this PR. When anonymous users log in through the SignInModal, the modal doesn't get properly removed from the navigation stack. This means users can still go back to the login screen (after they're already signed in). I'm currently working on the fix. |
Thanks for raising, I created an issue here where we can work on a fix. |
|
🚀 Deployed to staging by https://github.com/Julesssss in version: 9.2.1-0 🚀
|
I was mistaken. This PR does not create a regression and is not the cause of this issue. I'm still working on finding the fix. |
|
🚀 Deployed to production by https://github.com/arosiclair in version: 9.2.1-20 🚀
|




Explanation of Change
In the SignInModal on the Android app, when the keyboard appears, the view shifts and the footer extends, blocking part of the view. This issue has been addressed by removing the double use of ScreenWrapper for the SignInModal on every platform except iOS Safari, where the use of the outer ScreenWrapper with the shouldEnableMaxHeight prop serves as a workaround for Safari not supporting interactive-widget=resizes-content (the second use of ScreenWrapper was previously added for this reason).
Removing the double use of ScreenWrapper also fixes #67863.
The changes in this PR are the same as those in software-mansion-labs#243. This PR was created due to the merge of the parent branch, which modified SignInPage and thus created the possibility to change the base repository.
Fixed Issues
$ #69068
$ #67863
Tests
Offline tests
N/A
QA Steps
Same as tests
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectioncanBeMissingparam foruseOnyxtoggleReportand notonIconClick)src/languages/*files and using the translation methodSTYLE.md) were followedAvatar, I verified the components usingAvatarare working as expected)StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))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
Android: Native
Recording_20250820_164004.2.mp4
Android: mWeb Chrome
Screen.Recording.2025-08-20.at.16.04.50.mp4
iOS: Native
ScreenRecording_08-26-2025.15-48-16_1.mp4
iOS: mWeb Safari
Screen.Recording.2025-08-20.at.16.00.41.mp4
MacOS: Chrome / Safari
Screen.Recording.2025-08-20.at.15.52.42.mp4
MacOS: Desktop
Screen.Recording.2025-08-20.at.16.52.54.mp4