Both recognize drags; they differ in where the decisions are made. With PanResponder, every move event crosses to JavaScript, your callback decides, and the result crosses back to move the view. With Gesture Handler 6,788 (Gesture Handler), native recognizers decide on the UI thread and, with Reanimated 11,010 , the view moves there too.
| Aspect | PanResponder | Gesture Handler |
|---|---|---|
| Install | Built in | Native module, development build |
| Where recognition runs | JavaScript thread | UI thread |
| Busy JavaScript thread | Drag stutters or lags | Drag stays smooth |
| Built-in gestures | Only raw pan data | Tap, pan, pinch, rotation, fling, long press |
| Composition | Manual flags | Exclusive, Simultaneous, Race |
| Native scroll views | Can fight over touches | Coordinates with them |
PanResponder still suits libraries that must avoid native dependencies and simple drags on quiet screens. For anything touched all day, such as swipeable rows, sheets and carousels, use Gesture Handler, as BookNest's cart does (Swipeable Cart Item).