All answers

Expo

How do I ask for an App Store review in an Expo app with expo-store-review?

Install expo-store-review, check isAvailableAsync(), and call requestReview() after a moment the user enjoyed, not from a button. Apple and Google limit how often the prompt appears and don't promise it'll show, so for a "Rate us" button, open your store page with storeUrl() instead.

Updated October 31, 2026

If you call requestReview() and nothing appears, it’s hard to tell whether your code is wrong. It may not be. Apple and Google both limit when the rating prompt is shown, and your app isn’t told whether it appeared, so there’s no error to look for when it doesn’t.

How it works

expo-store-review uses the native in-app review prompt on each platform, so people can leave a star rating without leaving your app. Calling requestReview() asks for the prompt, and it’s shown only when the platform’s limits allow it:

  • On iOS, if the person hasn’t rated your app on that device, the prompt appears at most three times in a 365-day period. If they have rated it, it appears again only for a new app version, and only when more than 365 days have passed since their last review. People can also turn these prompts off for every app.
  • On Android, there’s a time-bound quota on how often a person can see the prompt. Its exact value isn’t published and can change, so asking more than once in a short period (Google’s example is less than a month) might not show anything.

requestReview() resolves either way, and neither platform reports whether the person saw the prompt or left a rating. That’s why both Apple and Google say not to call it from a button, since a tap that sometimes does nothing reads as a bug. For a “Rate this app” button, we’d open your store page instead, which step 5 covers.

How to do it

  1. Install the library:

    npx expo install expo-store-review
  2. Add your store links to app.json, so storeUrl() and hasAction() have something to work with:

    {
      "expo": {
        "ios": { "appStoreUrl": "https://apps.apple.com/app/id1234567890" },
        "android": {
          "playStoreUrl": "https://play.google.com/store/apps/details?id=com.example.myapp"
        }
      }
    }
  3. Ask after a good moment, such as a finished task or a delivered order, and without asking any questions first, which Google’s guidelines rule out:

    import * as StoreReview from "expo-store-review";
    
    async function askForReview() {
      if (await StoreReview.isAvailableAsync()) {
        await StoreReview.requestReview();
      }
    }
  4. Keep your own record of when you asked, for example the app version, so you pick the moment yourself instead of leaving it to the quota.

  5. For a “Rate this app” button, open the store page:

    import { Linking } from "react-native";
    
    const url = StoreReview.storeUrl();
    if (url) await Linking.openURL(url);

    On iOS you can add ?action=write-review to the App Store URL to open the review screen directly.

How you know it works

On iOS, the prompt appears every time while your app is in what Apple calls development mode, so you can check the timing. It never appears in TestFlight builds, where isAvailableAsync() returns false.

On Android, the prompt needs an app installed from Google Play, so upload a build to an internal test track and install it from the Play Store with a tester account, because the quota isn’t enforced there. Internal app sharing also shows the prompt, but its submit button is disabled.

If it doesn’t appear

On iOS, the person may have already rated this version, used up the three prompts for the year, or turned rating prompts off. On Android, check that the app came from the Play Store rather than a downloaded APK or a development build, that the Play Store’s selected account is the device’s primary account, and that the account hasn’t already reviewed the app (Google’s fix for that one is to delete the review). On the web, isAvailableAsync() is always false, so the prompt only exists in your iOS and Android apps.

Ask the agent

If your app is in Draftbit, paste this into the agent, and it can read your code and make the change for you.

Ask users to rate the app with expo-store-review after they finish their third order, at most once per app version. Add our App Store and Play Store links to the app config, and add a "Rate this app" item in settings that opens the store page.

Open Draftbit

More Expo answers