Improve app store ratings with an in-app review prompt

Most users aren't going to go out of their way to go to the app store, look up your app, scroll down, and leave a rating. I rarely do it, and there's a good chance you don't either.

If your app doesn't seem to be getting a lot of reviews, especially positive ones, try adding an in-app review prompt. It'll make it much easier for users to quickly submit a rating and/or review, therefore boosting your app's ratings by shifting from the vocal minority towards the silent majority.

A screenshot from the Google Play Console showcasing daily rating distribution for the past year for Frosty.
After introducing an in-app review prompt in Frosty, ratings starting on June (especially positive ones) increased dramatically.

If your ratings end up staying the same or getting worse though, you now know there's a legitimate problem with your app that should be addressed.

Best practices

Make sure to follow best practices for when to actually show the review prompt, including:

  1. Avoid showing the prompt on the first launch. The user hasn't even used your app yet so it'll probably be annoying. Prefer showing it after a couple of launches and/or days for a higher chance of getting accurate, actionable, and meaningful feedback.

  2. Avoid showing the prompt immediately. It can be too abrupt and will totally block the user from interacting with the app, prematurely interrupting any flows like onboarding. Prefer showing it after a few seconds to let the user finish their important actions first.

For more, check out the official guidelines from Apple and Google.

Usage with Flutter

If you happen to use Flutter, I recommend the advanced_in_app_review package. It's super easy to set up with the declarative API. Here's how I have it configured:

main.dart

_14
class _MyAppState extends State<MyApp> {
_14
@override
_14
void initState() {
_14
super.initState();
_14
_14
AdvancedInAppReview()
_14
.setMinDaysBeforeRemind(7)
_14
.setMinDaysAfterInstall(1)
_14
.setMinLaunchTimes(5)
_14
.setMinSecondsBeforeShowDialog(3)
_14
.monitor();
_14
}
_14
...
_14
}