Skip to content

Send and Swap UX improvements + Collapsible panels for transaction details#316

Merged
danilosilvackl merged 16 commits intomainfrom
ds-send-swap-ux-improvements
Aug 29, 2025
Merged

Send and Swap UX improvements + Collapsible panels for transaction details#316
danilosilvackl merged 16 commits intomainfrom
ds-send-swap-ux-improvements

Conversation

@danilosilvackl
Copy link
Copy Markdown
Contributor

@danilosilvackl danilosilvackl commented Aug 29, 2025

Reworked navigation logic for send and swap flows

  • added new parameters to send and swap routes
  • added new CollapsibleSection component
  • memoized transaction details (Operations) render
  • reworked IconButton component

iOS 

Home screen - send

home_send_ios.mp4

Home screen - swap

home_swap_ios.mp4

Token details - send

token_details_send_ios.mp4

Token details - swap

token_details_swap_ios.mp4

Transaction details

transaction_details_ios.mp4

Android 🤖

Home screen - send

home_send_android.webm

Home screen - swap

home_swap_android.webm

Token details - send

token_details_send_android.webm

Token details - swap

token_details_swap_android.webm

Transaction details

transaction_details_android.webm

closes #293

@danilosilvackl danilosilvackl self-assigned this Aug 29, 2025
Comment thread src/i18n/locales/en/translations.json Outdated
"receive": "Receive",
"chooseToken": "Choose token",
"selectToken": "Select a token",
"selectToken": "Select an token",
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

nit: this doesn't seem right

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

thats true, I just copy and pasted from figma before, but yeah, it was wrong, reverted

Comment on lines +29 to +34
options={({ route }) => ({
headerTitle:
route.params.selectionType === "destination"
? t("swapScreen.swapTo")
: t("swapScreen.swapFrom"),
})}
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

nice

Comment thread src/navigators/SwapNavigator.tsx Outdated
}}
options={({ route }) => ({
headerTitle:
route.params.selectionType === "destination"
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

could we use a constant or enum for this "destination" string?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

done!

onPress={toggleExpanded}
className="flex-row items-center justify-between"
>
{header}
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

nice, so this means the whole header is tappable?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

love it

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

thats right, at firs I was afraid of how it would behave and had only the chevron active, but it turned out fine so the entire header is tappable now 🙌

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

the only thing I left behind was the animation, because of the bottom sheet it did not behave very well with this combo, so it doest have any smoothing for now

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

that's fine, I think it's looking good "as is"

Comment on lines +50 to +52
<Text>Send to</Text>
<Text sm secondary>
Choose recipient
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

missing translations

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

added them, thanks

<Button secondary lg onPress={() => navigation.goBack()}>
{t("common.edit")}
</Button>
<IconButton
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

good idea on reusing the IconButton component and converting it to nativewind

);
});

export default React.memo(SignTransactionOperationDetails, () => true);
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

is this double wrapping SignTransactionOperationDetails with React.memo ?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

oh, yeah it was a double wrapping I added to debug the operations behavior when the auth sections were animated, good catch, simplified it now

Copy link
Copy Markdown
Contributor

@CassioMG CassioMG left a comment

Choose a reason for hiding this comment

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

LGTM - good work with the CollapsibleSection and IconButton rework

@danilosilvackl danilosilvackl merged commit b755973 into main Aug 29, 2025
2 checks passed
@danilosilvackl danilosilvackl deleted the ds-send-swap-ux-improvements branch August 29, 2025 22:46
@github-actions github-actions Bot mentioned this pull request Nov 24, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Send and Swap UX improvements

2 participants