> For the complete documentation index, see [llms.txt](https://developers-apps-in-toss.toss.im/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developers-apps-in-toss.toss.im/documentation/api-and-sdk-en/common/growth/review.md).

# Review request

`requestReview`This is an API that lets you request users to write a review in a mini app.

Android's `In-App Review` API, and iOS's `SKStoreReviewController`It works in a similar way, helping users leave a review naturally at the point when they have sufficiently experienced the value of the service.

**Signature**

```typescript
function requestReview(): Promise<void>;
```

### When should I call it?

`requestReview`It is recommended to call it when the user has sufficiently felt the value of the app.

For example, moments like the following are appropriate.

* Right after successfully completing a core task
* Right after achieving a goal or receiving a reward
* A moment when satisfaction is expected to be high after repeated use

If you call it at this point, users will leave a review while having a positive experience, so you can expect better review quality.

### How it works

`requestReview`When you call it, the review flow may be shown to the user in the following order.

1. The star rating screen is shown first.
2. When the user selects **4 stars or more**the text review writing screen is additionally shown.
3. When the user selects **3 stars or less**If selected, only the star rating is collected without a text review.

### Usage guide

{% hint style="info" %}
**It is not always shown even if you call it**

`requestReview`Even if you call it, the review input screen is not always displayed.

Whether it is shown is determined according to Toss App internal policy, taking user fatigue into account. Therefore, you should not design the UX flow assuming that the review screen will definitely appear.
{% endhint %}

* Please call it only when the user feels satisfied.
* Do not call it repeatedly within the same session.
* Please design it so the user flow continues naturally even if the review request is not shown.
* Do not create a flow that moves to the next screen or grants a reward based on whether the review request is shown.
* Because it may look like nothing happens after the call, separate it from flows that are functionally required.

**Example**

**Request a review after completing the core action**

{% tabs %}
{% tab title="js" %}

```js
import { requestReview } from '@apps-in-toss/web-framework';

async function handleTaskCompleted() {
  await saveMissionResult();

  try {
    await requestReview();
  } catch (error) {
    console.error('Failed to request review:', error);
  }
}
```

{% endtab %}

{% tab title="React" %}

```tsx
import { requestReview } from '@apps-in-toss/web-framework';

function CompleteButton() {
  const handleComplete = async () => {
    await completeGoal();

    try {
      await requestReview();
    } catch (error) {
      console.error('Failed to request review:', error);
    }
  };

  return <button onClick={handleComplete}>Complete</button>;
}
```

{% endtab %}

{% tab title="React Native" %}

```tsx
import { Button, Alert } from 'react-native';
import { requestReview } from '@apps-in-toss/framework';

function CompleteButton() {
  const handleComplete = async () => {
    await completeGoal();

    try {
      await requestReview();
    } catch (error) {
      Alert.alert('Failed to request review', String(error));
    }
  };

  return <Button title="Complete" onPress={handleComplete} />;
}
```

{% endtab %}
{% endtabs %}

### Review check

In the console's 'Ratings and Reviews' menu, `requestReview`you can view both the reviews collected through the review request and the reviews written via the navigation bar's 'Leave a review'.

### Frequently asked questions

<details>

<summary>What happens if you call it for a user who has already left a review?</summary>

For users who have already left a star rating or review, the review UI is not shown and they are skipped.

</details>

<details>

<summary>Is it the same for users who wrote a review via the navigation bar's Leave a review?</summary>

Yes. For users who left a review via the navigation bar's Leave a review, the UI is likewise not shown.

</details>

<details>

<summary>When does the Promise resolve?</summary>

It resolves when the review request is completed. In practice, `Promise`you don't need to wait for it.

</details>

<details>

<summary>Does it resolve even if blocked by the fatigue policy?</summary>

Yes. It resolves normally even when the review UI is not shown due to the fatigue policy.

</details>

<details>

<summary>Can you distinguish between completing a review and dismissing it?</summary>

No. It is intentionally not provided so that functionality or behavior cannot differ based on whether a review was written.

</details>

<details>

<summary>Can you check a specific user's review status?</summary>

No. We do not currently provide a feature to check whether a specific user has written a review via the SDK or console API.

</details>

<details>

<summary>Is there a plan to provide an API like getReviewStatus()?</summary>

No. There are no plans to provide it for the same reason that review-writing results are not returned.

</details>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://developers-apps-in-toss.toss.im/documentation/api-and-sdk-en/common/growth/review.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
