# App Reviews

The app-review action launches the system control for asking your users to review your app.

<figure><img src="/files/XPNLZ2QLSNJhguus0PeN" alt="" width="250"><figcaption><p>Apple's SKStoreReviewController, launched from a CM App Review Action</p></figcaption></figure>

{% hint style="success" %}
Our [Developer Guide for Improving App Reviews](/guides/improve-your-app-store-rating.md) has everything you need to quickly get up and running with an optimal app-review prompt.&#x20;

It details optimizations that will improve your averate app store rating including:

* Showing the review prompt at the optimial moment
* Avoiding negative conditions, such as: low battery, no internet connection, user distractions (e.g., being on a call or driving), and more
* Excluding users who are running buggy releases of your app, or are using an interface languages not supported by your app's UI
* Avoiding users who have blocked permissions crucial to your app
* And many more!
  {% endhint %}

### App Review Config

An app review action has actionType of `review_prompt` and an empty actionData.

### Example Configs

#### Simple Example

```
"reviewAction": {
    "actionType": "review_prompt",
    "actionData": {}
}
```

#### Smart Conditional Prompt

This example uses a condition to ask users to rate you at the right moment.&#x20;

It will only ask users who haven't been asked in the last 21 days (504 hours), if they are using a recent app version, their device isn't in a bad state (low battery, no network, etc), and they are running a somewhat recent version of iOS. See our [blog post](https://criticalmoments.io/blog/improve_app_ratings) for more ideas on how to improve when you ask for app reviews.

```
"smartReviewAction": {
    "actionType": "review_prompt",
    "actionData": {},
    "condition": "(
                     eventCount('system_app_review_requested') == 0 || 
                     latestEventTime('system_app_review_requested') < now() - duration('504h')
                  ) 
                 && versionGreaterThan(app_version, '2.2') 
                 && !device_low_power_mode 
                 && has_active_network 
                 && !low_data_mode 
                 && device_battery_level > 0.2 
                 && !versionLessThan(os_version, '17.0')'"
}
```

{% hint style="info" %}
Be aware that iOS will only display the prompt to a user a maximum of three times within a 365-day period. See [Apple's documentation](https://developer.apple.com/documentation/storekit/requesting_app_store_reviews?language=objc) on app reviews for limits and best practices.&#x20;
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.criticalmoments.io/actions-in-app-messaging/app-reviews.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
