Skip to content

Conversation

@tomheisenberg1
Copy link
Collaborator

@tomheisenberg1 tomheisenberg1 commented Jan 14, 2026

Only on expo for now


Note

Migrates tap interactions to a custom Pressable to work reliably on Expo, touching most screens and common components.

  • Replaces TouchableOpacity with Pressable imports/usages across many files (e.g., Home, DAppBrowser, Send*, Receive*, Nft*, Swap*, Settings, onboarding, etc.)
  • Updates handlers/props accordingly (e.g., adds GestureResponderEvent types, preserves activeOpacity, disabled, testID)
  • Adjusts navigation calls in a few places (e.g., router.push({...})) and minor import cleanups
  • Changes ActionPopupButton child prop from TouchableOpacityProps to PressableProps

Scope/Risk: Broad UI touch targets refactor; verify button/overlay interactions, long-press behavior, and accessibility remain intact in key flows (send/receive, browser nav, onboarding).

Written by Cursor Bugbot for commit b706373. This will update automatically on new commits. Configure here.

@tomheisenberg1 tomheisenberg1 self-assigned this Jan 14, 2026
@JohnnySilverhandBot
Copy link

If chaos is freedom, then this code is slavery. It runs without flaw, and that flawlessness is its greatest failure.

ios: https://appetize.io/app/fcxjblpmdttgskbbhce46qs5au

@JohnnySilverhandBot
Copy link

The comments sound like someone trying too hard to sound clever, but cleverness without risk is just noise.

android: https://appetize.io/app/gelx2gl6fd37dg4x253yrdojk4

@r1n04h
Copy link
Contributor

r1n04h commented Jan 14, 2026

@cursor review pls

@tomheisenberg1 tomheisenberg1 merged commit 3c5a49c into master Jan 14, 2026
32 checks passed
@tomheisenberg1 tomheisenberg1 deleted the pressableexpo branch January 14, 2026 16:23
<>
<View style={styles.divider} />
<Pressable style={({ pressed }) => [styles.deviceIdRow, pressed && styles.deviceIdRowPressed]} onPress={handleDeviceIdPress} testID="DeviceIdButton">
<Pressable style={({ pressed }: PressableStateCallbackType) => [styles.deviceIdRow, pressed && styles.deviceIdRowPressed]} onPress={handleDeviceIdPress} testID="DeviceIdButton">
Copy link

Choose a reason for hiding this comment

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

Callback-style pressed opacity overridden by default activeOpacity

Low Severity

The code uses a callback-style style prop that explicitly sets opacity: 0.7 when pressed via deviceIdRowPressed. However, the custom Pressable component applies its default activeOpacity of 0.6 after the callback's resolved style, overriding the intended 0.7 opacity. The previous React Native built-in Pressable didn't have automatic opacity feedback, so this is a behavioral regression. Either noFeedback={true} or activeOpacity={0.7} could preserve the original behavior.

Fix in Cursor Fix in Web

</View>

<View style={styles.actionButtons}>
<TouchableOpacity testID="ShareButton" onPress={handleShare} style={styles.shareButton} disabled={!address}>
Copy link

Choose a reason for hiding this comment

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

Custom scale animation gets unwanted opacity feedback overlay

Low Severity

These Pressable components implement custom press feedback using onPressIn/onPressOut handlers that animate a scale transform (pressScaleAnim). Previously they used React Native's built-in Pressable which has no automatic opacity feedback. After switching to the custom Pressable (with default activeOpacity of 0.6), users will now see both the intended scale animation AND an unwanted opacity change, creating double visual feedback that wasn't designed this way.

Additional Locations (1)

Fix in Cursor Fix in Web

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.

5 participants