--- title: Use Pressable Instead of Touchable Components impact: LOW impactDescription: modern API, more flexible tags: ui, pressable, touchable, gestures --- ## Use Pressable Instead of Touchable Components Never use `TouchableOpacity` or `TouchableHighlight`. Use `Pressable` from `react-native` or `react-native-gesture-handler` instead. **Incorrect (legacy Touchable components):** ```tsx import { TouchableOpacity } from 'react-native' function MyButton({ onPress }: { onPress: () => void }) { return ( Press me ) } ``` **Correct (Pressable):** ```tsx import { Pressable } from 'react-native' function MyButton({ onPress }: { onPress: () => void }) { return ( Press me ) } ``` **Correct (Pressable from gesture handler for lists):** ```tsx import { Pressable } from 'react-native-gesture-handler' function ListItem({ onPress }: { onPress: () => void }) { return ( Item ) } ``` Use `react-native-gesture-handler` Pressable inside scrollable lists for better gesture coordination, as long as you are using the ScrollView from `react-native-gesture-handler` as well. **For animated press states (scale, opacity changes):** Use `GestureDetector` with Reanimated shared values instead of Pressable's style callback. See the `animation-gesture-detector-press` rule.