# How and when to ask for App Store ratings without annoying people

By Mika Heinonen (Indie iOS developer and maker of Fledly). Published 2026-10-27, updated 2026-10-27.
Canonical: https://fledly.app/blog/ask-for-app-store-ratings/

> Apple's system review prompt shows at most three times a year, so timing is everything. When to ask, the SwiftUI and UIKit code, what Apple forbids, and how many ratings young top-grossing apps actually have.

**Key takeaways**

- iOS shows the system review prompt **at most three times per app in 365 days**, and people can turn it off for every app. Each prompt is precious.
- Ask **right after a success moment** (a finished workout, a saved document, a completed level), never at launch, during onboarding or in the middle of a task.
- Use **Apple's API only**. Custom review prompts are not allowed, and neither is forcing, rewarding or filtering ratings.
- Add a permanent **"Rate this app" link** in Settings with `?action=write-review`. It works even when the system prompt doesn't.
- You don't need thousands: a quarter of the young apps on the US Top Grossing charts have **fewer than 44 ratings**. But zero ratings is a visible hole on your product page.

Ratings do two jobs for a small app. They are the first thing people see next to your icon in search results, so they decide whether someone taps. And they are one of the few signals of real usage Apple can see. Yet many indie apps launch with no review prompt at all, or with one that fires on the second launch and collects irritated one-star taps.

The fix is a few lines of code and one decision: *when* to ask.

## How the system review prompt works

Since iOS 10.3, apps ask for ratings with a system dialog. People can tap a star rating without leaving your app and optionally write a review. Apple controls whether the dialog actually appears:

- If the person hasn't rated your app on this device, the prompt shows **at most three times within a 365-day period**.
- If they have already rated it, the prompt can only appear again for a **new app version**, and only when **more than 365 days** have passed since their last review.
- People can turn off review requests for **all apps** in Settings.
- Calling the API doesn't guarantee a prompt. Apple says plainly that the request "may not present an alert", which is why it shouldn't be wired to a button.

When testing: during development (running from Xcode), the prompt **always** appears. In **TestFlight builds it never appears**, so don't conclude from a beta that your code is broken.

## When to ask

Apple's Human Interface Guidelines put it this way: "Ask for a rating only after people have demonstrated engagement with your app or game." In practice that means three rules.

1. **After a success, not during work.** Ask at the end of something the person wanted to finish: a saved workout, an exported file, a completed lesson. People rate the feeling they have at that moment.
2. **After repeated value.** One good session is luck. Apple's own sample code waits until someone has completed the main task **at least four times** and hasn't been asked for the current version yet.
3. **After a short pause.** Apple's sample delays the prompt by **two seconds** after the success screen appears, so it doesn't cover the result the person was looking at.

*Figure: A good prompt schedule for a workout app. Skip launch, onboarding and the middle of a task; ask after repeated success, and space later prompts weeks apart (Apple suggests "at least a week or two between requests"). iOS allows three prompts per app in 365 days.*

What to avoid is just as concrete:

- **First launch and onboarding.** People haven't formed an opinion yet. Apple warns they "may even be more likely to leave negative feedback".
- **Right after an error, a paywall or a permission dialog.** You would be asking someone who is annoyed.
- **In response to a tap.** A "Rate us" button that calls the system prompt may do nothing, because the system may decide not to show it. Use the App Store link for buttons (see below).

## The code

### SwiftUI (iOS 16 and later)

```swift
import StoreKit
import SwiftUI

struct WorkoutDoneView: View {
    @Environment(\.requestReview) private var requestReview
    @AppStorage("completedWorkouts") private var completed = 0
    @AppStorage("lastVersionPrompted") private var lastVersionPrompted = ""

    var body: some View {
        SummaryView()
            .task {
                completed += 1
                let version = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as? String ?? ""
                guard completed >= 4, version != lastVersionPrompted else { return }
                try? await Task.sleep(for: .seconds(2))
                lastVersionPrompted = version
                await requestReview()
            }
    }
}
```

### UIKit

`SKStoreReviewController.requestReview(in:)` is deprecated as of iOS 18. On iOS 16 and later, use StoreKit's `AppStore.requestReview(in:)` with the current window scene:

```swift
import StoreKit

if let scene = view.window?.windowScene {
    AppStore.requestReview(in: scene)
}
```

### A permanent "Rate this app" link

