Apr 16, 2024

Boost Your App's Rating: A Practical Guide to App Review Prompts

Tips for targeting app review prompts to increase your App Store rating.

Every mobile app developer is well aware of the significant role app reviews and ratings play. Insufficient reviews can breed distrust towards your app. A low average rating can deter users from downloading your app due to concerns about its quality.

This blog post distills app-rating best practices we've gleaned from developing apps and interviewing other developers. We cover 19 strategies, including avoiding review prompts when a user's battery is low, steering clear of distracted users, and pausing prompts after significant updates. We also guide you on integrating these tactics into your app with minimal effort. Continue reading to learn how to optimize your app review prompts effectively!

Just want the code?

Throughout this blog post, we'll illustrate examples of targeting review prompt timings using strings like device_battery_level > 0.2. Our SDK can use these conditional strings directly, without hardcoding and with the ability to update your logic any time over-the-air. Naturally, these strategies can also be implemented in your own codebase.

To learn about how the Critical Moments SDK can be used to implement all of these concepts, refer to the Tooling section.

About Rating Optimization

There are two types of users who review your app.

First, users who visit the App Store for the sole purpose of reviewing your app. Second, users you request to provide a review, following which they do.

You have little control over the first group of users who actively go to the App Store to review your app. You cannot predict their actions, nor can you prevent them. A secret we've learned from years of tuning app reviews is that the average rating from these users is usually significantly lower than the ratings from the second group, those who agree to leave a review when prompted.

Why is this so? Well, it turns out that users who are dealing with an issue or frustration are more inclined to leave a review than those who are content with your application.

For instance, let's compare Apple's built-in Calculator app to a third-party calculator app:

App store ratings, 3.1 avg, 5k total
Apple Calculator
App store ratings, 4.7 avg, 1.6M total
Third Party Calculator

Why does the Apple Calculator app, presumably with a much larger user base, have less than 1% of the review count, and 15x more one-star ratings per capita? The answer is simple: Apple doesn't prompt users to review its Calculator app. The ratings are primarily composed of the vocally dissatisfied minority (type 1 users), and it shows. Apple doesn't need to prioritize ratings as their app comes preinstalled and most users will likely never visit its App Store page. As an app developer, you don't have such an option.

Here is a great way to think about prompting users to review your app:

You solicit reviews from your users to ensure that the silently satisfied majority has representation in the App Store rating. If you don't, your rating will soon be overpowered by the vocal discontented minority.

Fortunately for quality apps, the satisfied group is generally a lot larger than the unhappy minority. It's always a good time to initiate prompts for reviews to significantly enhance your app's rating in the App Store. Fine-tuning frequency, user selection, and timing can greatly influence your app rating.

Check Device Conditions

There are certain moments that are universally poor for asking users to rate an app.

Low battery alert
Low Battery alert via MKBHD

Low Battery or Low Power Mode

When the battery level is critically low users are unlikely to want to spend time reviewing an app.

Example condition: device_battery_level > 0.2 && !device_low_power_mode

No Internet Connection or Low Data Mode

It's ineffective to request reviews if the user lacks an internet connection. Since review prompts can only be shown a limited number of times per app, avoid wasting them when the user is offline or in low data mode.

Example filter: has_active_network && !low_data_mode

User Distractions

A user who is on a call, listening to a podcast, or driving is likely distracted and not in a good position to provide a review.

Example: !on_call && !other_audio_playing && !has_car_audio

Device is Inactive

Often, people set down or lock their phones right after accomplishing a task in an app. Avoid showing the review prompt if the device is placed face-up or face-down, or if the screen is locked. Remember, Apple restricts the frequency of review prompts, so each opportunity counts.

Example: device_orientation != 'face_up' && device_orientation != 'face_down' && foreground

Don't Ask Too Often

Regularly prompting users for reviews can become annoying. Apple even sets limits on how often you can display the review prompt. If you decide to implement a pre-prompt asking users about reviewing, it's important to check when you last asked them before showing it.

Example: (eventCount('ask_for_review') == 0 || lastEventTime('ask_for_review') < now() - duration('21d'))

Check App Version

Always consider the version of the app that the user is running before asking for a review. Be aware that these values can change over time, hence requiring over-the-air update capabilities to push the new values to old clients.

Low battery alert
Out of date apps

Avoid Outdated App Versions

Some users may not update their apps frequently. Avoid asking these users for reviews, especially if they are running an older app version that may have known bugs or service API compatibility issues.

Example: versionGreaterThan(app_version, '2.4.0')

Buggy Releases

Avoid asking users to review your app if they are using a version with serious known bugs.

Example: app_version not in ['buggy_version_1', 'buggy_version_2']

Moreover, consider leveraging our messaging tools to notify users on impacted builds about available updates that address these bugs!

