- Low latency for timing interaction and feedback perfectly, thanks to extremely fast Nitro Modules
- Worklet support to ensure instant feedback even if JS thread is blocked
- Built for New Architecture from the start
- Drop-in replacement for
expo-haptics
for ease of adoption
You need to install both Nitro Modules core package and Nitro Haptics:
npm install react-native-nitro-modules react-native-nitro-haptics
# Don't forget to update CocoaPods and recompile app:
cd ios && pod install
See Apple Human Interface Guidelines for best practices and references.
import { Haptics } from 'react-native-nitro-haptics';
<Button title="Press me" onPress={() => Haptics.impact('medium')} />;
Assuming your app has been correctly configured with Reanimated, Nitro Haptics can be called directly from the UI thread by using Nitro Modules Boxing:
import { Gesture, GestureDetector } from 'react-native-gesture-handler';
import { Haptics } from 'react-native-nitro-haptics';
import { NitroModules } from 'react-native-nitro-modules';
const boxed = NitroModules.box(Haptics);
<GestureDetector
gesture={Gesture.Tap().onBegin(() => {
'worklet';
boxed.unbox().impact('medium');
})}
/>;
Impact haptics provide a physical metaphor you can use to complement a visual experience. For example, people might feel a tap when a view snaps into place or a thud when two heavy objects collide.
style
argument maps to UIImpactFeedbackGenerator.FeedbackStyle
, see HIG for visualization.
Notification haptics provide feedback about the outcome of a task or action, such as depositing a check or unlocking a vehicle.
type
argument maps to UINotificationFeedbackGenerator.FeedbackType
, see HIG for visualization.
Selection haptics provide feedback while the values of a UI element are changing, see HIG for visualization.
MIT