Linearize Send Flow#856
Conversation
|
iOS Simulator preview build is ready: https://github.com/stellar/freighter-mobile/releases/tag/untagged-68b5d7334bde2bf9ebd0 (SDF collaborators only — install instructions in the release description) |
|
@CassioMG for the long list of tokens / collectibles it should be fixed now but for the crash, I never seen it happen (nor @sdfcharles. he also tested on the device). I'm wondering what makes your address be empty / undefined to make it crash. the e2e tests were also passing I pushed changes to safeguard the address truncation, but might need your help to take a look again. If it's not something corrupted or stale on your storage (as iOS doesn't clear all data through reinstalls). If you can test it again and let me know. thanks in advance. If it keeps happening would be good to have a dump of your local auth duck (or a slice of it) to check what kind of data and format you are having, to understand the crash better
|
|
@leofelix077 FYI, I think the crash was related to my local env, after doing another fresh install it worked |
|
@leofelix077 thanks for fixing the bug related to the long list of tokens/collectibles. I've found a few more issues while testing: 1 - Duplicate token amount lines appearing while editing the dollar amount. This seems the same issue we've found on extension a few days ago. What appears to happen here is that the "token available balance" value which usually appears aligned on the right side (right below the dropdown) is conflicting with the "token amount to send" value which usually appears aligned on the left side. This probably only happens for big string amounts. I'd suggest applying some UI constraints here to prevent this from happening, or keep things flexible, but ensure that:
2 - It seems the keyboard doesn't always get dismissed when you tap on "Review send". This results in a bug where the user can't see or scroll the full content of the review bottom-sheet. It appears this bug is triggered when you edit something on transaction settings and then tap on "Review send" (first video). Another thing I've noticed is that once this bug is "activated" it always happens, for all tokens, not mattering if you are starting the send flow from the Home Send button or the Token Details screen (quick AQUA sample on the second video). It seems you have to switch tabs to History or Discover screen and only then go back to Home tab to "clear out" this bug otherwise you'll always see this issue on the "Review send" step. keyboard-not-dismissed-1-720p.movkeyboard-not-dismissed-2-720p.mov3 - All screens with an "X" button should slide from the bottom. E.g. in the second 8 on the video below it navigates to a "X" screen which slides from the right instead of sliding from the bottom. Then when you tap the "X" button it slides down as expected so it appears we only need to fix the navigation when entering on the screen. This happens on both Send token and Send collectible flows. x-should-slide-from-bottom.mov4 - Some UI tweaks when comparing with Figma:
5 - When you start a "Send Collectible" flow and use the QR Scan to input the address you land on the Send token amount screen with XLM selected instead of the Send collectible review screen qr-scan-removing-nft-720p.mov |
| (`eslint.config.mjs`) — this is a reviewer-enforced convention, not a | ||
| linter-enforced rule. | ||
|
|
||
| **Async event handlers**: When a component prop expects a `void`-returning |
There was a problem hiding this comment.
Added this small change to code-style. as there was a misleading rule previously
the code-style tried to enforce
<Button onPress={() => void handleAsyncAction(id)} />, conflicting with the eslint rule that disables no-floating-promises
handleAsyncAction (no void and no explicit await) is a valid construct in the codebase
|
@CassioMG Applied the small UI tweaks to match closer the figma designs latest version, the keyboard dismiss, and fixing the navigation when scanning QR code on collectibles regarding the first point, I'm not sure what you mean. I also left a comment on the extension PR regarding it
ScreenRecording_05-26-2026.17-50-32_1.MP4Screen.Recording.2026-05-26.at.18.01.51.movScreen.Recording.2026-05-26.at.18.02.49.mov |
|
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 |











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