Expo

Documentation

StoreReview

expo-store-review provides access to the SKStoreReviewController API in iOS 10.3+ devices, allowing you to ask the user to rate your app without ever having to leave the app itself.
If this is used in Android the device will attempt to link to the Play Store using ReactNative.Linking and the android.playStoreUrl from the app.json instead.

Platform Compatibility

Android DeviceAndroid EmulatoriOS DeviceiOS SimulatorWeb

expo install expo-store-review

To use this in a bare React Native app, follow the installation instructions.

import * as StoreReview from 'expo-store-review';

In the ideal circumstance this will open a native modal and allow the user to select a star rating that will then be applied to the App Store without leaving the app. If the users device is running a version of iOS lower than 10.3, or the user is on an Android device, this will attempt to get the store URL and link the user to it.

Example

StoreReview.requestReview();

Determines if the platform has the capabilities to use StoreReview.requestReview(). On iOS, this will return true if the device is running iOS 10.3+. On Android, this will return true. On Web, this will return false.

Example

StoreReview.isAvailableAsync();

This uses the Constants API to get the Constants.manifest.ios.appStoreUrl on iOS, or the Constants.manifest.android.playStoreUrl on Android.
In the bare workflow, this will return null.

Example

const url = StoreReview.storeUrl();

This returns a promise that resolves to a boolean that let's you know if the module can perform any action. This is used for cases where the app.json doesn't have the proper fields, and StoreReview.isAvailableAsync() returns false.

Example

if (await StoreReview.hasAction()) {
}

It is important that you follow the Human Interface Guidelines when using this API.
Specifically:
  • Don't call StoreReview.requestReview() from a button - instead try calling it after the user has finished some signature interaction in the app.
  • Don't spam the user
  • Don't request a review when the user is doing something time sensitive like navigating.