Put a row in Settings that opens your product page straight on the review form. Replace the number with your App Store ID (it's in your product page URL):

```swift
let url = URL(string: "https://apps.apple.com/app/id1234567890?action=write-review")!
openURL(url)
```

This always works, doesn't count against the three prompts, and is the right thing to wire to a button.

## What Apple doesn't allow

The rules are short and enforced:

- **Custom review prompts.** App Review Guideline 5.6.1: "Use the provided API to prompt users to review your app … and we will disallow custom review prompts."
- **Forcing a rating.** Guideline 3.2.2: apps "must not force users to rate the app, review the app … in order to access functionality, content, or use of the app."
- **Paid, incentivized or filtered feedback.** Apple's guidelines say developers who "manipulate reviews, inflate your chart rankings with paid, incentivized, filtered, or fake feedback" risk being expelled from the Developer Program. Offering a reward for a rating is out.

**Note**

**What about "Are you enjoying the app?" pre-prompts?** Many apps first ask a yes/no question and only show the system prompt to people who say yes, sending the rest to a feedback form. Apple's guidelines name "filtered" feedback as manipulation, so this pattern is a risk we don't recommend. A feedback link that is always available in Settings gets you the same bug reports without the risk.

## How many ratings do you actually need?

Less than you might think, but more than zero. We looked at the 357 non-game iPhone apps under two years old that were on the US Top Grossing charts on October 26, 2026:

*Figure: Total US ratings of young apps that already earn. The spread is huge: some earn with almost no ratings (often a sign of paid installs), others gain hundreds a month.*

A quarter of those apps earn with **fewer than 44 ratings**, so a small rating count doesn't stop an app from making money. The median young earner has **718**, and gains about **72 new ratings a month**. Apps that get there fastest usually combine a prompt at a natural success moment with a product people use every day.

If your app has **zero** ratings, though, its search result shows no stars at all next to competitors with thousands. That is the gap the first prompt closes.

## Reset or keep your rating?

When you release a new version, App Store Connect lets you reset your summary rating. The product page then says the rating was recently reset until enough people have rated the new version. Apple's own guidance is to weigh this carefully, because a reset "tends to result in having fewer ratings overall, which can discourage some people from downloading your app."

Reset only when a version truly fixes what the old ratings complain about, for example a crash that caused most one-star reviews. Otherwise keep the history.

## Answer your reviews

You can respond to every written review in App Store Connect. The reviewer is **notified** and can update their review, and your answer stays public on the product page. A short, specific reply to a one-star review about a bug you have fixed ("Fixed in 2.3, thanks for the report") is one of the few ways to turn a bad rating into a better one.

Read the bad reviews of your competitors too. Their most common complaint is your positioning. Fledly's idea cards list the most common complaints about the competing apps for this reason.

## Frequently asked questions

### How many times can an iOS app ask for a rating?

The system shows the review prompt at most three times per app within a 365-day period for a person who hasn't rated it. After someone rates the app, the prompt can only return for a new version after more than 365 days. Your code can call the API more often, but the system decides whether anything appears.

### Why doesn't my review prompt show up?

The most common reasons: you are testing a TestFlight build (the prompt never appears there), the person has turned off review requests in Settings, the three-per-year limit is used up, or the person already rated the app. In a development build run from Xcode, the prompt always appears.

### Can I design my own rating dialog?

No. App Review Guideline 5.6.1 requires the provided API and disallows custom review prompts. You can add your own button that opens the App Store review page with `?action=write-review`.

### Can I reward users for leaving a rating?

No. Apple's guidelines name paid, incentivized and filtered feedback as manipulation, and forcing users to rate the app to unlock features is explicitly unacceptable.

### When is the best time to ask for a review?

Right after a person completes something meaningful for the second, third or fourth time, with a short pause after the success screen. Never at first launch, during onboarding, in the middle of a task, or right after an error or paywall.

## Sources

- Apple Developer: [Requesting App Store reviews](https://developer.apple.com/documentation/storekit/requesting-app-store-reviews) (sample code, three prompts per 365 days)
- Apple Developer: [SKStoreReviewController.requestReview(in:)](https://developer.apple.com/documentation/storekit/skstorereviewcontroller/requestreview(in:)) (development and TestFlight behaviour, write-review link)
- Apple Human Interface Guidelines: [Ratings and reviews](https://developer.apple.com/design/human-interface-guidelines/ratings-and-reviews)
- Apple: [App Review Guidelines](https://developer.apple.com/app-store/review/guidelines/) (3.2.2, 5.6.1, 5.6.3)
- App Store Connect Help: [Ratings and reviews overview](https://developer.apple.com/help/app-store-connect/monitor-ratings-and-reviews/ratings-and-reviews-overview)
- Fledly data: US Top Grossing charts (overall and by category), October 26, 2026; ratings from the US App Store.
