A React Native library for creating high-performance, physics-based interactive views like swipeable cards and drawers.
React Native Interactable is a library for creating high-performance interactive views in React Native applications. It solves the challenge of building fluid, physics-based UI components like swipeable cards, drawers, and chat heads that respond naturally to user gestures at 60 FPS. By running interactions natively, it overcomes the performance limitations of the React Native bridge.
React Native developers building mobile apps that require complex interactive UI components with smooth, physics-based animations. It's particularly useful for those implementing gesture-driven interfaces like swipeable cards, collapsible headers, or draggable elements.
Developers choose React Native Interactable for its native physics engine and declarative API, which enable buttery-smooth interactions at 60 FPS without JavaScript performance penalties. It provides a more performant and realistic alternative to JavaScript-driven gesture libraries for advanced interactive scenarios.
Experimental implementation of high performance interactable views in React Native
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Uses a custom native physics engine to simulate springiness, friction, and damping, enabling lifelike interactions at 60 FPS, as detailed in the implementation section.
Allows defining complex behaviors like snap points and gravity wells through props, simplifying the creation of interactive components without imperative code.
Executes interactions natively to bypass the React Native bridge, maintaining smooth 60 FPS framerates even during intensive gestures, addressing performance limitations.
Seamlessly connects with React Native's Animated library to synchronize other views, enabling performant coordinated animations through Animated.Value interpolation.
The library is labeled experimental and publicly seeking a maintainer, indicating potential stability issues and lack of ongoing updates or bug fixes.
Requires manual native linking or CocoaPods integration, which can be error-prone and adds build overhead compared to pure JavaScript solutions.
Documentation is split into separate files (like PROPS.md), and the project admits to being experimental, which might hinder learning and troubleshooting.