# Guideline 5.6.3 - Developer Code of Conduct: Requesting App Ratings Too Early

**Guideline:** 5.6.3 · **Store:** Apple App Store · **Risk:** low · **Difficulty:** easy · **Typical turnaround:** 1-3 hours

Canonical URL: https://appstorereject.com/rejections/apple/5/guideline-563-developer-code-of-conduct-requesting-app-ratings-too-early

## Description

Apple is taking a hard stance on apps that request an app rating and review on first launch or during onboarding before they have had enough time to understand the app's value. 

Under guideline 5.6.3 (Developer Code of Conduct), ratings and review prompts must only appear after a user has meaningfully engaged with the app, not the moment they open it for the first time.

It seems obvious, but Apple's reasoning is that a rating request shown before a user has experienced the product produces low-quality, uninformed reviews and pressures users who have nothing to base an opinion on yet. 

The Developer Code of Conduct (and the App Store Review Guidelines on ratings and reviews) require the prompt to be a natural, well-timed moment — for example, after the user completes a core task, finishes a level, saves their first item, or experiences some other AHA moment.

Common triggers include: 
- Presenting a star-rating prompt on the very first screen
- Asking for a review inside the onboarding/sign-up flow
- Firing SKStoreReviewController immediately in application(_:didFinishLaunchingWithOptions:) or onAppear of the first view
- Or using a custom rating modal that interrupts the user before they reach any real functionality. 

Reviewers test fresh installs, so a launch-time prompt is caught reliably.

## Common variations

- App shows a rating prompt on first launch
- Review request appears during onboarding or sign-up
- SKStoreReviewController fires immediately on app open
- Custom 'Rate us' modal interrupts the user before they use the app
- Star-rating prompt shown on the first screen before any engagement

## Example rejection email

```
Guideline 5.6.3 - Developer Code of Conduct

Issue Description
The app requests users to rate the app on first launch or during onboarding, before they've had enough time to gain a clear understanding of the app's value. Apps should only ask for a rating after the user has sufficiently engaged with the app.

Next Steps
Revise the app to not request a rating on first launch or during onboarding.

Resources
Learn more about requesting ratings and reviews in the App Store Review Guidelines and the Human Interface Guidelines.
```

## Resolution steps

## Quick Assessment
- **Risk level:** Low
- **Resolution path:** Fix & Resubmit
- **Typical turnaround:** 1-3 hours

## The Fix

01. **Remove the rating prompt from launch and onboarding**
Delete any call to request a review from `application(_:didFinishLaunchingWithOptions:)`, your first view's `onAppear`/`viewDidAppear`, or anywhere in the sign-up/onboarding flow. Nothing should ask for a rating before the user reaches real functionality.

02. **Trigger the prompt after meaningful engagement**
Move the request to a natural success moment: after the user completes a core task, finishes a workout/level/edit, saves their first item, or opens the app several times across multiple days. Let the user experience value first.

03. **Use Apple's official review API**
Call `SKStoreReviewController.requestReview(in:)` (UIKit) or the SwiftUI `requestReview` environment value. The system limits how often the prompt appears and renders it natively — never build a custom star-rating modal that links to the App Store or gates the app.

04. **Never gate functionality behind a rating**
The user must be able to dismiss the prompt and keep using the app. Do not block content, features, or progress until they rate. (That overlaps with a separate 3.2.2 violation.)

05. **Add a simple engagement gate in code**
Track a counter (e.g. sessions ≥ 3, or after the Nth completed action) and only call the review API once the threshold is met. Persist it so the prompt isn't re-attempted every launch.

06. **Test on a fresh install before resubmitting**
Delete the app, reinstall, and walk through first launch and onboarding. Confirm no rating prompt appears anywhere in that flow.

## Prevention
- Wire all review requests through a single helper that enforces the engagement threshold
- Never place a review call in launch, onboarding, or first-view lifecycle methods
- Prefer `SKStoreReviewController` / SwiftUI `requestReview` over any custom modal
- Add 'no rating prompt on first launch' to your pre-submission QA checklist

## Appeal guidance

Appeal only if the rating prompt is genuinely NOT shown on first launch or during onboarding — e.g. it is already gated behind meaningful engagement and the reviewer triggered it through an unusual path. In that case, reply with a screen recording showing the exact engagement steps required before the prompt appears. If the prompt does fire on launch or in onboarding, do not appeal — move it behind an engagement gate and resubmit; this is a quick, clear-cut fix.

## Before / after examples

**Before:** On first launch, the app calls SKStoreReviewController.requestReview() from the root view's onAppear — the user sees a 'Rate this app' prompt before doing anything
**After:** The review request is deferred behind an engagement gate (e.g. after the user completes 3 sessions or finishes their first core task) and uses the system requestReview API, so it never appears during first launch or onboarding
**Why it works:** The issue is timing, not the prompt itself. Deferring the request until the user has experienced the app's value satisfies guideline 5.6.3.

## Common questions

**Can you appeal a 5.6.3 rejection?**

Appeal only if the rating prompt is genuinely NOT shown on first launch or during onboarding — e.g. it is already gated behind meaningful engagement and the reviewer triggered it through an unusual path. In that case, reply with a screen recording showing the exact engagement steps required before the prompt appears. If the prompt does fire on launch or in onboarding, do not appeal — move it behind an engagement gate and resubmit; this is a quick, clear-cut fix.

**How long does this typically take to fix?**

Typical turnaround is 1-3 hours (difficulty: easy). After resubmission, most re-reviews complete within 24-48 hours.

---
*Machine-readable source: https://api.appstorereject.com/api/rejections/detail?slug=guideline-563-developer-code-of-conduct-requesting-app-ratings-too-early*