About this drop
Built with react-native-reanimated shared values and useAnimatedStyle. A single Gesture.Pan from react-native-gesture-handler reads the touch point and maps it through interpolate with Extrapolation.CLAMP to rotateX/rotateY, applied via a perspective transform for the 3D lean; onEnd springs everything back with withTiming. The shine is a react-native-svg radial gradient composited with mixBlendMode 'overlay', and the reflection sprites are clipped to the card's watermark with @react-native-masked-view/masked-view. All animation runs on the UI thread, so dragging stays smooth on both iOS and Android. Note MaskedView uses androidRenderingMode 'software' for correct masking on Android, and mixBlendMode needs the new architecture / a recent RN version. Tested on Expo SDK 56; it runs in Expo Go, no dev build needed, since react-native-svg and masked-view are both bundled as of SDK 56.