expo-store-review
provides access to the SKStoreReviewController
API in iOS 10.3+ devices, and ReviewManager
API in Android 5.0+ allowing you to ask the user to rate your app without ever having to leave the app itself.Android Device | Android Emulator | iOS Device | iOS Simulator | Web |
---|---|---|---|---|
expo-linking
is a peer dependency and must be installed alongsideexpo-store-review
.
→
expo install expo-store-review expo-linking
If you're installing this in a bare React Native app, you should also follow these additional installation instructions.
StoreReview.requestReview()
from a button - instead try calling it after the user has finished some signature interaction in the app.action=write-review
. For example:const itunesItemId = 982107779; // Open the iOS App Store in the browser -> redirects to App Store on iOS Linking.openURL(`https://apps.apple.com/app/apple-store/id${itunesItemId}?action=write-review`); // Open the iOS App Store directly Linking.openURL( `itms-apps://itunes.apple.com/app/viewContentsUserReviews/id${itunesItemId}?action=write-review` );
showAllReviews=true
like this:const androidPackageName = 'host.exp.exponent'; // Open the Android Play Store in the browser -> redirects to Play Store on Android Linking.openURL( `https://play.google.com/store/apps/details?id=${androidPackageName}&showAllReviews=true` ); // Open the Android Play Store directly Linking.openURL(`market://details?id=${androidPackageName}&showAllReviews=true`);
import * as StoreReview from 'expo-store-review';
if (await StoreReview.hasAction()) { // you can call StoreReview.requestReview() }
Promise<boolean>
This returns a promise that fulfills to true
if StoreReview.requestReview()
is capable
directing the user to some kind of store review flow. If the app config (app.json
) does not
contain store URLs and native store review capabilities are not available then the promise
will fulfill to false
.
Determines if the platform has the capabilities to use StoreReview.requestReview()
.
Promise<boolean>
This returns a promise fulfills with boolean
, depending on the platform:
true
if the device is running iOS 10.3+.true
if the device is running Android 5.0+.false
.In ideal circumstances 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 device is running a version of iOS lower than 10.3, or a version of Android lower than 5.0, this will attempt to get the store URL and link the user to it.
Promise<void>
This uses the Constants
API to get the Constants.manifest.ios.appStoreUrl
on iOS, or the
Constants.manifest.android.playStoreUrl
on Android.
On Web this will return null
.
string | null
isAvailableAsync()
to avoid this error.