---
title: "App Store Submission"
description: "App Review guidelines, privacy requirements, and submission checklist."
type: skill
canonical_url: https://claudary.paisolsolutions.com/skills/app-store
source: "Claudary"
difficulty: intermediate
author: "Claude Code Knowledge Pack"
date: 2026-07-10T11:07:50.864Z
license: CC-BY-4.0
attribution: "App Store Submission — Claudary (https://claudary.paisolsolutions.com/skills/app-store)"
---

# App Store Submission
App Review guidelines, privacy requirements, and submission checklist.

## Overview

# App Store Submission

App Review guidelines, privacy requirements, and submission checklist.

## Pre-Submission Checklist

### App Completion
- [ ] All features working
- [ ] No crashes or major bugs
- [ ] Performance optimized
- [ ] Memory leaks resolved

### Content Requirements
- [ ] App icon (1024x1024)
- [ ] Screenshots for all device sizes
- [ ] App preview videos (optional)
- [ ] Description and keywords
- [ ] Privacy policy URL
- [ ] Support URL

### Technical Requirements
- [ ] Minimum iOS version set correctly
- [ ] Privacy manifest (`PrivacyInfo.xcprivacy`)
- [ ] All permissions have usage descriptions
- [ ] Export compliance answered
- [ ] Content rights declared

## Screenshots

### Required Sizes

```
iPhone 6.9" (iPhone 16 Pro Max): 1320 x 2868
iPhone 6.7" (iPhone 15 Plus): 1290 x 2796
iPhone 6.5" (iPhone 11 Pro Max): 1284 x 2778
iPhone 5.5" (iPhone 8 Plus): 1242 x 2208

iPad Pro 13" (6th gen): 2064 x 2752
iPad Pro 12.9" (2nd gen): 2048 x 2732
```

### Automating Screenshots

With fastlane:

```ruby
# Fastfile
lane :screenshots do
  capture_screenshots(
    scheme: "MyAppUITests",
    devices: [
      "iPhone 16 Pro Max",
      "iPhone 8 Plus",
      "iPad Pro (12.9-inch) (6th generation)"
    ],
    languages: ["en-US", "es-ES"],
    output_directory: "./screenshots"
  )
end
```

Snapfile:
```ruby
devices([
  "iPhone 16 Pro Max",
  "iPhone 8 Plus",
  "iPad Pro (12.9-inch) (6th generation)"
])

languages(["en-US"])
scheme("MyAppUITests")
output_directory("./screenshots")
clear_previous_screenshots(true)
```

UI Test for screenshots:
```swift
import XCTest

class ScreenshotTests: XCTestCase {
    override func setUpWithError() throws {
        continueAfterFailure = false
        let app = XCUIApplication()
        setupSnapshot(app)
        app.launch()
    }

    func testScreenshots() {
        snapshot("01-HomeScreen")

        // Navigate to feature
        app.buttons["Feature"].tap()
        snapshot("02-FeatureScreen")

        // Show detail
        app.cells.firstMatch.tap()
        snapshot("03-DetailScreen")
    }
}
```

## Privacy Policy

### Required Elements

1. What data is collected
2. How it's used
3. Who it's shared with
4. How long it's retained
5. User rights (access, deletion)
6. Contact information

### Template Structure

```markdown
# Privacy Policy for [App Name]

Last updated: [Date]

## Information We Collect
- Account information (email, name)
- Usage data (features used, session duration)

## How We Use Information
- Provide app functionality
- Improve user experience
- Send notifications (with permission)

## Data Sharing
We do not sell your data. We share with:
- Analytics providers (anonymized)
- Cloud storage providers

## Data Retention
We retain data while your account is active.
Request deletion at [email].

## Your Rights
- Access your data
- Request deletion
- Export your data

## Contact
[email]
```

## App Review Guidelines

### Common Rejections

**1. Incomplete Information**
- Missing demo account credentials
- Unclear functionality

**2. Bugs and Crashes**
- App crashes on launch
- Features don't work

**3. Placeholder Content**
- Lorem ipsum text
- Incomplete UI

**4. Privacy Issues**
- Missing usage descriptions
- Accessing data without permission

**5. Misleading Metadata**
- Screenshots don't match app
- Description claims unavailable features

### Demo Account

In App Store Connect notes:
```
Demo Account:
Username: demo@example.com
Password: Demo123!

Notes:
- Subscription features are enabled
- Push notifications require real device
```

