In case you're looking for a simple implementation
You can use PanResponder and Animated from the standard react-native lib. No need to install new packages, pretty easy to use.
Example
Take as an example my recent implementation, it's a generic bottom modal component that closes by swiping to the bottom of the screen:

Code
import { Animated, Dimensions, StyleSheet, PanResponder } from 'react-native';
// ... rest of the code ...
const AnimatedModal: React.FC<AnimatedModalProps> = ({ variant, children }) => {
// ... rest of the code ...
const panResponder = PanResponder.create({
onStartShouldSetPanResponder: () => true,
onPanResponderMove: Animated.event([null, { dy: translateY }], { useNativeDriver: false }),
onPanResponderRelease: (e, gestureState) => {
if (gestureState.dy > 50) {
handleAnimationClose();
} else {
Animated.spring(translateY, {
toValue: 0,
tension: 1,
friction: 20,
useNativeDriver: true,
}).start();
}
},
});
// ... rest of the code ...
return (
<Animated.View
{...panResponder.panHandlers}
style={[
styles.container,
variant === 'bottom' && { transform: [{ translateY }], bottom: 0 },
]}>
{children}
</Animated.View>
);
};
// ... rest of the code ...