ScreenShipper
Blog
Growth & Marketing

Google Play In-App Review API: Best Practices and Testing

Google Play In-App Review API best practices: when to call requestReviewFlow, how the quota works, Google's design rules and how to test before launch.

ScreenShipper team · · 8 min read

Quick answer: The Google Play In-App Review API shows a native rating card inside your app. You request a ReviewInfo object with requestReviewFlow(), then show the card with launchReviewFlow(). Google applies an undisclosed, time-bound quota, so the card may not appear. Never trigger it from a button, never ask "Do you like the app?" first, and test through an internal test track.

How the In-App Review API works

The API is part of the Google Play Core libraries. When you launch the flow, Google Play draws a bottom card where people pick one to five stars and can add an optional comment. The review is sent to the Play Store and appears publicly after Google's usual processing; Play Console Help says new reviews are generally held back for around 24 hours.

Before you write any code, check the requirements Google currently lists:

RequirementDetails
DevicesAndroid phones, tablets and TVs with Google TV running Android 5.0 (API level 21) or higher, with the Play Store installed
ChromeOSChromebooks that have the Play Store installed
LibraryPlay Core library 1.8.0 or higher; the current docs use com.google.android.play:review (plus review-ktx for Kotlin)
PlatformsKotlin or Java, native C++, Unity and Unreal Engine each have an integration guide
DistributionThe app must be available on Google Play, at least on the internal testing track

Two behaviors shape everything else. First, the API never tells you whether the card was shown or whether the person left a review. Second, Google can decline to show the card because of its quota. Your code has to work the same way in every case.

Integrate it in Kotlin or Java

The flow has two calls, and Google's guide recommends a specific order:

  1. Add the com.google.android.play:review dependency from Google's Maven repository. Kotlin projects can add com.google.android.play:review-ktx for coroutine-friendly extensions.
  2. Create a manager with ReviewManagerFactory.create(context).
  3. When your app reaches a good moment (for example, the player finishes a level), call manager.requestReviewFlow(). If the task succeeds, keep the returned ReviewInfo. If it fails, read the error code from ReviewException and log it.
  4. Call manager.launchReviewFlow(activity, reviewInfo) and wait for the task to complete before you continue, such as advancing to the next level.
  5. In the completion listener, continue your normal flow no matter what happened. Google is explicit that an error during the review flow should not be shown to the user.

Note: The ReviewInfo object is only valid for a limited time. Google suggests requesting it slightly ahead of time, but only once you are certain you will launch the flow. Don't fetch it at app start and use it an hour later.

Cross-platform frameworks such as Flutter and React Native rely on plugins that wrap these same two calls, so the rules below apply to them too.

Quotas: why the review card sometimes doesn't show

Google Play enforces a time-bound quota on how often one person can see the review card. Google's documentation says that calling launchReviewFlow more than once in a short period, giving "less than a month" as an example, might not display a dialog. It also says the exact quota is an implementation detail that can change without notice.

That has three practical consequences:

  • No "Rate us" button wired to the API. If the person has hit the quota, tapping the button does nothing, which looks broken. For a permanent rating link in your settings, send people to your Play Store listing instead, for example with a market://details?id=your.package.name intent.
  • Your own throttle comes first. Decide when someone qualifies (sessions, days since install, success events) and remember when you last asked. Treat the quota as a ceiling you should rarely reach.
  • No retry loops. If nothing appeared, you have no way of knowing why, and calling again right away only burns quota.

Google's rules for when and how to ask

Google publishes strict guidelines for this API, and Play policy backs them up. Here is the short version:

DoDon't
Trigger the flow after the person has used your app enough to give useful feedbackPrompt excessively, which frustrates people and burns quota
Show the card as-isChange its size, opacity, shape or any other property
Keep the card on the topmost layer until Play removes itAdd overlays on or around the card, or remove it in code
Continue your normal flow after the call completesAsk any question before or during the card, such as "Do you like the app?" or "Would you rate us 5 stars?"
Prompt in a clear, non-deceptive wayOffer discounts, coins or other rewards for ratings

The last row comes from Google Play's User Ratings, Reviews, and Installs policy, which prohibits incentivized ratings and forced or deceptive rating pop-ups. Filtering people with a sentiment question before showing the card breaks the API guidelines even if you don't offer a reward.

Good moments look the same as on iOS: right after a completed workout, a finished project, a won level or a reached goal. Bad moments are app launch, onboarding, errors and paywalls.

How to test the in-app review flow

