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 nativeLinking
and theandroid.playStoreUrl
fromapp.config.js
orapp.json
instead.
Android Device | Android Emulator | iOS Device | iOS Simulator | Web |
---|---|---|---|---|
expo install expo-store-review
If you're installing this in a bare React Native app, you should also follow these additional installation instructions.
import * as StoreReview from 'expo-store-review';
StoreReview.requestReview();
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
.StoreReview.isAvailableAsync();
Constants
API to get the Constants.manifest.ios.appStoreUrl
on iOS, or the Constants.manifest.android.playStoreUrl
on Android.null
.const url = StoreReview.storeUrl();
app.json
doesn't have the proper fields, and StoreReview.isAvailableAsync()
returns false.if (await StoreReview.hasAction()) { }
isAvailableAsync()
to avoid this error.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`);