How to Get App Store Reviews (Without Getting Banned)
Reviews are the single most visible trust signal on your App Store listing. They affect conversion from impression to install, they affect ASO ranking, and — as one developer discovered the hard way — they gate entry to promotional programs like AppAdvice's Apps Gone Free campaign, which requires at least 5 US reviews with an average above 3 stars before they'll consider featuring you.
If you're sitting at 2 reviews and can't figure out how to get to 5, you're not alone. This guide is the practical playbook: the one iOS API that actually works, when to trigger it, what to do instead of joining a "review exchange" group, and how to get your first US reviews when you don't know anyone in the US.
The Brutal Baseline: Apps Don't Get Reviews Without Asking
Here's the thing nobody wants to hear first: an app with hundreds of thousands of users will still have almost no reviews if you don't prompt for them, and most of the ones you do get will be negative. That's the top-voted observation in a recent r/iOSProgramming thread on exactly this topic, and it lines up with what every App Store Connect analytics page confirms.
Users who love your app have no incentive to open the App Store and type a review. Users who are annoyed do — because complaining is cathartic. If you never ask, your review page skews negative by default. The first fix isn't marketing; it's in-app prompting.
The One API That Works: SKStoreReviewController
Apple gives you exactly one sanctioned way to ask for a review from inside your app: SKStoreReviewController.requestReview() on iOS 14+, or requestReview(in:) on an active UIWindowScene on iOS 16+. It's part of StoreKit. It shows a native modal with a 1–5 star rating and a "Submit" button, and it writes directly to your App Store listing. No routing through Safari, no login flow, no friction.
import StoreKit
// iOS 16+
if let scene = UIApplication.shared.connectedScenes
.first(where: { $0.activationState == .foregroundActive }) as? UIWindowScene {
SKStoreReviewController.requestReview(in: scene)
}
Three things to know about this API:
- Apple rate-limits it to 3 prompts per user per 365 days. If you call it a fourth time, the prompt silently doesn't appear. The OS decides whether to actually show the dialog — you don't.
- You cannot check whether it showed. There's no completion handler telling you "yes it appeared, yes the user rated." You fire and forget.
- It's the only way. Custom "rate us" buttons that open the App Store link also work, but they cost you the instant-rating modal and drop conversion by 5–10x.
Because the budget is three prompts a year, every prompt needs to land at a moment the user is actually happy. Which brings us to the real skill.
Trigger on Happy Moments, Not Launch Events
The mistake everyone makes on their first app is triggering the review prompt on app launch, or on a day counter ("after 3 days"), or on a session counter ("after 5 launches"). These convert terribly. A user who opens your app for the 5th time might be opening it to complain about the bug they hit on the 4th time. You're asking the wrong user at the wrong moment.
The strategy that actually works is called happy-path prompting, and the top-voted advice on that Reddit thread nailed it:
"Implement happy review. When users do something positive that most likely makes them happy, show the App Store rate popup."
Concretely: pick 2–3 events in your app that only fire when a user has succeeded at the core value. Examples:
| App type | Happy moment |
|---|---|
| Todo app | Completed 5 tasks in a single session |
| Fitness app | Finished a workout (not just started one) |
| Photo editor | Exported / shared a finished image |
| Budgeting app | Closed out a month under budget |
| Meditation app | Completed a 10-minute session without pausing |
| Game | Beat level 5, or hit a personal best |
| Note-taking app | Created the 10th note |
| Weather app | Opened the app for the 7th day in a row |
Notice what's missing: "opened the app", "tapped a button", "scrolled the feed". Those aren't happy moments — they're activity. A happy moment is when the user got a win.
Fire SKStoreReviewController.requestReview() right after that moment, while the success animation is still on screen. Not on the next launch. Not on a timer. Right then. You get ~2–3x the star-rating average by doing this alone.
Gate the Prompt with a Health Check
Because you only get three shots per year, waste none of them on users who are obviously going to rate you 1 star. Add a silent health check before the prompt:
func maybeAskForReview() {
// Don't ask crashed-recently users
guard !hadRecentCrash else { return }
// Don't ask users who hit a payment error in the last 7 days
guard !hadRecentPaymentError else { return }
// Don't ask users still in onboarding
guard didFinishOnboarding else { return }
// Don't ask on the first happy moment — wait for the second
guard happyMomentsCount >= 2 else { return }
if let scene = UIApplication.shared.connectedScenes
.first(where: { $0.activationState == .foregroundActive }) as? UIWindowScene {
SKStoreReviewController.requestReview(in: scene)
}
}
This is not manipulation — it's basic UX respect. Users who had a bad experience don't want a modal from you, and asking anyway burns a review credit and generates a 1-star review. The happiest user review page you've ever seen is one where the developer was disciplined about not asking unhappy users.
The Pre-Prompt Pattern (Optional but Effective)
A more advanced variant, used by apps like Overcast and Things, is the pre-prompt: a custom in-app sheet that asks "Are you enjoying [App]?" with "Yes" and "Not really" options. Only users who tap "Yes" get the real requestReview() modal. Users who tap "Not really" get a "Want to tell us what's wrong?" contact form.
This is allowed by Apple as long as the pre-prompt isn't coercive (no "tap Yes to continue", no locked content). It gives you two wins at once:
- Unhappy users get a feedback channel that doesn't become a 1-star review.
- Happy users see the native rating modal with social proof already loaded.
The trade-off is UX friction — you're adding a modal before the modal. If your app is simple and your happy moments are strong, skip it. If your app has a lot of edge cases where users might be mildly unhappy, a pre-prompt saves you from yourself.
The First 5 US Reviews Problem
The Reddit thread that inspired this guide was asking a specific question: "I need 5 US reviews to qualify for Apps Gone Free and I don't know any Americans. How?" The top answer was brutally practical — "Ask your mom, dad, sister, brother, girlfriend, boyfriend, best friend, teacher, barista" — but if none of those people are American, here's a real-world playbook:
1. Ship the in-app prompt first
Most of your first US reviews will come from organic installs. If your app has the prompt wired up correctly, the 5 reviews will arrive naturally within weeks as US users hit happy moments. Don't skip this step in pursuit of shortcuts.
2. Post to r/iOSProgramming App Saturday
Every Saturday the subreddit runs an "App Saturday" thread where developers can post their apps for feedback. It's not explicitly a review-trading thread — Apple would ban participants under Guideline 5.6.2 — but it is a US-heavy audience of fellow devs who routinely install and leave honest reviews on apps they like. Frame your post as "feedback welcome", not "please review me".
3. Product Hunt and Indie Hackers
US-heavy audiences, both free. A well-timed Product Hunt launch (Tuesday 12:01 AM Pacific) can generate a few hundred US installs in 24 hours, a handful of which will convert to reviews if your in-app prompt is firing. Product Hunt's own comment thread isn't a review substitute, but it drives App Store traffic.
4. Your email list
If you've been collecting emails for a waitlist or newsletter, segment by signup IP or domain and find your US subscribers. A single, honest email — "We're live. If you've tried the app and liked it, a review helps more than you'd think" — pulls 3–5% conversion from an engaged list. That's more than enough to clear the 5-review threshold.
5. TestFlight graduates
Your existing TestFlight beta testers already know your app. When you ship 1.0 to the App Store, email the testers (you have their emails from TestFlight invites) and ask them to leave a review on the public listing. Testers are by definition your most engaged users; they convert on asks far better than cold installs.
6. Your own social accounts
Twitter, LinkedIn, Instagram, wherever you're active. "My app is live" posts still pull reviews from real friends. Geography doesn't matter as much as you think — if you're trying to reach the US specifically, post during US business hours and tag US-based communities relevant to your niche (IndieDevs, BuildInPublic, iOSDev).
What Not to Do
Don't buy reviews
You'll find services on Fiverr, Upwork, and various gray-market sites offering "real App Store reviews from US accounts, $5 each." They're scams, bots, or both. Apple's fraud team is very good at spotting them, and the penalty isn't a warning — it's account termination under Guideline 5.6.2. You lose the app, the developer account, and any other apps you've published under it.
Don't join review-exchange groups
Every Reddit thread on this topic eventually turns into comments like "DM me, let's start a group to review each other's apps." These groups look friendly but they're explicitly prohibited under the same guideline, and Apple's algorithms are specifically tuned to detect reviewer networks — accounts that all review the same 10 apps are a classic signal. You get caught within months. The fact that there are a dozen "add me!" replies in every such thread should tell you something: the groups don't work, which is why they keep re-forming.
One commenter in the thread said it directly: "I would be careful with this. It is against Apple policy and they can even block your app."
Don't prompt on first launch
We covered this, but it's worth repeating: first-launch prompts convert at 0.5–1%. Happy-moment prompts convert at 5–15%. You're giving up 10x conversion to save the engineering effort of picking a good trigger.
Don't write fake reviews yourself
Creating a sock-puppet Apple ID to leave a 5-star review on your own app is against the Developer Program License Agreement and, in most jurisdictions, a violation of consumer protection law (FTC endorsement guidelines in the US, similar laws in the EU and UK). Apple catches sock-puppet reviews by device fingerprinting and account creation patterns. Don't.
Measure What You're Actually Seeing
One last thing. Once you start getting reviews, watch them — new reviews surface bugs, feature requests, and competitor mentions faster than any other signal. Most developers check the App Store manually once a week, miss things, and then lose a rating point before they notice. A monitoring tool like AppStoreReview watches your listing across 175+ countries and alerts you the moment a new review appears, with keyword filters so you can triage 1-star complaints before they snowball.
Quick Checklist
-
SKStoreReviewController.requestReview()wired to a real happy moment (not launch, not a timer) - Health check blocks the prompt for crashed, errored, or onboarding users
- Optional pre-prompt if your app has edge cases that might annoy users
- Prompt isn't called more than 3 times per user per year (you're fine — the OS enforces this)
- Email or social outreach plan for your first 5 US reviews if you're targeting promotional programs
- A monitoring tool set up so you catch new reviews (good and bad) within minutes of posting
If you get these six things in place, the review count stops being a mystery. You'll watch it grow one happy moment at a time — which is exactly what Apple designed the system to reward.
Frequently Asked Questions
How many reviews can I request per year from one user?
iOS caps `SKStoreReviewController.requestReview()` at three prompts per user per 365 days. Calling it more often silently fails — the OS simply doesn't show the dialog. Plan your prompts for the moments most likely to convert, not the moments easiest to reach in code.
Is it safe to join a 'review exchange' group with other developers?
No. Apple explicitly prohibits incentivized or coordinated reviews under Guideline 5.6.2, and their fraud detection routinely flags patterns like reviews from accounts that all review the same set of apps. Apps caught in these schemes get removed and developer accounts get terminated. Ask real users instead.
I don't know anyone in the US — how do I get my first 5 US reviews?
The honest answers are: ship the SKStoreReviewController prompt (most of your first US reviews will come from organic installs), post on r/iOSProgramming's App Saturday thread, ship to Product Hunt or Indie Hackers with a 'looking for feedback' angle, and email anyone on your waitlist who signed up with a .edu or US IP. Buying reviews or trading them with strangers is a fast way to get your account banned.
Should I prompt for a review on first launch?
No. First-launch prompts convert poorly and often generate 1-star reviews from users who haven't experienced the app's value yet. Wait for a success moment — a completed task, a saved file, a finished workout — before asking. Apple's own HIG recommends asking after 'the user has experienced enough of the app to form an opinion'.
Can I hide the review prompt if the user seems unhappy?
Yes, and you should. Track a simple happiness signal (completed onboarding, used a feature successfully, didn't hit an error screen) and only call `requestReview()` when that signal fires. This is the core idea behind 'happy path' review prompting and it's what separates a 4.7-star app from a 3.2-star app.