Expo

Documentation

Haptics

Provides haptic feedback for
  • iOS 10+ devices using the Taptic Engine
  • Android devices using Vibrator system service.
On iOS, the Taptic engine will do nothing if any of the following conditions are true on a user's device:
  • Low Power Mode is enabled (Feature Request)
  • User disabled the Taptic Engine in settings (Feature Request)
  • Haptic engine generation is too low (less than 2nd gen) - Private API
    • Using private API will get your app rejected: [[UIDevice currentDevice] valueForKey: @"_feedbackSupportLevel"] so this is not added in Expo
  • iOS version is less than 10 (iPhone 7 is the first phone to support this)
    • This could be found through: Constants.platform.ios.systemVersion or Constants.platform.ios.platform

For managed apps, you'll need to run expo install expo-haptics. To use it in a bare React Native app, follow its installation instructions.

import * as Haptics from 'expo-haptics';

Used to let a user know when a selection change has been registered

A Promise resolving once native size haptics functionality is triggered.

The kind of notification response used in the feedback

  • type: NotificationFeedbackType -- A notification feedback type that on iOS is directly mapped to UINotificationFeedbackType, while on Android these are simulated using Vibrator. You can use one of Haptics.NotificationFeedbackType.{Success, Warning, Error}.

A Promise resolving once native size haptics functionality is triggered.

  • style: ImpactFeedbackStyle -- A collision indicator that on iOS is directly mapped to UIImpactFeedbackStyle, while on Android these are simulated using Vibrator. You can use one of Haptics.ImpactFeedbackStyle.{Light, Medium, Heavy}.

A Promise resolving once native size haptics functionality is triggered.