Skip to content
intermediate Phase 13 · App Store & Distribution

App Store Connect

Create app listings, manage builds, metadata, screenshots, and release phasing.

45m
0 problems
Topic Progress 0%

App Store Connect Setup

Creating an App Record

Log into App Store Connect (appstoreconnect.apple.com) and create a new app:

  1. Click My Apps, then the plus button
  2. Select New App
  3. Choose platform (iOS), enter name, primary language, bundle ID, and SKU
  4. The bundle ID must match your Xcode project exactly

App Information

Fill in the essential details:

  • Name: Your app display name (max 30 characters)
  • Subtitle: Short description shown under the name (max 30 characters)
  • Category: Primary and secondary categories
  • Content Rating: Age rating questionnaire
  • Privacy Policy URL: Required for all apps
  • Support URL: Where users can get help

Bundle ID and Provisioning

Your bundle ID must be registered in the Apple Developer account and match exactly:

<!-- Info.plist -->
<key>CFBundleIdentifier</key>
<string>com.company.appname</string>

Create an App Store provisioning profile in the Developer portal that matches this bundle ID.

App Store Connect API

Automate app management with the API:

// Generate API key in App Store Connect > Users and Access > Keys
// Use the key to generate a JWT token for API calls

struct ASCClient {
    let apiKey: String
    let issuerId: String
    
    func fetchApps() async throws -> [App] {
        let token = try generateJWT()
        let url = URL(string: "https://api.appstoreconnect.apple.com/v1/apps")!
        var request = URLRequest(url: url)
        request.setValue("Bearer \(token)", forHTTPHeaderField: "Authorization")
        
        let (data, _) = try await URLSession.shared.data(for: request)
        return try JSONDecoder().decode(AppsResponse.self, from: data).data
    }
}

Metadata & Screenshots

App Store Listing

A compelling listing is crucial for conversion:

  • App Name: Clear, memorable, under 30 characters
  • Subtitle: Highlights key value proposition
  • Description: Front-load the most important features in first 3 lines
  • Keywords: Comma-separated, no spaces, 100 characters max
  • What's New: Update notes for each version

Screenshot Requirements

Apple requires specific screenshot sizes:

Device Size (pixels)
iPhone 6.7 inch 1290 x 2796
iPhone 6.5 inch 1284 x 2778
iPhone 5.5 inch 1242 x 2208
iPad 12.9 inch 2048 x 2732

Screenshot Best Practices

  • Show the most compelling features first
  • Use device frames for context
  • Add captions that explain the feature
  • Maintain consistent visual style
  • Use real content, not placeholder data

App Preview Videos

  • 15-30 seconds long
  • Show actual app usage
  • Capture at native resolution
  • First 5 seconds are most important

Localization

Add metadata and screenshots for each supported language:

// In App Store Connect, add localized versions
// Each language gets its own:
// - App name and description
// - Keywords
// - Screenshots
// - What's New text

Build Management

Uploading Builds

Use Xcode or Transporter to upload builds:

# Using xcodebuild
xcodebuild -exportArchive \
  -archivePath MyApp.xcarchive \
  -exportOptionsPlist ExportOptions.plist \
  -exportPath ./build

# Using altool (deprecated, use notarytool)
xcrun notarytool submit ./build/MyApp.ipa \
  --apple-id developer@example.com \
  --team-id ABCDE12345 \
  --password app-specific-password

Export Options

Configure your ExportOptions.plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>method</key>
    <string>app-store</string>
    <key>teamID</key>
    <string>ABCDE12345</string>
    <key>uploadBitcode</key>
    <false/>
    <key>uploadSymbols</key>
    <true/>
</dict>
</plist>

Phased Releases

Enable phased release to gradually roll out updates:

  • Day 1: 1% of users
  • Day 2: 2% of users
  • Day 3: 5% of users
  • Day 4: 10% of users
  • Day 5: 20% of users
  • Day 6: 50% of users
  • Day 7: 100% of users

Monitor crash rates and user feedback during the rollout. You can pause or stop the release at any time.

Build Verification

Before submitting:

  1. Test on a physical device
  2. Verify all screenshots are current
  3. Check for binary size increases
  4. Run the App Store validation in Xcode
  5. Review privacy nutrition labels
  6. Ensure all required privacy permissions are declared

Quiz

1. What must match between your Xcode project and App Store Connect?

Question 1 options

2. How long is the maximum App Store subtitle?

Question 2 options

3. What does a phased release do?

Question 3 options

4. What is required for all apps in App Store Connect?

Question 4 options

Flashcards

Question

What is the App Store Connect API used for?

Answer

Automating app management tasks like fetching build info, managing testers, reading sales reports, and submitting builds.

Question

How many keywords can you set for App Store optimization?

Answer

Up to 100 characters of comma-separated keywords with no spaces. Each word is matched independently.

Question

What are the phases of a phased release?

Answer

Day 1: 1%, Day 2: 2%, Day 3: 5%, Day 4: 10%, Day 5: 20%, Day 6: 50%, Day 7: 100% of users.

Revision Notes

Key Takeaways

  • 1. Bundle ID must match exactly between Xcode and App Store Connect
  • 2. Front-load app description with key features
  • 3. Use phased release to monitor crash rates
  • 4. Always test on physical device before submitting
  • 5. Privacy policy URL is required for all apps

Interview Tips

  • Describe the App Store submission process
  • Explain how to optimize an App Store listing
  • Discuss phased releases and their benefits
  • Walk through troubleshooting an App Store rejection

Cheat Sheet

App Store Connect Quick Reference

  • Bundle ID must match Xcode project
  • 30 char limit for name and subtitle
  • Privacy policy URL required
  • Phased release over 7 days
  • Screenshot sizes vary by device
  • Use API for automation