App Store Connect Setup
Creating an App Record
Log into App Store Connect (appstoreconnect.apple.com) and create a new app:
- Click My Apps, then the plus button
- Select New App
- Choose platform (iOS), enter name, primary language, bundle ID, and SKU
- 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:
- Test on a physical device
- Verify all screenshots are current
- Check for binary size increases
- Run the App Store validation in Xcode
- Review privacy nutrition labels
- Ensure all required privacy permissions are declared
Quiz
1. What must match between your Xcode project and App Store Connect?
2. How long is the maximum App Store subtitle?
3. What does a phased release do?
4. What is required for all apps in App Store Connect?
Flashcards
Question
What is the App Store Connect API used for?
Click to reveal answer
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?
Click to reveal answer
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?
Click to reveal answer
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