Link copied!
Guides··Updated ·10 min read

How to Ask for an App Store Review

Call the system prompt after a finished job, not on launch. A receipt scanner’s third successful scan is the moment. The pre-question gate is the risk.

Receipt scanner phone after a third successful scan with the system review sheet waiting off to the side

Quick answer

How should you ask for an App Store review?

Call the system review prompt after a completed job, not on launch. For a receipt scanner, the third successful scan is the moment. The system still decides whether the sheet appears, at most three times in a 365-day period. Do not put an “are you enjoying the app?” gate in front of the sheet, and do not pay for reviews.

On this page

A receipt scanner that asks for a review on first launch is begging a stranger who has not scanned anything. The same app, asking after the third receipt that actually saved, is talking to someone who just finished the job. Apple’s sample does the second thing. It waits until a multi-step process is done, then calls the system prompt. The number of completions in the sample is arbitrary. Three successful scans is a reasonable line for this app because a scan is the job.

The rules live on Requesting App Store reviews . The system displays the review prompt a maximum of three times within a 365-day period. You pick the moment. The system can still decline to show the sheet, and people can turn requests off on the device. What the stars do to search is a different question, covered in do ratings change App Store search rank. Public replies are in how to reply to App Store reviews.

Use the system prompt, not a homemade star dialog

SwiftUI reads the requestReview environment value and calls it as a function. That is the current way to present the system sheet. Older code calls the StoreKit review request by name. Either way, you are asking the system to present Apple’s sheet. You do not draw the stars yourself, you do not skin the card, and you do not decide that this user is “a promoter” before the sheet exists.

Apple’s sample delays the call on purpose. The prompt appears from a “process completed” scene, not from a button whose only job is Rate. The sample also skips the prompt if this bundle version already asked, and it waits until the person has finished the process several times. Their sample uses four completions and says the count is arbitrary. Copy the shape, not the integer: a finished job, a version you have not already prompted, and a short pause so the sheet does not land on top of the save animation.

The receipt scanner: third successful scan

Count successful saves, not app opens. A successful scan means the camera returned a total, the person confirmed it, and the receipt landed in the list. Failed captures, blurry retakes, and the empty-state tutorial do not count. On the third success, if this version has not already asked, wait a couple of seconds on the saved-receipt screen and then call requestReview.

When a receipt scanner should and should not call the system prompt
MomentCall requestReview?Why
Cold launch, including the second dayNoApple says not to ask immediately on launch
First successful scanNoThey finished one job. Let the habit exist
Third successful scan, new versionYesEnd of a completed sequence, and this version has not asked
Tap on a Rate button in settingsNo — use the write-review linkA button that calls the API fails silently when the system suppresses the sheet
Right after a paywall declineNoThat is an interruption, not a finished scan

The prompt belongs after the third saved receipt on a version you have not already asked about. Launch, the first scan, a Rate button, and a failed purchase are the wrong moments.

Store two values on device, the way the sample stores them: how many successful scans have completed, and the last bundle version that prompted. If the count is at least three and the version string is different, present the request, then write the current version down so the same build does not ask again. Days can pass between scans. That delay is a feature. Someone who has filed three real receipts can say whether the total was right.

Why the enjoyment gate is the risky part

The pattern looks polite. A card asks “Are you enjoying the app?” Yes opens the system sheet. No opens a mail compose to you. You never “bother” an unhappy person, and your average only hears from fans. Review teams already know this shape. It is a known rejection pattern: you showed the system prompt only on the happy path and hid the rest. It is also a bad product move. The people who would have tapped one star are the people whose notes name the bug.

Apple’s guidance says to avoid requesting a review as the result of a user action, and to make the request at the end of a sequence they successfully complete. A pre-question is a user action whose only purpose is to filter the prompt. Google’s in-app review guide is explicit about the same trick: the app should not ask whether they like the app, or whether they would give five stars, before or while presenting the card. You do not need a loophole. You need the third scan.

Incentives sit in the same bin. A free month, a coffee card, or “rate us and we will turn export on” is not a request. It is a payment for a rating. Do not do it. If someone wants to write on their own terms, put a row in settings that opens the product page with the write-review action. Apple’s sample uses https://apps.apple.com/app/idYOURAPPSTOREID?action=write-review with your real App Store ID. That link is for a person who chose to write. It is not a second copy of the system quota.

Google Play has its own in-app review API

Android is not “show a stars dialog you drew.” Play’s In-App Review API lets you trigger a Play card without leaving the app. Google enforces a time-bound quota and does not publish the number, and the number can change. Calling the flow often, including more than once in a short period such as less than a month, might not show a dialog. Do not hang a button on that call. If the quota hides the card, the button looks broken. Send the person to the store listing instead.

Play’s guide also says to trigger the flow after the person has used the app enough to have an opinion, and not to ask a predictive question first. The receipt scanner can use the same third successful scan on Android. Reply tactics are different on Play, because the console reply, the public notification, and partial rollouts are their own mess. Those live in the Google Play review reply post, not in this prompt.

