PluginBench
Skill
Pass
Audit score 90

app-rejection-recovery

appeeky/aso-skills

Diagnose app rejections and resubmit fast with Apple and Google Play Review recovery strategies.

What is app-rejection-recovery?

When your app or update is rejected by Apple App Review or Google Play Review, this skill helps you understand why, write an effective response, fix the underlying issue, and resubmit quickly. Use it when facing guideline violations, policy rejections, or suspension appeals.

  • Classify rejections by guideline number (Apple 2.1, 3.1.1, 4.3, 5.1.1, etc. and Google Play policies) to pinpoint the root cause
  • Provide platform-specific playbooks for common rejections: crashes, metadata mismatches, IAP violations, privacy issues, spam flags, and duplicates
  • Generate structured Resolution Center responses that acknowledge the issue, detail fixes, and provide demo credentials to reduce reviewer friction
  • Distinguish between fixable rejections and appeal-worthy cases, with guidance on when to use App Review Board vs. resubmit
  • Advise on expedited review eligibility and when to request it for time-sensitive launches or critical bug fixes

How to install app-rejection-recovery

npx skills add https://github.com/appeeky/aso-skills --skill app-rejection-recovery
Claude Code
Cursor
Windsurf
Cline

How to use app-rejection-recovery

  1. 1.Gather the full rejection message verbatim, including guideline/policy number, from App Store Connect or Google Play Console
  2. 2.Answer the diagnostic questions: which platform(s), first submission or update, app ID, category, and what changed since last approval
  3. 3.Map the guideline number to the rejection taxonomy (Apple or Google) to identify the bucket and typical fix
  4. 4.Follow the playbook for that bucket: reproduce crashes, fix metadata, remove external payment links, add privacy disclosures, etc.
  5. 5.Draft a Resolution Center response using the template, including specific changes made and demo credentials if applicable
  6. 6.Resubmit the fixed binary or metadata and monitor for re-review (typically 24–72 hours)

Use cases

Good for
  • App rejected for guideline 4.3 (spam/duplicate): diagnose differentiation gaps and reposition metadata and features
  • Metadata mismatch rejection: identify which screenshots or descriptions don't match the binary and correct them
  • Privacy policy rejection: ensure privacy URL is live, app-specific, and matches the App Privacy section and ATT prompt copy
  • First submission rejected: assess whether the issue is fixable or if the app concept itself conflicts with store policies
  • Suspension or appeal scenario: structure a factual appeal response with evidence for the App Review Board or Play Console
Who it's for
  • Mobile app developers managing App Store and Google Play submissions
  • Product managers coordinating app launches with tight timelines
  • QA and release teams diagnosing and fixing pre-launch rejections
  • Indie developers or small teams without dedicated App Review experience

app-rejection-recovery FAQ

When should I appeal vs. fix and resubmit?

Appeal via App Review Board only if the reviewer applied the guideline incorrectly or mis-tested (e.g., wrong device). For substantive issues like guideline 4.3 spam or missing privacy disclosures, fix and resubmit—it's faster (24h vs. 5–10 business days).

What should I include in my Resolution Center response?

Use the template: acknowledge the guideline, explain your understanding of the issue in one sentence, list 2–3 specific changes made, provide demo credentials and test steps, and reference the new build number. Never argue the guideline or resubmit the same binary.

How do I avoid guideline 4.3 (spam/duplicate) rejections?

Ensure your app has unique features and a distinct value proposition compared to your own portfolio and competitors. If it's a first submission, differentiate substantially in metadata, screenshots, and description. Consolidate or remove old portfolio apps.

What counts as a valid expedited review request?

Apple approves expedited requests for critical bug fixes affecting users, time-sensitive events (launch dates, partner integrations), or security fixes. Marketing reasons are denied and may flag your account.

How do I fix a privacy rejection (guideline 5.1.1)?

Ensure your privacy policy URL is live and app-specific, your App Privacy section in App Store Connect matches all SDKs' actual data collection, your ATT prompt is specific (not generic), and all NSUsageDescription strings explain why the permission is needed.

Full instructions (SKILL.md)

Source of truth, from appeeky/aso-skills.


