Skip to content

Keep the Import Wallet Next button clear of the keyboard - #6161

Open
j0ntz wants to merge 2 commits into
developfrom
jon/import-wallet-keyboard
Open

Keep the Import Wallet Next button clear of the keyboard#6161
j0ntz wants to merge 2 commits into
developfrom
jon/import-wallet-keyboard

Conversation

@j0ntz

@j0ntz j0ntz commented Aug 17, 2026

Copy link
Copy Markdown
Contributor

Technical Design Document

ramps-deeplink-provider-priority.md

Description

Asana task

The Import Wallet scene rendered everything, including the Next button, inside a
scroll view that did not react to the keyboard. Opening the keyboard to type a
seed hid the button behind it, along with the per-asset Import Options inputs
(the Zcash / Pirate Chain birthday height). A wrapped 12- or 24-word phrase or a
short device made it worse.

The scene now shrinks to the space above the keyboard (SceneWrapper avoidKeyboard, the pattern ~20 other scenes already use, backed by
react-native-keyboard-controller), its content lives in a real ScrollView,
and the Next button sits outside that scroll view so the keyboard can never
cover it. The key logo's fixed 2 rem margins drop to 1 rem, and the container
gets flex: 1 so the content actually scrolls.

The maestro import flows carried a workaround for this bug: they dismissed the
keyboard before tapping Next. Both copies are removed
(maestro/common/import-wallets.yaml,
maestro/07-wallets/C000029a-migrate-wallets.yaml).

One deviation from the task text: the task asked for the logo spacing to flex
and grow when there is room. Implementing that with flexGrow on the scroll
content made the multiline seed input compete for the same free space, which
squeezed the seed box down on short screens, so the spacing is a fixed 1 rem
minimum instead.

Known trade-off: on a very short device (iPhone 13 mini) with the keyboard up,
the seed field now shows fewer lines at a time, because the field sizes to the
keyboard-reduced scene rather than extending underneath the keyboard.

Asana: https://app.asana.com/1/9976422036640/project/1213880789473005/task/1217525813318788

CHANGELOG

Does this branch warrant an entry to the CHANGELOG?

  • Yes
  • No

Dependencies

none

Requirements

If you have made any visual changes to the GUI. Make sure you have:

  • Tested on iOS device
  • Tested on Android device
  • Tested on small-screen device (iPod Touch)
  • Tested on large-screen device (tablet)

iOS: driven on an iPhone 16 Pro Max simulator and an iPhone 13 mini simulator,
with a real 24-word BIP39 phrase and both a plain BTC import and a BTC + ZEC
import (which adds the Import Options input). Before/after screenshots of both
devices are attached below, plus the import driven through to the Create Wallets
completion scene.

Android: :app:assembleDebug builds clean. The change is shared JS and the
manifest already uses adjustResize, but the flow was not driven on an Android
emulator or device in this pass.


Note

Low Risk
Localized Import Wallet UI and E2E flow changes using an existing keyboard-avoidance pattern; no auth, payments, or shared business logic.

Overview
Fixes the Import Wallet scene so the keyboard no longer covers Next or the per-asset import options when entering a seed.

The scene now uses SceneWrapper with avoidKeyboard (same pattern as many other scenes) instead of KeyboardAwareScrollView. Form content scrolls in a ScrollView; SceneButtons sit outside that scroll view so they stay in the visible area above the keyboard. Layout tweaks include flex: 1 on the container and scroll area, flexShrink: 0 on the button row, and reduced vertical margin on the key icon (1 rem instead of 2 rem).

Maestro import flows no longer hideKeyboard or tap the field to dismiss the keyboard before Next—the button is tappable with the keyboard open.

Reviewed by Cursor Bugbot for commit f5b6a1f. Bugbot is set up for automated code reviews on this repo. Configure here.

Convert the component to the React.FC form the lint rule expects.
@j0ntz

j0ntz commented Aug 17, 2026

Copy link
Copy Markdown
Contributor Author

📸 Test evidence

BEFORE promax next hidden by keyboard

BEFORE promax next hidden by keyboard

BEFORE iphone13mini next hidden by keyboard

BEFORE iphone13mini next hidden by keyboard

AFTER promax next visible 24word seed

AFTER promax next visible 24word seed

AFTER iphone13mini next visible

AFTER iphone13mini next visible

AFTER import completed

AFTER import completed

Captured by the agent's in-app test run (build-and-test).

@j0ntz
j0ntz force-pushed the jon/import-wallet-keyboard branch from 003c75c to 7e779e8 Compare August 17, 2026 21:39
@j0ntz
j0ntz marked this pull request as ready for review August 17, 2026 21:39
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 7e779e8. Configure here.

Comment thread src/components/scenes/CreateWalletImportScene.tsx
The scene rendered its content, including the Next button, inside a scroll
view that did not react to the keyboard, so opening the keyboard to type a
seed hid the button behind it. Shrink the scene to the space above the
keyboard, keep the button pinned below the scrolling content, and let the
key logo flex instead of holding a fixed 2 rem of margin.

Drop the keyboard-dismiss steps the maestro import flows needed to reach the
button.
@j0ntz
j0ntz force-pushed the jon/import-wallet-keyboard branch from 8f92bd2 to f5b6a1f Compare August 17, 2026 21:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant