Claude
Skills
Sign in
Back

submitting-ios

Included with Lifetime
$97 forever

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.

Code Review

What this skill does


# iOS App Store Submission Reference

Quick reference for App Store Connect requirements and common rejection reasons.

## Plugin Tools

Validate your store assets before submission:

```bash
# Check iOS assets (icon, screenshots)
cd /path/to/expo-toolkit && npm run validate-assets -- --ios

# Or directly
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

1. **IAPs not attached to version** - Products configured but not selected on version page
2. **Missing demo credentials** - App requires login but no test account provided
3. **Privacy policy inaccessible** - URL configured but page returns 404
4. **Screenshots misleading** - Show features not in this version
5. **Trial mismatch** - Code says "7 days" but ASC configured for 3 days

## Apple Guidelines Reference

- [Guideline 2.3 - Accurate Metadata](https://developer.apple.com/app-store/review/guidelines/#accurate-metadata)
- [Guideline 3.1.1 - In-App Purchase](https://developer.apple.com/app-store/review/guidelines/#in-app-purchase)
- [Guideline 3.1.2 - Subscriptions](https://developer.apple.com/app-store/review/guidelines/#subscriptions)
- [Guideline 5.1.1 - Data Collection](https://developer.apple.com/app-store/review/guidelines/#data-collection-and-storage)

Related in Code Review