fix: perf(accessibility): fix iOS accessibility in Bridge token selector c…#29128
Conversation
|
CLA Signature Action: All authors have signed the CLA. You may need to manually re-run the blocking PR check if it doesn't pass in a few minutes. |
19ce599 to
aba8226
Compare
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #29128 +/- ##
==========================================
- Coverage 82.21% 82.21% -0.01%
==========================================
Files 5079 5079
Lines 133881 133889 +8
Branches 30031 30032 +1
==========================================
+ Hits 110071 110076 +5
- Misses 16332 16334 +2
- Partials 7478 7479 +1 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
9ca4da0 to
7e4f08f
Compare
…omponents - BridgeTokenSelector, TokenButton, TokenSelectorItem: Pressable → TouchableOpacity Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ge token selector - TokenSelectorItem: fix BOTTOM_ROW_BALANCE_TEXT_STYLE to use BodySM (was accidentally changed to BodyMD when extracting the inline constant), restoring visual alignment with the BodySM token name on the same row - BridgeTokenSelector: remove getItemLayout since items have variable heights due to conditional badges and labels — fixed offsets cause scroll position jumps with non-uniform items Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The custom comparator omitted children, networkImageSource, and several token sub-properties. When children (e.g. the info ButtonIcon) gets a new reference due to a parent re-render, the memo would block the re-render leaving a stale closure. Use default shallow comparison instead. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
7e4f08f to
b7fd64e
Compare
…lanceView When inlining the balance text style logic, tokenBalanceTextProps overrides were incorrectly applied to FiatBalanceView instances too. Only TokenBalanceView should receive the caller-supplied text overrides (variant/color/style); fiat balance views must always use the plain base constants. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 08b4c18. Configure here.
|
The local redefinition shadowed the imported util and referenced parseAmount which was never imported, causing a potential runtime error. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
🔍 Smart E2E Test Selection
click to see 🤖 AI reasoning detailsE2E Test Selection:
These changes are scoped entirely to the Bridge token selector UI. They are low-risk refactoring and performance improvements with no logic changes, no API changes, and no controller/Engine modifications. SmokeSwap is selected because it directly covers swap and bridge trading flows, including the token selector UI that was modified. No other tags are needed as the changes are isolated to Bridge UI components with no impact on accounts, networks, identity, snaps, browser, or other wallet features. Performance Test Selection: |
|






…omponents
Description
Changelog
CHANGELOG entry:
Related issues
Fixes:
Manual testing steps
Screenshots/Recordings
Before
After
Pre-merge author checklist
Performance checks (if applicable)
trace()for usage andaddTokenfor an exampleFor performance guidelines and tooling, see the Performance Guide.
Pre-merge reviewer checklist
Note
Low Risk
UI-only changes to Bridge token list rendering and accessibility; no auth, transactions, or API contract changes.
Overview
Improves Bridge token selector scrolling performance and iOS VoiceOver behavior without changing selection or balance logic.
BridgeTokenSelectortunes the token list:ESTIMATED_ITEM_HEIGHTis 68 (documented from padding/avatar sizes), and theFlatListgetsinitialNumToRender,maxToRenderPerBatch,windowSize, andremoveClippedSubviewsto cut over-rendering on long lists.TokenSelectorItemwraps the row inReact.memo, hoists shared balance text styles, and setsaccessible={false}on innerBoxlayouts so the row’sTouchableOpacitystays the single focusable control on iOS. Balance rows pass explicittextVariant/textColorinstead of spreading style objects.TokenButtondrops theBoxwrapper: layout moves ontoTouchableOpacity’spillContainerstyle so the pill is one simpler touch target.Reviewed by Cursor Bugbot for commit 7185cac. Bugbot is set up for automated code reviews on this repo. Configure here.