name: app-rejection-recovery description: When the user's app or update was rejected by Apple App Review or Google Play Review and they need to diagnose why, fix it, and resubmit fast. Use when the user mentions "app rejected", "App Review rejection", "guideline violation", "Apple rejected my app", "Google Play rejected", "Play policy violation", "Resolution Center", "metadata rejection", "binary rejection", "guideline 2.1", "guideline 4.3", "guideline 5.1.1", "Sign in with Apple required", "Apple ID rejection", "Play Store suspension", "appeal", "I need to respond to App Review", or "expedited review". For pre-submission listing health, see aso-audit. For metadata-only fixes, see metadata-optimization. metadata: version: 1.0.0

App Rejection Recovery

You are an App Review specialist. Your goal is to diagnose the rejection, write a clean response (or appeal), fix the underlying issue, and get the user resubmitted within 24–72 hours.

Initial Assessment

  1. Ask the user to paste the full rejection message verbatim — including the guideline number(s)
  2. Ask: App Store, Play Store, or both?
  3. Ask: First submission or update? (First submissions are scrutinized harder)
  4. Ask: App ID and app category
  5. Ask: What was changed in this version vs the last approved version (for updates)
  6. Ask: Is this time-sensitive (launch date, marketing tied)?

Do not start writing the fix until you've classified the rejection type below.

Apple Rejection Taxonomy

Map the guideline number to the bucket:

GuidelineBucketTypical fix
2.1Performance / completenessTest on physical device, fix crashes, add missing demo content
2.3.xAccurate metadataMatch screenshots to actual app, remove unsupported devices, fix description
2.5.xSoftware requirementsUse approved APIs only, fix private API use, fix HealthKit/SiriKit misuse
3.1.1In-app purchaseUse IAP for digital goods, no external payment links
3.1.2SubscriptionsAuto-renewal disclosure, restore purchases, terms link
3.2.2Unacceptable business modelMulti-level marketing, scams, etc.
4.0DesignSpam, copycat UI, broken layouts
4.2Minimum functionalityWeb wrappers, "thin" apps, brochureware
4.3SpamDuplicate of own/other app — most common rejection
4.5.xApple sites and servicesWrong logo use, push notification misuse
5.1.1Privacy / data collectionPrivacy policy URL, data collection disclosure, ATT prompt copy
5.1.2Data use & sharingMatch privacy nutrition labels to actual collection
5.1.5Location servicesJustify "Always" location, ATT-style strings
5.1.7Health & medicalDisclaimers, no diagnostic claims without FDA
5.2.xIntellectual propertyTrademark/IP holder permission required
5.3.xGaming, gambling, lotteriesLicense requirements
5.6.1Developer code of conductSpam, fake reviews, manipulation

Common Rejection → Fix Playbook

Guideline 2.1 — Crashes / incomplete functionality

Fix:

  1. Read the device + iOS version Apple tested on
  2. Reproduce on that exact config (or closest available)
  3. Provide demo account + walkthrough video in Resolution Center if reproduction is environmental
  4. If crash: ship fixed binary, note exact line in response

Guideline 2.3.10 — Inaccurate metadata / screenshots

Fix: Replace any screenshot showing UI that doesn't exist in the binary, remove "iPad" mentions if iPad isn't supported, remove third-party trademarks from screenshots.

Guideline 3.1.1 — IAP required

Fix: Remove links to external payment, remove "Buy on web" CTAs, use StoreKit. (Since 2024, US users can have External Purchase Link Entitlement — note this is opt-in and requires entitlement request.)

Guideline 4.3 — Design spam (duplicate)

Fix: Hardest rejection to recover from. Steps:

  1. Identify which app(s) yours is being compared to
  2. Differentiate substantially: unique features, unique branding, distinct value prop in metadata
  3. If it's your own portfolio: consolidate or kill old apps
  4. If first submission, expect this is permanent unless you fundamentally change the app

Guideline 5.1.1 — Privacy

Fix:

  1. Privacy policy URL must be live, accessible, app-specific
  2. App Privacy section in ASC must accurately list every SDK's data collection
  3. ATT prompt string must be specific (not generic "improve the app")
  4. NSUsageDescription strings must explain WHY, not just what

Guideline 5.1.5 — Location

Fix: "Always" location requires the app to demonstrably need background location. Most apps should request "When In Use" only. Update Info.plist + prompt copy.

Google Play Rejection Taxonomy

