Linearize Send Flow - #856
Conversation
|
UI Has also been adjusted to have the total balance above the token dropdown. Thread is centralized on the extension thread stellar/freighter#2764 (comment) e.g.
|
|
@leofelix077 thanks for making the last UI changes/fixes. It appears there is bug related to the Send (federation) flow where the memo type is always being reset on the SendAmount rendering. The fix seems simple but I left the AI verbose description there which I think could be helpful for the agent to get the whole context/severity of it. Could you also please double check to see if there isn't any other part broken related to the Send-federation flow? Thanks |
…-mobile into lf-linearize-send-flow
|
@leofelix077 I'm still seeing the bug in which the keyboard doesn't get dismissed after saving a memo on settings: ScreenRecording_05-29-2026.16-46-00_1.mov |
|
@CassioMG the issue is fixed now on 1.18.26 (1780495145). can you verify? I also added a delay to open the settings screen to allow for the keyboard dismiss from number input -> settings modal ScreenRecording_06-03-2026.11-14-55_1.MP4 |
|
@leofelix077 about the wait for keyboard dismiss strategy, would you be willing to try this approach instead? I think we could extract that function to a helper and try here on your PR, if that works then we don't need to rely on timeouts and will also have less duplicate code. Wdyt? If so, please check on both Android and iOS as I've only tested on iOS so far on my PR. Thanks |
|
@CassioMG much better approach. I forgot about the native events for keyboard. Will try it out and update it in a bit |
|
@CassioMG adjusted and retested with the native event handler on build 1.18.26 (1780503276) ScreenRecording_06-03-2026.14-09-24_1.MP4 |
…stom 300ms duration PR #856 (Linearize Send Flow) explicitly attached getStackBottomNavigateOptions() to both SEND_PAYMENT_STACK and SWAP_STACK on the root navigator, which pulled Swap from its previous platform-default side-slide animation onto the helper's slide_from_bottom + animationDuration: 300. Two changes here: - Drop the explicit options prop from the SWAP_STACK route so the Swap stack falls back to React Navigation's native-stack default side-slide presentation, restoring the pre-merge transition. - Remove the hardcoded animationDuration: 300 from getStackBottomNavigateOptions so the remaining callers (Send stack + a handful of bottom-presented screens) inherit the native default duration. The 300ms override read too slow in practice; defaulting is simpler and feels more responsive. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>


Closes #809
iOS Build 1.18.26 (1778530225)
This PR linearizes the mobile Send flow so the user moves more cleanly from recipient selection to amount entry to review/processing, with less back-and-forth navigation.
It also tightens recipient handling, keyboard behavior, and state handoff across the send screens so the flow is more reliable
The new coverage now includes scenarios like searching/pasting recipients, choosing from recents or my wallets, and switching between token and collectible send paths.
It also covers amount entry and formatting, review sheet behavior, and navigation/state transitions when moving between recipient, amount, and review screens.
Side adjustments: Added a small change to code-style. as there was a misleading rule previously
the code-style tried to enforce e.g.
<Button onPress={() => void handleAsyncAction(id)} />, conflicting with the eslint rule that disables no-floating-promiseshandleAsyncAction (no void and no explicit await) is a valid construct in the codebase
General smoke test for android, with some input validations
android-smoke-test.mov
Normal send flow, changing inputs, keyboard typing, deleting, and auto focus
Swapping from fiat to token
Input cursor and highlight while typing
Send flow with recents and account names
Send collectible flow
ScreenRecording_05-11-2026.18-16-37_1.mov
Sending to unknown address and recents
ScreenRecording_05-11-2026.18-51-31_1.MP4
PR structure
Testing
Release