This repository is a high-quality, production-ready React Native library for building interactive bottom sheets. It provides a highly customizable component (`BottomSheet`) that supports gesture-driven snapping, dynamic sizing, keyboard handling, and modal presentation. The architecture is built on `react-native-reanimated` for performant animations on the UI thread and `react-native-gesture-handler` for gesture recognition. The library includes a rich set of pre-integrated scrollable components (FlatList, ScrollView, SectionList, VirtualizedList, FlashList), a modal variant (`BottomSheetModal`), and a context-based provider system for managing multiple sheets. The codebase is well-structured with TypeScript, clear separation of concerns, and extensive documentation. It is actively maintained with frequent releases and a large community (9k+ stars). The primary entry point is `src/index.ts`, which exports all components, hooks, and utilities. The library is not an application but a reusable UI component library, and it demonstrates strong engineering practices with reusable patterns like gesture handler providers, animated detent management, and scrollable component factories.
This repository contains a React Native library that provides pinch-to-zoom functionality with advanced gesture handling. The core implementation uses React Native Reanimated and Gesture Handler to deliver smooth 60fps/120fps animations for zoom, pan, and double-tap interactions. The library offers both a ready-to-use `<Zoom>` component and a `useZoomGesture` hook for custom implementations, featuring Apple Photos-style physics including rubber band effects, focal point tracking, and seamless gallery navigation. The implementation demonstrates sophisticated gesture coordination and performance optimization through proper use of worklets to keep animations on the UI thread. The useZoomGesture hook encapsulates complex logic for managing shared values, handling simultaneous gestures (tap, pan, pinch), and implementing physics-based responses like rubber band effects and spring animations. It carefully handles edge cases such as boundary conditions, momentum preservation, and platform-specific behaviors to ensure a polished user experience. Key features include configurable zoom limits, double-tap zoom with customizable scales, optional JS bridge callbacks for less performance-critical use cases, and advanced gallery swipe navigation that enables seamless transitions between images in a flat list while zoomedβjust like the native iOS Photos app. The library is designed with performance in mind, minimizing JavaScript bridge communication by leveraging worklet-based animations for the core interaction logic.