Consider Their Device

The type and condition of the device a user operates may negatively impact their experience. You may want to filter based on device characteristics.

Exclude Older OS Versions

If your app relies on newer APIs or performs better on the latest OS versions, avoid prompting for reviews on outdated OS versions.

Example: !versionLessThan(os_version, '17.0')

Exclude OS Versions With Known Bugs

Sometimes new OS updates from Apple/Google come with bugs that negatively affect app functionality and lead to poor reviews. Filter out these versions to avoid getting reviews during these periods. Use OTA updates to prevent review prompts on problematic OS versions.

Example: os_version not in ['14.3.2', '14.3.3']

Device Category

If your app is optimized for specific device types like phones, tablets, CarPlay, or TVs, concentrate your review prompts accordingly to that platform:

Example: user_interface_idiom == 'phone'

Exclude Older Devices

Apps that are memory or graphics-intensive may not perform as well on older devices. While it's good to allow older devices access to your app, it is advisable to target review requests to devices where the app performs optimally.

Example: ((device_model_class == 'iPhone' && versionGreaterThan(device_model_version, '13.0') || (device_model_class == 'iPad' && versionGreaterThan(device_model_version, '11.0')))

Check Localization

Not every app supports every language. Users who aren't native speakers of your app's interface languages might not experience it as seamlessly as others.

Example: locale_language_code IN ['en', 'es', 'de']

Pause After Major Updates

Tweet reading 'Not to be dramatic or anything but the new instagram layout is probably the worst thing I ever saw in my life'
People Hate Change

After introducing significant user experience (UX) changes in your app, give users some time to adjust before asking for reviews. Major updates might initially confuse or frustrate users, which can lead to a temporary drop in ratings, even if the update is beneficial in the long term. This pause also gives you time to find and fix any real UX issues you might have introduced in the update!

Example for a significant app overhaul, version 2.0: app_version not in ['2.0', '2.0.1', '2.0.2']

Check Essential Permissions

Some apps require specific permissions to function optimally. If a user has denied these essential permissions, consider waiting until it's resolved to ask for a review.

A prompt reading 'Waze needs access to your location to function properly. Please enable location services in your settings.'
Waze without GPS? It's unlikely to get a positive review.

Examples:

  • For a photo editor that needs access to the camera or photo library: (camera_permission == 'authorized' || photo_library_permission == 'authorized')
  • For a run tracker app that relies on GPS: location_permission_detailed == 'authorized_always'
  • For a smart home app, where Bluetooth is essential: bluetooth_permission == 'authorized'
  • For a chat app which which is much better if it can access contacts: contacts_permission == 'authorized'

See below for examples of how Critical Moments can help address issues like these.

Prompt at the Right Time

Timing is crucial when it comes to asking for app reviews. Here are some things to consider to optimize the timing of your review prompts.

Ensure Sufficient User Experience Before Review

Allow users adequate time to engage with your app's core features before asking for a review. This assures that they have a well-rounded experience to base their review on. For example:

  • For a game: max_level_reached >= 5
  • For a language learning app: eventCount('picked_language') > 0 && eventCount('completed_written_lesson') > 2 && eventCount('completed_spoken_lesson') > 2
  • For a meditation app: eventCount('completed_meditation') > 3
  • Ensure the app is not too recently installed:app_install_date < now() - duration('7d')

Ask After an “Aha Moment”

Each app has a special moment where the user feels its value: reaching a streak in Duolingo, completing a meditation in Calm, or finishing backing up your photos in Google Photos. In that moment the user feels maximal appreciation for the app, and its place in their life. This is the best time to prompt for an app review!

Oh, and please don't ask right after an app launch, or when the user is in the middle of a task. That's a sure fire way to get frustrated reviews.

With Critical Moments, you can try different triggers for when the app review prompt is shown to find the best one for your app. This includes updating the trigger over the air, without app updates.

Avoid Users Having Negative Experiences

It's best not to prompt users who are clearly having a negative experience with your app. Some examples of how different apps might detect this:

  • For a game where the user is frequently losing: eventCount('level_failed') / eventCount('level_passed') < 2.0
  • For a social app where user hasn't followed many people: followed_count < 5
  • For a backup app hindered by slow internet speeds, or the backup is still in progress: total_bytes_backed_up / total_backup_time_s > 750 && total_bytes_backed_up / total_bytes_to_back_up > 0.95

If users are struggling, the inverse conditions can be used to help impacted users resolve their issue!

Pause Prompting When Appropriate

Sometimes external factors like a service outage or a recent price increase can make it wise to temporarily stop asking users for reviews.

Be Creative!

Ultimately, each app has unique moments where users are most likely to give positive feedback. Identify and target these opportunities effectively. For example:

  • For a concert suggestion app which uses your Spotify library: canOpenUrl('Spotify:')
  • For an app used for navigating the New York subway, best used by a local: location_approx_city == 'New York' && location_approx_region == 'NY'
  • For a weather app during specific weather conditions: weather_condition IN ['Rain', 'Snow'] && weather_cloud_cover > 0.80
  • For a business-focused app during business hours: formatTime(now(), 'hod') => 9 && formatTime(now(), 'hod') < 17
  • An audiophile app where the quality can't be heard over bluetooth audio: !has_bt_headphones

Critical Moments have over 100 targeting properties, which might make sense for your app. Check out the list for more ideas!

Don't be Too Restrictive

Remember that maintaining a significant volume of review prompts is crucial. This helps balance the influence of the discontent minority. Make sure you aren't too restrictive with filters you add, or else you risk having too few reviews.

The suggestions built into our template are either temporary or affect a small percentage of your user base.

Tooling: How to Build the Ultimate App-Review Prompt System

Tools

The strategies discussed above can significantly boost your app rating, but implementing them from scratch isn't trivial. Critical Moments is designed to simplify the integration of a sophisticated targeting system for review prompts (and other optimizations).

Yes, this is where we highlight how awesome our tool is and why using it could be more efficient than developing your own solution. Read on to see if you agree 😉

Over the Air Updates (OTA)

Using OTA updates to adjust the logic for showing app review prompts is crucial for ongoing optimization.

  • Updates are essential for strategies like stopping review prompts on buggy releases or outdated app versions, which aren't known in advance and can't be hardcoded.
  • Updates enable rapid adaptation of your strategy across all client devices. Without OTA, each update would require an additional app update and rollout, slowing down the process considerably.
  • Remote update enables the rapid A/B testing of different strategies (we plan to cover this more in an upcoming blog post!).

Remember, if you go the route of developing your own, your OTA updates should include both the logic and the triggers for when the logic is executed.

Powerful Properties

We've mentioned about 20 properties helpful for app reviews in this blog (like device_battery_level, os_version, has_active_network, etc). Implementing, testing, and maintaining each property individually across OS updates can be demanding. Critical Moments maintains these properties, along with approximately 100 others that could assist in optimizing your review strategies.

User Engagement Database

Critical Moments tracks your users' journey through the app by establishing a private, local database on each device. This allows for over-the-air updates of conditional strings, which can query the frequency and recency of events within the app. We offer powerful built-in events for tracking sessions, app launches, and completed actions. Additionally, you can customize this system with events that are specific to your app's needs.

All this is done without compromising user privacy: the data remains entirely on the device, and conditions are evaluated locally.

Addressing the Root Cause

While avoiding review prompts for users facing issues is beneficial, it's even more effective to address their problems directly. This generally means developing a high-quality app and quickly fixing any bugs. However, sometimes unexpected issues can slip into a release.

With Critical Moments, you can deploy targeted fixes over the air to your apps, preventing negative reviews before they happen.

If users are struggling with an aspect of your app, use in-app messaging to point them to a solution or conditional feature flags to disable the issue for impacted users.

UI letting users know about a service interruption
Proactive notification can prevent negative reviews.

More examples:

  • During a service outage, push native messaging to impacted users over the air. Explain the issue is known, and a solution is on the way.
  • If you discover an issue with dark mode on iOS 15, disable it for impacted devices with a remote conditional feature flag: dark_mode_enabled = !versionLessThan(os_version, '16.0').
  • Notify users who have an app version with a known bug that a new release is available which includes a fix for the issue. This can be done with an in-app banner, which includes a direct link to the update in the App Store.
  • Deliver an important announcement via an in-app banner and/or in-app browser. This can include showing native UI in app versions released before the announcement was known.
  • User blocked permissions? Show a modal or banner explaining the issue, including a deeplink into settings to resolve it.
  • If a user is stuck on a difficult game level, recommend repeating the tutorial or give them a hint.

Get Started

Boosting your app's rating isn't just about collecting as many reviews as possible—it's about smartly navigating when and whom to ask. The tools and strategies we've covered are designed to make this easier, helping you get better feedback and showcase the best of what your app has to offer.

If you're looking to improve your app's reviews, why not try out some of the targeted tactics we've discussed? Start with the easy wins and experiment to see what works best for your app. Remember, every app is unique, and the best strategy for you will depend on your specific audience and their needs.

We're here to help you on this journey, and we'd love to hear how these strategies are working for you. Got a story to share, or maybe a question? Drop us a note, we're all about sharing insights and learning together.

If you're ready to take your app review game up a notch, check out our App Rating Developer Guide for step-by-step instructions on how to implement these ideas.

Other Articles about App Reviews

The Mobile Growth SDK

Critical Moments helps you increase conversions, improve app ratings, and make bugs disappear.