App Store Submission

Complete guide to submitting your iOS app to the Apple App Store.

Prerequisites

  • Apple Developer Account ($99/year)
  • macOS computer (for first-time setup)
  • App built with EAS Build
  • App icons and screenshots ready

Step 1: App Store Connect Setup

Create App

  1. Go to App Store Connect
  2. Click "My Apps" → "+" → "New App"
  3. Fill in app information:
    • Platform: iOS
    • Name: Your app name (max 30 chars)
    • Primary Language: English
    • Bundle ID: Select from dropdown (must match app.json)
    • SKU: Unique identifier (e.g., yourapp-ios-001)

Step 2: App Information

General Information

  • Subtitle: Short description (30 chars)
  • Category: Primary and secondary
  • Content Rights: Who owns the content

Privacy Policy

Required URL to your privacy policy. Example:

typescript
https://yourapp.com/privacy-policy
Apple requires a privacy policy. You can use services like PrivacyPolicies.com to generate one.

Age Rating

Answer questions about your app's content to determine age rating.

Step 3: Pricing and Availability

  • Price: Free or paid
  • Availability: All territories or specific countries
  • Pre-Order: Optional

Step 4: App Preview and Screenshots

Required Screenshot Sizes

  • 6.5" Display (iPhone 14 Pro Max): 1290 x 2796 pixels
  • 5.5" Display (iPhone 8 Plus): 1242 x 2208 pixels
  • 12.9" iPad Pro: 2048 x 2732 pixels (if iPad support)

Generate Screenshots

bash
# Using Expo
npx expo prebuild

# Open in Xcode
open ios/YourApp.xcworkspace

# Run on simulator and capture screenshots

Or use tools like ScreenshotOne or Previewed.

App Preview Video (Optional)

30-second video showcasing your app (recommended but not required).

Step 5: Version Information

What to Provide

  • Promotional Text: 170 chars, updatable without new version
  • Description: 4000 chars, full app description
  • Keywords: 100 chars, comma-separated (affects search)
  • Support URL: Where users can get help
  • Marketing URL: Your app's website (optional)

What's New in This Version

typescript
Version 1.0.0

Initial release featuring:
• Beautiful, intuitive interface
• Fast and reliable performance
• Dark mode support
• Offline functionality

Step 6: Build & Submit

Build for App Store

bash
# Build production version
eas build --platform ios --profile production

# Wait for build to complete (10-30 minutes)
# Build will be automatically uploaded to App Store Connect
EAS Build automatically uploads to App Store Connect if credentials are properly configured.

Or Submit Manually

bash
# Submit latest build
eas submit --platform ios --latest

# Or submit specific build
eas submit --platform ios --id <build-id>

Step 7: Test Flight (Optional)

Test your app before releasing:

  1. Build with --profile preview
  2. Go to App Store Connect → TestFlight
  3. Add internal testers (up to 100)
  4. Share test link or add by email
  5. For external testing (up to 10,000 testers):
    • Submit for Beta App Review
    • Wait for approval (24-48 hours)

Step 8: Submit for Review

Export Compliance

Answer questions about encryption:

  • Most apps: "No" (uses only standard HTTPS)
  • If custom encryption: Additional documentation required

Advertising Identifier (IDFA)

If you use analytics or ads, check applicable boxes.

Content Rights

Confirm you have rights to all content in the app.

Submit!

Click "Submit for Review" button.

Review typically takes 1-2 days. You'll receive email updates on status.

Common Rejection Reasons

Guideline 2.1 - App Completeness

  • App crashes on launch
  • Missing features described in metadata
  • Login required but no demo account provided

Guideline 4.0 - Design

  • UI looks unfinished
  • Poor user experience
  • App is just a website wrapper

Guideline 5.1 - Privacy

  • Missing privacy policy
  • Requesting unnecessary permissions
  • Not explaining permission requests

After Approval

Release Options

  • Automatic: Released as soon as approved
  • Manual: You choose when to release
  • Phased: Gradual rollout over 7 days

Monitor Performance

  • App Store Connect Analytics
  • Crash reports
  • User reviews and ratings

Updating Your App

Increment Version

app.json
{
  "expo": {
    "version": "1.0.1",
    "ios": {
      "buildNumber": "2"
    }
  }
}

Submit Update

bash
# Build new version
eas build --platform ios --profile production

# Wait for build, then submit
eas submit --platform ios --latest

Best Practices

✅ Provide demo account

If login required, include test credentials in review notes

✅ High-quality screenshots

Use professional screenshots with captions

✅ Detailed description

Explain all features clearly

✅ Test thoroughly

Use TestFlight before submitting

Resources

Next Steps