### Review Notes

```
Notes for Review:

1. This app requires camera access for QR scanning (Settings tab > Scan QR).

2. Push notifications are used for:
   - Order status updates
   - New message alerts

3. Background location is used for:
   - Delivery tracking only when order is active

4. Demo account has pre-populated data for testing.

5. In-app purchases can be tested with sandbox account.
```

## Export Compliance

### Quick Check

Answer YES to export compliance if your app:
- Only uses HTTPS for network requests
- Only uses Apple's standard encryption APIs
- Only uses encryption for authentication/DRM

Most apps using HTTPS only can answer YES and select that encryption is exempt.

### Full Compliance

If using custom encryption, you need:
- Encryption Registration Number (ERN) from BIS
- Or exemption documentation

## App Privacy Labels

In App Store Connect, declare:

### Data Types

- Contact Info (name, email, phone)
- Health & Fitness
- Financial Info
- Location
- Browsing History
- Search History
- Identifiers (user ID, device ID)
- Usage Data
- Diagnostics

### Data Use

For each data type:
- **Linked to User**: Can identify the user
- **Used for Tracking**: Cross-app/web advertising

### Example Declaration

```
Contact Info - Email Address:
- Used for: App Functionality (account creation)
- Linked to User: Yes
- Used for Tracking: No

Usage Data:
- Used for: Analytics
- Linked to User: No
- Used for Tracking: No
```

## In-App Purchases

### Configuration

1. App Store Connect > Features > In-App Purchases
2. Create products with:
   - Reference name
   - Product ID (com.app.product)
   - Price
   - Localized display name/description

### Review Screenshots

Provide screenshots showing:
- Purchase screen
- Content being purchased
- Restore purchases option

### Subscription Guidelines

- Clear pricing shown before purchase
- Easy cancellation instructions
- Terms of service link
- Restore purchases available

## TestFlight

### Internal Testing

- Up to 100 internal testers
- No review required
- Immediate availability

### External Testing

- Up to 10,000 testers
- Beta App Review required
- Public link option

### Test Notes

```
What to Test:
- New feature: Cloud sync
- Bug fix: Login issues on iOS 18
- Performance improvements

Known Issues:
- Widget may not update immediately
- Dark mode icon pending
```

## Submission Process

### 1. Archive

```bash
xcodebuild archive \\
    -project MyApp.xcodeproj \\
    -scheme MyApp \\
    -archivePath build/MyApp.xcarchive
```

### 2. Export

```bash
xcodebuild -exportArchive \\
    -archivePath build/MyApp.xcarchive \\
    -exportOptionsPlist ExportOptions.plist \\
    -exportPath build/
```

### 3. Upload

```bash
xcrun altool --upload-app \\
    --type ios \\
    --file build/MyApp.ipa \\
    --apiKey YOUR_KEY_ID \\
    --apiIssuer YOUR_ISSUER_ID
```

### 4. Submit

1. App Store Connect > Select build
2. Complete all metadata
3. Submit for Review

## Post-Submission

### Review Timeline

- Average: 24-48 hours
- First submission: May take longer
- Complex apps: May need more review

### Responding to Rejection

1. Read rejection carefully
2. Address ALL issues
3. Reply in Resolution Center
4. Resubmit

### Expedited Review

Request for:
- Critical bug fixes
- Time-sensitive events
- Security issues

Submit request at: https://developer.apple.com/contact/app-store/?topic=expedite

## Phased Release

After approval, choose:
- **Immediate**: Available to everyone
- **Phased**: 7 days gradual rollout
  - Day 1: 1%
  - Day 2: 2%
  - Day 3: 5%
  - Day 4: 10%
  - Day 5: 20%
  - Day 6: 50%
  - Day 7: 100%

Can pause or accelerate at any time.

## Version Updates

### What's New

```
Version 2.1

New:
• Cloud sync across devices
• Dark mode support
• Widget for home screen

Improved:
• Faster app launch
• Better search results

Fixed:
• Login issues on iOS 18
• Notification sound not playing
```

### Maintaining Multiple Versions

- Keep previous version available during review
- Test backward compatibility
- Consider forced updates for critical fixes

---

Source: [Claudary](https://claudary.paisolsolutions.com/skills/app-store) · https://claudary.paisolsolutions.com
