appeeky/aso-skills

rating-prompt-strategy

When the user wants to improve their app's star rating, increase ratings volume, optimize when and how they prompt users for a review, or recover from a bad rating period.

ソースを見る

使い方

  1. インストールコマンドをコピーし、自分の環境へ導入する前にソースを確認します。
  2. 必要なツール、認証情報、対応環境を原文で確認します。
  3. 入力と成果物を指定し、出力を資料と照合します。
npx skills add https://github.com/appeeky/aso-skills --skill rating-prompt-strategy

開始前の確認

  • 導入にはモデル契約、API枠、ファイルへのアクセス許可は含まれません。
  • スター数や導入数は活動の指標であり、独立した品質・安全性試験ではありません。
リポジトリの原文

見出し、例、コード、表、リンク、参照画像を含む原文を表示しています。

Rating Prompt Strategy

You optimize when, how, and to whom an app shows review prompts — maximizing high ratings while minimizing negative ones. Ratings are an App Store ranking signal and a conversion factor on the product page.

Why Ratings Matter for ASO

  • Search ranking — Apps with higher ratings rank better for competitive keywords
  • Conversion — Rating stars are visible in search results; a 4.8 beats 4.2 at a glance
  • iOS: Rating resets per version (you can request a reset in App Store Connect)
  • Android: Ratings are permanent and cumulative — one bad period is hard to recover

The Core Rule

Only prompt users who have experienced value. Prompting too early produces low ratings. Prompting at a success moment produces 4–5 star ratings.

iOS — SKStoreReviewRequest

Apple's native prompt. Rules:

  • Shows at most 3 times per year regardless of how many times you call it
  • Apple controls the display logic — calling it doesn't guarantee it shows
  • Never prompt after an error, crash, or frustrating moment
  • Cannot customize the prompt UI
swift
import StoreKit

// Call at the right moment
if let scene = UIApplication.shared.connectedScenes.first as? UIWindowScene {
    SKStoreReviewController.requestReview(in: scene)
}

Android — Play In-App Review API

Google's native prompt. Rules:

  • No hard limits, but Google throttles it if called too often
  • Show after a clear positive moment
  • Cannot determine if the user actually rated (privacy)
kotlin
val manager = ReviewManagerFactory.create(context)
val request = manager.requestReviewFlow()
request.addOnCompleteListener { task ->
    if (task.isSuccessful) {
        val reviewInfo = task.result
        val flow = manager.launchReviewFlow(activity, reviewInfo)
        flow.addOnCompleteListener { /* proceed */ }
    }
}

Timing Framework

The Success Moment Trigger

Define 1–3 "success moments" in your app where users are most satisfied:

App TypeGood Prompt MomentsBad Prompt Moments
FitnessAfter completing a workoutAfter skipping a session
ProductivityAfter completing a project/taskAfter a failed save or sync error
GamesAfter winning a level or beating a bossAfter losing or failing
FinanceAfter first successful transactionAfter a confusing error
MeditationAfter completing a sessionOn cold open
ShoppingAfter a successful purchase/deliveryAfter a failed checkout

Session-Based Rules

Only prompt users who meet all criteria:

Criteria to prompt:
✓ Sessions >= 3 (not a first-time user)
✓ Time since install >= 3 days
✓ Has completed [activation event] at least once
✓ No crash in last session
✓ No negative signal (error, cancellation) in current session
✓ Not already rated this version

Pre-Prompt Survey (Recommended)

Before triggering the native prompt, show a single in-app question:

"Are you enjoying [App Name]?"
  [Yes, love it!]   [Not really]
  • "Yes" → trigger SKStoreReviewRequest / Play In-App Review
  • "Not really" → show a feedback form (email or in-app), do not trigger the native prompt

This filters out dissatisfied users before they can rate you 1–2 stars.

Expected improvement: 0.3–0.8 stars on average with a pre-prompt filter.

Version-Gating (iOS)

iOS allows you to reset ratings per version in App Store Connect. Use this strategically:

  • Reset after a major improvement — If you fixed the top-complained issues
  • Do not reset after a controversial change that users disliked
  • After a reset, run an aggressive (but filtered) prompt campaign in the first 7 days
  • Target your most engaged users first (longest session history)

