Usage
TouchableWithoutFeedback must have exactly one child. Use a View to wrap multiple children.
Props
(event: GestureResponderEvent) => void
Called when the touch is released, but not if cancelled (e.g., by a scroll that steals the responder lock).
(event: GestureResponderEvent) => void
Called when a touch is engaged, immediately when the finger touches down.
(event: GestureResponderEvent) => void
Called when the touch is released or cancelled.
(event: GestureResponderEvent) => void
Called when the user holds down the press for more than
delayLongPress milliseconds.boolean
default:"false"
If true, disables all interactions for this component.
number
default:"0"
Delay in milliseconds from the start of the touch before
onPressIn is called.number
default:"0"
Delay in milliseconds from the release of the touch before
onPressOut is called.number
default:"500"
Delay in milliseconds from
onPressIn before onLongPress is called.Insets
Extends the touchable area without changing visual layout.
Insets
Defines how far the touch can move off the button before deactivating it.
boolean
If true, doesn’t play system sound on touch.
string
Used to locate this view in end-to-end tests.
When to Use
Custom Feedback Implementation
When you need to implement custom visual feedback:Dismissing Overlays
For closing modals or dropdowns when tapping outside:Keyboard Dismissal
Wrapping content to dismiss keyboard when tapping:Common Patterns
Image with Custom Overlay
Animated Custom Feedback
Why You Should Avoid It
TouchableWithoutFeedback lacks visual feedback, which:- Reduces user confidence - users don’t know if their tap registered
- Makes the app feel unresponsive and “web-like”
- Violates platform design guidelines (iOS and Android)
- Decreases accessibility for users with motor impairments
Better Alternatives
Use TouchableOpacity
Use Pressable
For more control with proper feedback:Use TouchableHighlight
For underlay color feedback:Accessibility Considerations
If you must use TouchableWithoutFeedback, ensure proper accessibility:Limitations
- Must have exactly one child (wrap multiple children in a View)
- No built-in visual feedback
- Child must be a native component (View, Text, Image, etc.)
- Cannot use with functional components directly