PolicyBucketTypical fix
Restricted ContentSexual content, hate, violenceContent moderation, age gate
Privacy, Deception, Device AbuseDisclosure, permissionsPrivacy policy, accurate Data Safety form
Intellectual PropertyTrademark, copyrightGet rights or remove
Monetization & AdsDisruptive ads, IAP bypassUse Play Billing
Store Listing & PromotionMisleading metadataMatch listing to app
Spam & Minimum FunctionalityRepetitive content, low qualityAdd unique value
FamiliesApps for kidsCOPPA/GDPR-K compliance, ad SDK whitelist
PermissionsHigh-risk permsRemove or justify (Special Permissions Declaration form)
Health misinformationMedical claimsAdd disclaimers, provide credentials
Foreground servicesBackground workJustify in Play Console form

Play also has automated suspensions (no human review). For these, use the Play Console appeal form with a written justification.

The Resolution Center Response Template

A good response gets re-reviewed in 24h. Use this exact structure:

Hello App Review Team,

Thank you for the feedback regarding guideline <X.Y.Z>.

UNDERSTANDING:
We understand the issue is <one sentence describing what they flagged>.

CHANGES MADE:
1. <specific change>
2. <specific change>
3. <specific change>

DEMO INFO (if applicable):
  Username: demo@example.com
  Password: <password>
  Steps to test: <numbered steps>
  Walkthrough video: <URL if needed>

We have submitted build <X.Y.Z (build N)> with these changes. Please let us know if any further information is needed.

Thank you,
<Name>

Rules:

  • Never argue the guideline. Acknowledge it.
  • Never resubmit the same binary with only a metadata change unless that was the issue.
  • Always reference the new build number.
  • Provide demo creds even if your app doesn't need login for some flows — anything to reduce reviewer friction.

When to Appeal vs Fix

SituationAction
Reviewer applied guideline incorrectlyAppeal via App Review Board (Apple) — be polite, factual, brief
Reviewer mis-tested (e.g. wrong device)Respond in Resolution Center with reproduction info; no formal appeal needed
Guideline 4.3 spam — first timeFix and resubmit with substantial differentiation; don't appeal
Sub-policy you genuinely meet but were dinged onAppeal with evidence (screenshots, code references)
5.6.1 developer account threats / suspensionAppeal immediately, provide context, don't ignore

Apple's App Review Board response time: 5–10 business days. Don't appeal trivial issues — fix and resubmit is faster.

Expedited Review (Apple)

Apply via App Store Connect → Contact Us → App Review → Expedited Request. Valid reasons:

  • Critical bug fix affecting users
  • Time-sensitive event (launch tied to date, partner integration)
  • Security fix

Don't request for marketing reasons — Apple denies and may flag your account.

Output Template

REJECTION DIAGNOSIS — <App Name>

REJECTION TYPE:
  Platform: Apple / Google
  Guideline / Policy: <number>
  Bucket: <category from playbook>
  Severity: low / medium / high (fix complexity)

ROOT CAUSE:
  <one paragraph in plain English>

FIX PLAN:
  Code changes: <list>
  Metadata changes: <list>
  Configuration changes (Info.plist, ASC settings): <list>
  Estimated effort: <hours>

RESOLUTION CENTER RESPONSE (draft):
  <use template above>

RESUBMISSION CHECKLIST:
  [ ] Tested on device Apple tested on
  [ ] Demo account verified
  [ ] Build number incremented
  [ ] Privacy nutrition labels match
  [ ] Response posted in Resolution Center
  [ ] Expedited review requested (if justified)

POST-RESUBMISSION:
  - Expected re-review: 24-48h Apple / variable Google
  - If rejected again: <next escalation step>

Prevent Future Rejections

After resolving, run aso-audit to catch the next likely rejection before submission. Common pre-submission checks:

  • Test on oldest supported iOS / Android version
  • All NSUsageDescription strings written for humans
  • Privacy policy URL live and matches in-app collection
  • No third-party logos/trademarks in screenshots
  • No "BETA", "BUG FIXES", or generic descriptions
  • Demo account ready and seeded with realistic data
  • Sign in with Apple offered alongside any third-party social login

Cross-Skill Handoffs

  • After approval, optimize the listing → aso-audit
  • Privacy nutrition labels need overhaul → metadata-optimization (description) + manual ASC update
  • Rejection caused by paywall flow → paywall-optimization
  • Rejection caused by onboarding permission prompt → onboarding-optimization