Recovering from a Rating Drop

Diagnosis

  1. Check which version caused the drop — correlate with release dates
  2. Read the 1-star reviews for that period — find the common complaint
  3. Fix the issue in the next release
  4. Reply to every 1–3 star review (see review-management skill)

Recovery Campaign

After the fix is shipped:

  1. Reply to negative reviews: "Fixed in version X.X — please update and let us know"
  2. Some users will update their rating after a reply
  3. Run a prompt campaign targeted at your most loyal users (highest session count)
  4. Do not prompt users who left a negative review

Timeline

Day 0:   Issue identified — hotfix or patch in progress
Day 1–3: Reply to every negative review acknowledging the issue
Day 7:   Fix shipped — reply to previous negative reviews "Fixed in X.X"
Day 8+:  Enable prompt for sessions >= 5, no crash last 7 days
Week 3:  Monitor rating trend — should recover 0.2–0.5 stars in 2–4 weeks

Prompt Frequency

PlatformMaximumRecommended
iOS3× per 365 days (Apple-enforced)1–2× per version
AndroidNo hard limit (Google throttles)1× per 30 days per user

Never show the prompt twice in the same session.

Output Format

Rating Strategy Plan

Current rating: [X.X] ★  ([N] ratings)
Platform: iOS / Android / Both

Success moments identified:
1. [Event name] — fires when [condition]
2. [Event name] — fires when [condition]

Pre-prompt survey: Yes / No
  If yes: "Are you enjoying [App Name]?" → Yes / Not really

Prompt trigger logic:
  Sessions >= [N]
  Days since install >= [N]
  No crash in last [N] sessions
  [Activation event] completed: yes
  Already rated this version: no

Expected outcome: +[X] stars over [N] weeks

Recovery plan (if rating < 4.0):
  1. [Fix] — ship by [date]
  2. [Reply strategy] — [N] reviews to address
  3. [Prompt campaign] — start [date], target [segment]

Related Skills

  • review-management — Respond to reviews to recover rating
  • onboarding-optimization — Fix activation issues that drive 1-star reviews
  • android-aso — Play In-App Review API context
  • retention-optimization — Engaged users give better ratings

タスクに関連する項目

同じリポジトリから

関連する Skills

すべての Skills
appeeky
コミュニティ

android-aso

When the user wants to optimize their Google Play Store listing — title, short description, full description, keywords, ratings, or Play Store-specific features. Use when the user mentions "Google Play", "Android", "Play Store", "Play Console", "short description", "full description indexed", "Google Play ASO", or wants Google Play-specific keyword, creative, or ratings strategy. For iOS App Store optimization, see aso-audit and metadata-optimization.

導入数
5
GitHub Stars
2197
更新日
10月6日
appeeky
コミュニティ

localization

When the user wants to localize their App Store listing for international markets. Also use when the user mentions "localization", "translate my app", "international markets", "expand to new countries", "localize metadata", or "which countries should I target". For keyword research in specific markets, see keyword-research. For metadata writing, see metadata-optimization.

導入数
4
GitHub Stars
2197
更新日
10月6日
appeeky
コミュニティ

review-management

When the user wants to analyze, respond to, or improve their app reviews and ratings. Also use when the user mentions "reviews", "ratings", "negative reviews", "how to get more reviews", "review response", or "my rating is dropping". For broader ASO audit, see aso-audit. For retention issues causing bad reviews, see retention-optimization.

導入数
4
GitHub Stars
2197
更新日
10月6日
appeeky
コミュニティ

web-to-app-funnel

When the user wants to design or optimize the funnel that takes web visitors into installing and onboarding the app — including smart app banners, web-to-app deep links, deferred deep links, web onboarding (Stripe-paid web flow before app install), QR codes, "open in app" CTAs, and the trade-off between paying on web vs in-app. Use when the user mentions "web to app", "smart app banner", "Stripe before app", "web paywall before install", "Branch web SDK", "web funnel for app", "AppsFlyer OneLink

導入数
4
GitHub Stars
2197
更新日
10月6日