| name | submitting-ios |
| description | App Store Connect submission checklist and Apple App Review Guidelines reference. Use when preparing iOS apps for review, after rejection, or validating App Store Connect configuration. |
iOS App Store Submission Reference
Quick reference for App Store Connect requirements and common rejection reasons.
Plugin Tools
Validate your store assets before submission:
cd /path/to/expo-toolkit && npm run validate-assets -- --ios
node tools/validate-store-assets.js --ios
node tools/validate-store-assets.js --ios --json
This validates:
- App icon (1024x1024)
- Screenshot dimensions for each device size
- Missing required screenshot sizes
Checklist by Guideline
Guideline 2.3 - Accurate Metadata
| Check | Requirement |
|---|
| App name | ≤30 characters |
| Screenshots | Show app in use (not splash/login) |
| Screenshots | All required device sizes present |
| Screenshots | Appropriate for 4+ age rating |
| App previews | Only actual app footage (no stock video) |
| Description | No trademarked terms or pricing info |
| Keywords | Relevant to app functionality |
| What's New | Describes changes specifically |
| IAP disclosure | Screenshots/description indicate purchase requirements |
Guideline 3.1.1 - In-App Purchase
| Check | Requirement |
|---|
| IAP status | All products in "Ready to Submit" |
| Version attachment | IAPs SELECTED and attached to version (common rejection!) |
| Review screenshots | Uploaded for new products |
| Display names | Appropriate for public audience |
| Payment methods | No alternative mechanisms (license keys, QR codes, crypto) |
| Loot boxes | Odds disclosed before purchase |
Guideline 3.1.2 - Subscriptions
| Check | Requirement |
|---|
| Period | ≥7 days minimum |
| Description | Clear what subscriber receives |
| Free trial | Configured via App Store Connect (not hardcoded) |
| Upgrade/downgrade | Prevents duplicate subscriptions |
| Consumables | Purchased currencies do not expire |
Guideline 5.1.1 - Privacy
| Check | Requirement |
|---|
| Privacy policy | URL in App Store Connect |
| Privacy policy | Also accessible within app (both required) |
| Privacy labels | Match actual data collection |
| Age rating | Answered honestly |
App Review Information
| Check | Requirement |
|---|
| Contact info | Name, phone, email provided and valid |
| Demo credentials | Provided if app requires login |
| Demo credentials | Actually work (test before submission!) |
| Review notes | All new features described specifically |
| Hidden features | Explained how to access |
Code Requirements
| Check | Requirement |
|---|
| Restore purchases | Mechanism implemented |
| Payment bypass | No alternative payment patterns |
| Trial duration | Matches App Store Connect config |
Screenshot Requirements
| Device | Display Size | Required |
|---|
| iPhone 15 Pro Max | 6.9" | Yes |
| iPhone 15 Plus | 6.7" | Yes |
| iPhone 15 Pro | 6.1" | Recommended |
| iPhone SE | 4.7" | Recommended |
| iPad Pro 12.9" | 12.9" | If universal |
App Store Connect Navigation
| Section | Path |
|---|
| Version page | /apps/{app_id}/distribution/ios/version/inflight |
| Subscriptions | /apps/{app_id}/distribution/subscriptions |
| App Information | /apps/{app_id}/distribution/app-info |
| Pricing | /apps/{app_id}/distribution/pricing |
| App Privacy | /apps/{app_id}/distribution/app-privacy |
Common Rejection Reasons
- IAPs not attached to version - Products configured but not selected on version page
- Missing demo credentials - App requires login but no test account provided
- Privacy policy inaccessible - URL configured but page returns 404
- Screenshots misleading - Show features not in this version
- Trial mismatch - Code says "7 days" but ASC configured for 3 days
Apple Guidelines Reference