Comprehensive App Store review preparation guide covering rejections, privacy manifests, IAP rules, and compliance checklists.
Works with
Covers top rejection reasons (incomplete apps, inaccurate metadata, private API usage) with prevention strategies and real examples of approved vs. rejected content
Detailed privacy manifest requirements with reason codes, ATT implementation patterns, and cross-reference checks between nutrition labels and actual data collection
In-App Purchase and StoreKit r
AI-first code editor with Composer
Before installing skills in Cursor, ensure your development environment meets these requirements:
node --versionapp-store-reviewExecute the skills CLI command in your project's root directory to begin installation:
Fetches app-store-review from dpearson2699/swift-ios-skills and configures it for Cursor.
The CLI shows a list of agents. Use arrow keys and space to select Cursor:
Confirm successful installation by checking the skill directory location:
Restart Cursor to activate app-store-review. Access via /app-store-review in your agent's command palette.
We perform automated surface-level scans (Gen AI Scanner, Socket, Snyk) during installation. These checks detect common vulnerabilities but do not guarantee complete security. Always review skill source code and verify the publisher's reputation before production use.
Skills execute code in your environment. Always review source, verify the publisher, and test in isolation before production.
Submit your Claude Code skill and start earning
Create detailed user stories, acceptance criteria, and feature specs
Example
Generate user stories for 'password reset feature' with acceptance criteria, edge cases, and test scenarios
Reduce spec writing time by 50%, ensure comprehensive coverage
Research competitors, compare features, identify gaps
Example
Analyze 5 competitor products, create feature comparison matrix, suggest differentiation opportunities
Complete competitive research in 2 hours instead of 2 days
Evaluate features using frameworks (RICE, ICE, Kano) and create prioritized backlogs
Example
Score 20 feature ideas using RICE framework, generate prioritized roadmap with rationale
0
total installs
0
this week
372
GitHub stars
0
upvotes
Run in your terminal
0
installs
0
this week
372
stars
Guidance for catching App Store rejection risks before submission. Apple reviewed 7.7 million submissions in 2024 and rejected 1.9 million. Most rejections are preventable with proper preparation.
Use this SKILL.md for quick guidance on common rejection reasons and key policies. Use the references for detailed checklists and privacy manifest specifics.
The app must be fully functional when reviewed. Apple rejects for:
Prevention:
Apple rejects apps that are too simple or are just websites in a wrapper:
This is the fastest-growing rejection category (Guideline 5.1.1). A privacy manifest is required if your app or any of its dependencies uses certain categories of APIs.
See: references/privacy-manifest.md for the full structure, reason codes, and checklists.
IAP rules are strict and heavily enforced.
All digital content and services must use Apple's In-App Purchase system:
Transaction.currentEntitlements or server-side validationSee references/review-checklists.md for the full HIG checklist (navigation, modals, widgets, system feature support, launch screen, empty states). This section stays intentionally brief to keep SKILL.md concise.
If your app tracks users across other companies' apps or websites, you must:
ATTrackingManager.requestTrackingAuthorization before any tracking occursNSUserTrackingUsageDescription explaining what tracking is used forIf you do not track users across apps or websites, do not show the ATT prompt. Apple rejects unnecessary ATT prompts.
import AppTrackingTransparency
func requestTrackingPermission() async {
let status = await ATTrackingManager.requestTrackingAuthorization()
switch status {
case .authorized:
// Enable tracking, initialize ad SDKs with tracking
break
case .denied, .restricted:
// Use non-personalized ads, disable cross-app tracking
break
case .notDetermined:
// Should not happen after request, handle gracefully
break
@unknown default:
break
}
}
Timing: Request ATT permission after the app has launched and the user has context for why tracking is being requested. Do not show the prompt immediately on first launch.
For apps distributed in the EU:
Every entitlement must be justified. Apple reviews these closely:
| Entitlement | Apple Scrutiny |
|---|---|
| Camera | Must explain purpose in NSCameraUsageDescription |
| Location (Always) | Must have clear, user-visible reason for background location |
| Push Notifications | Must not be used for marketing without user opt-in |
| HealthKit | Must actually use health data in a meaningful way |
| Background Modes | Each mode (audio, location, VoIP, fetch) must be justified and actively used |
| App Groups | Must explain what shared data is needed |
| Associated Domains | Universal links must actually resolve and function |
Usage descriptions in Info.plist must be specific about what data is accessed and why:
// REJECTED -- too vague
// APPROVED -- specific purpose
"Your location is used to show nearby restaurants on the map."
// REJECTED -- too vague
"This app needs access to your camera."
// APPROVED -- specific purpose
"The camera is used to scan barcodes for price comparison."
Apple rejects vague usage descriptions. Always state what the data is used for in user-facing terms.
xcodebuild -exportArchive. Automated uploads via altool or Transporter also work.Apple grants expedited reviews for critical situations only:
Request via the Contact Us form in App Store Connect (App Review > Expedite Request). Provide a specific, factual justification. Do not request expedited review for initial launches or feature updates.
After approval, you can enable phased release to gradually roll out the update:
| Day | Percentage of Users |
|---|---|
| 1 | 1% |
| 2 | 2% |
| 3 | 5% |
| 4 | 10% |
| 5 | 20% |
| 6 | 50% |
| 7 | 100% |
Users who manually check for updates in the App Store will receive the update immediately regardless of phased release stage. You can pause, resume, or complete the rollout at any time from App Store Connect.
All rejections appear in the Resolution Center in App Store Connect. To respond:
Tone matters. Be professional, specific, and concise. Provide demo credentials, screenshots, or screen recordings that demonstrate compliance. Avoid emotional language or threats.
If the Resolution Center exchange does not resolve the issue:
@MainActor or appropriate actor context. Mark shared state types as Sendable for Swift 6 concurrency safety.Quick-check before every submission (full version in references/review-checklists.md):
Make data-driven prioritization decisions faster
Draft PRDs, status updates, and stakeholder presentations
Example
Create executive summary of Q3 roadmap, monthly progress report, feature launch announcement
Save 3-5 hours/week on communication overhead
Prerequisites
Time Estimate
30-60 minutes to see productivity improvements
Steps
Common Pitfalls
✓ Do
✗ Don't
💡 Pro Tips
✓ Use when
Use for user story writing, competitive research, roadmap prioritization, stakeholder communication, and PRD drafting. Best for reducing repetitive documentation and research work.
✗ Avoid when
Avoid for strategic product vision (requires deep customer empathy), pricing decisions (needs market and financial expertise), or when face-to-face customer discovery is more valuable than speed.
mattpocock/skills
parcadei/continuous-claude-v3
cursor/plugins
ailabs-393/ai-labs-claude-skills
pproenca/dot-skills
mattpocock/skills
app-store-review has been reliable in day-to-day use. Documentation quality is above average for community skills.
app-store-review is among the better-maintained entries we tried; worth keeping pinned for repeat workflows.
Useful defaults in app-store-review — fewer surprises than typical one-off scripts, and it plays nicely with `npx skills` flows.
I recommend app-store-review for anyone iterating fast on agent tooling; clear intent and a small, reviewable surface area.
app-store-review fits our agent workflows well — practical, well scoped, and easy to wire into existing repos.
app-store-review fits our agent workflows well — practical, well scoped, and easy to wire into existing repos.
I recommend app-store-review for anyone iterating fast on agent tooling; clear intent and a small, reviewable surface area.
Solid pick for teams standardizing on skills: app-store-review is focused, and the summary matches what you get after install.
app-store-review is among the better-maintained entries we tried; worth keeping pinned for repeat workflows.
Registry listing for app-store-review matched our evaluation — installs cleanly and behaves as described in the markdown.
showing 1-10 of 52