What a prompt cannot fix

Three clean scans will not rescue a 1-star cluster about a wrong total. If the parser drops the tax line, the people who rate you from the system sheet will say so, and they should. Fix the parser, ship the version, and reply on the reviews that named it. Leave the prompt out of the paywall too. The job was the scan. A person who just closed a purchase screen is in a different scene.

Some people look for a place to review and get angry when they cannot find it. Give them one. A settings row labeled Review on the App Store opens the write-review URL. It does not call requestReview. You will not burn the three-in-365 cap on someone who already decided to write, and you will not show a dead button when the system suppresses the sheet. Keep the copy plain. “Review” is enough. “Rate 5 stars” is a nudge you do not need.

Ask after the third saved receipt

Wire this once per platform. The scanner’s job is the saved receipt. The prompt is a side effect of the third one, on a version that has not asked yet.

  1. Count successful saves only

    Increment a counter when a receipt is confirmed and stored, not when the camera opens and not when the app becomes active. Keep the counter on device. A crash during capture is not a success. If you count failures, you will ask a person whose last experience was a blurry photo and an error, which is the opposite of a completed sequence.

  2. Remember the version you already asked

    Store the bundle version string the last time you called the prompt. Apple’s sample does this so the same version does not ask twice. Compare it to the current version before you call. A person who scanned three receipts on 2.1 should not see the sheet again until a later version, even if they scan a fourth receipt the same afternoon.

  3. Wait on the saved screen

    When the count reaches three and the version is new, stay on the receipt-saved screen for a short pause, on the order of a couple of seconds, then call requestReview. The pause is there so the sheet does not cover the moment they are checking the total. Do not call from the shutter button, from launch, or from a custom yes-or-no card.

  4. Skip the enjoyment question

    Delete any “Are you enjoying the app?” step that routes only the yes branch to the system sheet. That gate is a known rejection pattern, and Play’s in-app review guide forbids the same opinion question before its card. If you want unhappy notes, read the reviews you already have and reply there. Do not pay, gift, or enable a feature in exchange for a rating.

  5. Add a write-review row for people who go looking

    In settings, open Apple’s write-review URL with your numeric App Store ID and the action=write-review query. That is a deep link the person chose. It is separate from the system prompt and its three-in-365 cap. On Android, do not bind a button to the in-app review call, because the quota can hide the card. Send that settings row to the Play listing instead.

Key takeaways

  • Call the system prompt after the third successful scan, not on launch.
  • The system shows the sheet at most three times in 365 days, and it can show nothing.
  • A custom enjoyment gate before the sheet is a known rejection pattern.
  • No incentives. A settings row should open the write-review link, not the API.
  • Play has an in-app review API with an unpublished quota. Do not ask “do you like the app?” first, and do not hang the call on a button.

Frequently asked questions

Can I call the review prompt every time someone scans a receipt?

You can call it. The system will not show it that often. Apple documents a maximum of three review prompts in a 365-day period, and people can disable requests entirely. Extra calls do not create extra sheets. They also train you to fire the prompt at bad moments. Ask once per version, after the third successful save, and then wait for the next build.

Is a “Do you like the app?” question allowed if I still show Apple’s sheet?

Putting that question in front of the sheet, and opening the sheet only for the yes branch, is a known rejection pattern. It filters who is allowed to rate. Apple’s guidance says to ask at the end of a completed sequence and to avoid requesting a review as the result of a user action. Google’s in-app review guide separately tells you not to ask whether they like the app before the Play card.

What should a Rate button in settings do?

Open the write-review link, not requestReview. Apple’s sample builds https://apps.apple.com/app/idYOURAPPSTOREID?action=write-review. A button that calls the system API looks broken when the person has already hit the cap or turned prompts off, because nothing appears. The link is for someone who already decided to write. Keep the label neutral. Do not say “leave 5 stars.”

Does the same timing work on Google Play?

The moment can match: after the third saved receipt, not on launch. The API is Play’s in-app review flow, and Google does not publish the quota. Calling it repeatedly may show nothing. Do not ask an opinion question first, and do not attach the call to a button. How you answer the reviews that arrive is a Play Console job, including the fact that a reply is public and that people on a partial rollout can still review.

Will more prompts raise my search rank?

Apple does not publish a ranking weight for star ratings. More sheets are not a rank tactic, and you cannot force more than three displays in a year anyway. A low average still changes who downloads, which you can see in conversion rate. Get the scanner’s totals right, ask after a real save, and reply to the reviews that name a bug. The prompt is a timing problem, not a growth hack.

Free tools that help here

Reviews follow a clear page.

The prompt only helps if the product page already shows the scan. AppGrowthKit turns real screens into store frames you can ship with the version.

Try AppGrowthKit for Free