You can't fully test the review card on an app that isn't on Google Play, but you don't need a production release either. Google documents three options:

MethodWhat you seeMain limits
Internal test trackThe real card, and you can submit a reviewTester account must be in the track, selected as the primary account in the Play Store, have the app in its Play library, and have no existing review
Internal app sharingThe real card for fast iterationYou can't submit; the button is disabled
FakeReviewManagerNo UI at allOnly for unit or integration tests; always returns a fake ReviewInfo and a success result

Google notes that quota limits are not enforced when the app was downloaded from the internal test track. Once the tester account has installed the app from that track, you can deploy newer builds to the same device from Android Studio and keep testing.

If the card still doesn't show, work through Google's troubleshooting list:

  • The applicationId isn't on any Play track yet. Upload it to internal testing.
  • The app isn't in the account's Play library. Download it once from the Play Store with that account.
  • Several accounts are on the device and the primary one isn't selected in the Play Store.
  • The account is protected, such as an enterprise account. Use a regular Gmail account.
  • The account already reviewed the app. Delete that review in the Play Store.
  • The Play Store was sideloaded. Use a device with a valid Play Store and Google Play services.

How it compares with the iOS review prompt

If you ship on both platforms, you can share most of your timing logic, but not your assumptions:

Google Play In-App Review APIiOS review prompt
Display limitUndisclosed quota that can changeUp to three times in 365 days, documented by Apple
Feedback to your appNoneNone
Button-triggered promptNot allowed in practice; link to the listing insteadNot allowed; use the action=write-review link
Pre-test without releaseInternal test track or internal app sharingDebug builds always show it; TestFlight shows nothing

The iOS in-app review prompt guide covers Apple's side in detail. Once reviews start arriving, reply to them: Play notifies the reviewer by push and email when you answer. Our guide on how to respond to app reviews includes templates, and how to get more app reviews covers the wider funnel. If you're still preparing your listing, start with the Google Play store listing guide.

Frequently Asked Questions

Why is the Google Play in-app review dialog not showing?

Usually because the quota was reached, the account already reviewed the app, the app isn't in that account's Play library, or the build wasn't installed through a Play track. Testing from the internal test track removes the quota and makes the cause easier to find.

Can I tell whether the user left a review?

No. The completion listener fires either way, and Google states the API doesn't indicate whether the person reviewed or even whether the dialog was shown. Check Play Console for incoming ratings instead.

How often can I call launchReviewFlow?

Google doesn't publish the number. Its documentation only says that calling it more than once in a short period, such as less than a month, might not show a dialog. Ask far less often than that, at moments you choose.

Does the In-App Review API work in closed testing?

Yes. Google's data safety notes say that when the app is in a closed test track, the rating and comment are shared privately with the developer instead of being posted publicly.

Can I use the API on Android TV or Chromebooks?

Google lists TVs with Google TV running Android 5.0 or higher and ChromeOS devices with the Play Store installed as supported, alongside phones and tablets.

Sources

Localize your screenshots in 50 languages

Add languages to one design, translate with AI on Pro and get warnings when a headline overflows.

All guides
Growth & Marketing · 8 miniOS In-App Review Prompt: When and How to Ask for RatingsHow the iOS in-app review prompt works: StoreKit's requestReview APIs, the three-per-year display limit, testing quirks and the best moments to ask.Read guide Growth & Marketing · 7 minHow to Get More App Reviews Without Breaking Store RulesHow to get app reviews the right way. Use the official in-app review prompts, time them well, turn support into ratings and avoid incentives both stores ban.Read guide Growth & Marketing · 7 minHow to Respond to App Reviews (With Templates for Both Stores)How to respond to app reviews on the App Store and Google Play: where to reply, the rules each store sets, triage tips and 7 copy-ready reply templates.Read guide Growth & Marketing · 7 minHow to Build an App Landing Page That ConvertsHow to build an app landing page that converts: the sections to include, hero copy, reusing store screenshots, badges, Smart App Banners, SEO and tracking.Read guide Growth & Marketing · 9 minApp Store Connect Analytics: The Metrics That Actually MatterA practical guide to App Store Connect analytics: impressions, product page views, conversion rate, sources, retention, benchmarks and Play Console's reports.Read guide Growth & Marketing · 8 minSeasonal App Store Screenshots: How to Update for Holidays and EventsWhen and how to ship seasonal app store screenshots for holidays and events: lead times, review rules, CPP and PPO tests, Google Play timing and what to avoid.Read guide