Fix keyboard doesn't show up when returning from Help Page to the Status Page#69265
Fix keyboard doesn't show up when returning from Help Page to the Status Page#69265rohit9625 wants to merge 18 commits into
Conversation
|
@rohit9625 Did you try building the Android app locally? I think we can build it in release mode, but we need to generate a keystore local. |
|
Yes, I tried this when working on previous PR. I used debug.keystore to sign and generate APK but I wasn't able to reproduce the issue even without our fix. |
|
HI @linhvovan29546, can we start the Adhoc build here or we require any other changes? |
|
I'm just wondering why we didn't apply the fix for |
It's just one of the solutions that we dicovered. I thought we should add |
|
We had InteractionManager in the focus, so i think that might not work |
|
Yes, I also thoght about that. Let me try logging and verify which block of code is executing first. Just give 10 mins. |
|
Yes, you are right @linhvovan29546. My current solution will not work as |
…ractions completed" This reverts commit d2698c2.
|
Are we good to go with Adhoc build, @linhvovan29546, or should I complete the checklist first to make the PR ready to review? |
|
I mean we had InteractionManager when we call textInput focus. Could you tried with the solution similar the logic in the composerFocusWithDelay first? |
Why similar logic if we can directly call App/src/hooks/useAutoFocusInput.ts Line 72 in 29f9c20 I think this is what you meant, right? |
|
Yes, We only need to apply for android |
Well, it makes sense, but I think it will make the focus timing inconsistent for Android and other platforms. Should we really do that, as |
Yes, that makes sense since the issue only appears on the |
|
QA confirmed the issue still exist in the previous PR |
|
Yes, I saw the deploy checklist. But I have a doubt, why did the solution deployed to the production if it doesn't solve the problem? |
|
That is not deloy blocker. |
|
Okay, got it. So, now I am creating the android only delay function. |
|
I still reproduce after apply the timeout 150ms |
|
Oh! |
|
Could you try push the code, so i can test this |
|
Hi @linhvovan29546, today I found that So, I thought about fixing this problem in upstream, and I created a patch inspired by Android's official documentation: I'll push the patch and I think it should fix the issue. Let me know what you think about it. |
|
You can login same account on web and run that console |
|
Thanks @linhvovan29546, it worked. I tested the Adhoc build, and the issue is resolved for me now. Did you try that? Screen_recording_20250913_113336.mp4I'll be completing the Author Checklist now and modifying the patch markdown to resolve the Validate Patches task failure. |
|
Let me check first and I'll update soon. |
Hmm, the help button is displayed on my account on the |
|
Try signing out and login again on app. |
|
I can't reproduce the issue on the adhoc build, and the changes LGTM. I've posted in Slack to get more eyes on this |
|
That's great, I'm filling the author checklist now :) |
Also, renamed patch file to follow sequence of files.
|
It's ready to review, @linhvovan29546 |
|
Friendly bump! @linhvovan29546 |
|
Hi i still need to confirm with the expert contributors |
|
Okay, then I'll wait. Why can't I access the Slack thread link you sent before? It always asks me to sign in using G-Suite. Did you posted that on internal channel? |
|
Hi, I will complete the checklist tomorrow |
|
Ah, the other PR was reverted, so we need to wait for it to be merged again first :)) |
|
Hi @linhvovan29546, |
|
@rohit9625 Do you have any steps to reproduce this issue without using the Help page? |
I have to check with other screens where such animation is affecting TextInput's focus behavior. However, we do have some workarounds for the same issue on different screens. If you agree, we can remove those workarounds(some may be a few lines of code only) and test without our patch if the same issue exists and then apply the patch and verify if our solution fixes that issue. |
|
I don't think we should remove that, as it could cause regressions on other platforms as well. If we can't reproduce this issue without the |
|
Yeah, makes sense. But I'm strongly confident that the patch will definitely help avoid workarounds in the future. This is also true, that it can cause regressions. Let me know when to close this PR. Well, how much compensation can we get? |
@rohit9625 I tried to reproduce the issue, but it didn't occur. Are you still able to reproduce it without the |
|
No @linhvovan29546, I also can't reproduce the issue anywhere in the app. I think closing this PR would be fine. |
|
Hi @linhvovan29546, what did you decided about this? |
|
Closing PR as the issue is no longer reproducible. |
Explanation of Change
I created a patch for the React Native
TextInputcomponent, which shows the Android's software keyboard reliably by delaying IME request until theViewcontaining theTextInputgains focus. This strategy is inspired by official Android docs.Fixed Issues
$ #67201
PROPOSAL: $ #67201 (comment)
Tests
Precondition: Ensure that the help page is enabled on your account. If it is not enabled, you can enable it by running
Onyx.set('nvp_sidePanel', { open: true })in the console.Offline tests
Same as tests
QA Steps
Same as tests
// TODO: These must be filled out, or the issue title must include "[No QA]."
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
Screen.Recording.2025-09-13.at.7.28.46.PM.mov
Android: mWeb Chrome
Screen.Recording.2025-09-13.at.7.32.48.PM.mov
iOS: Native
Screen.Recording.2025-09-13.at.7.17.32.PM.mov
iOS: mWeb Safari
Screen.Recording.2025-09-13.at.7.24.21.PM.mov
MacOS: Chrome / Safari
Screen.Recording.2025-09-13.at.6.39.06.PM.mov
MacOS: Desktop
Screen.Recording.2025-09-13.at.6.43.06.PM.mov