Skip to Content
DocsDeploymentiOS App Store Setup

iOS App Store Deployment

This guide walks you through deploying your iOS app to App Store and TestFlight using WebF.

Prerequisites

Before you begin, make sure you have:

  • ✅ An Apple Developer Program membership ($99/year)
  • ✅ Access to a Mac computer with Xcode installed (for certificate generation)
  • ✅ Your app’s Bundle Identifier (e.g., com.yourcompany.appname)
  • ✅ Your Apple Developer Team ID
  • ✅ Distribution certificate and provisioning profile
  • ✅ App Store Connect API key

Step 1: Create Bundle Identifier

The Bundle Identifier uniquely identifies your iOS app. It cannot be changed after your first upload to App Store.

1.1 Access Apple Developer Portal

  1. Go to developer.apple.com
  2. Sign in with your Apple ID
  3. Navigate to Certificates, Identifiers & Profiles

1.2 Create App ID

  1. Click Identifiers in the sidebar
  2. Click the + button
  3. Select App IDs → Click Continue
  4. Select App → Click Continue
  5. Fill in the details:
    • Description: Human-readable name (e.g., “My WebF App”)
    • Bundle ID: Reverse domain notation
      • Choose Explicit (recommended)
      • Enter your Bundle ID: com.yourcompany.appname
  6. Select capabilities your app needs:
    • Push Notifications
    • In-App Purchase
    • Game Center
    • etc.
  7. Click ContinueRegister

Guidelines for Bundle ID

  • Use reverse domain notation: com.yourcompany.appname
  • Only alphanumeric characters and periods
  • Must be unique across App Store
  • Cannot be changed after first upload

Example

com.example.mywebfapp

⚠️ Important: Choose carefully! The Bundle ID cannot be changed after you upload your app to App Store.


Step 2: Find Your Team ID

Your Team ID is a 10-character identifier for your Apple Developer account.

Locate Team ID

  1. Go to developer.apple.com
  2. Sign in with your Apple ID
  3. Click your name in the top right corner
  4. Your Team ID is displayed under your team name (e.g., ABCD123456)

Save this ID - you’ll need it later.


Step 3: Create Distribution Certificate

A distribution certificate identifies you as the developer and is required to sign your app.

3.1 Create Certificate Signing Request (CSR)

On your Mac:

  1. Open Keychain Access (in Applications → Utilities)
  2. Go to Keychain Access menuCertificate AssistantRequest a Certificate from a Certificate Authority
  3. Fill in:
    • User Email Address: Your email
    • Common Name: Your name or company name
    • CA Email Address: Leave empty
    • Request is: Select “Saved to disk”
  4. Click Continue
  5. Save the file as CertificateSigningRequest.certSigningRequest

3.2 Generate Certificate in Apple Developer Portal

  1. In Certificates, Identifiers & Profiles, click Certificates
  2. Click the + button
  3. Select Apple Distribution (under “Software”)
  4. Click Continue
  5. Upload your .certSigningRequest file
  6. Click Continue
  7. Download the certificate (.cer file)

3.3 Install and Export Certificate

On your Mac:

  1. Double-click the downloaded .cer file to install it in Keychain
  2. Open Keychain Access
  3. In the “My Certificates” category, find your certificate
    • Look for “Apple Distribution: Your Name (Team ID)”
  4. Expand the certificate (click the triangle) to show the private key
  5. Select both the certificate and private key
  6. Right-click → Export 2 items…
  7. Save as .p12 file
  8. Set a strong password (remember this!)
  9. Click Save
  10. Enter your Mac password if prompted

🔐 Critical: Store your .p12 file and password securely! You’ll need them to sign future app updates.


Step 4: Create Provisioning Profile

A provisioning profile links your certificate, App ID, and distribution method.

4.1 Create Profile

  1. In Certificates, Identifiers & Profiles, click Profiles
  2. Click the + button
  3. Select App Store (under “Distribution”)
  4. Click Continue
  5. Select your App ID (Bundle Identifier)
  6. Click Continue
  7. Select your Distribution Certificate
  8. Click Continue
  9. Enter a profile name (e.g., “MyApp App Store Distribution”)
  10. Click Generate
  11. Download the .mobileprovision file

💡 Note: Provisioning profiles expire after 1 year. You’ll need to regenerate and re-upload when they expire.


Step 5: Create App Store Connect API Key

The API key allows automated uploads to TestFlight and App Store without two-factor authentication.

5.1 Generate API Key

  1. Go to App Store Connect
  2. Click Users and Access
  3. Click the Keys tab (under “Integrations”)
  4. Click the + button (or Generate API Key)
  5. Fill in:
    • Name: WebF Deployment (or your preferred name)
    • Access: Select “Developer” or “App Manager”
      • Developer: Can upload builds and manage TestFlight
      • App Manager: Can also submit for App Review
  6. Click Generate

5.2 Download and Save

  1. Download the .p8 file immediately (you can only download once!)
  2. Save the following information:
    • API Key file (.p8)
    • Key ID: 10-character ID shown in the table (e.g., ABC123DEF4)
    • Issuer ID: UUID shown at the top of the page (e.g., xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)

⚠️ One-time Download: The .p8 file can only be downloaded once. If you lose it, you’ll need to revoke and create a new key.


Step 6: Create App in App Store Connect

Before you can upload builds, your app must exist in App Store Connect.

6.1 Create New App

  1. Go to App Store Connect
  2. Click My Apps
  3. Click the + button → New App
  4. Fill in:
    • Platform: iOS
    • Name: Your app’s name (can be changed later)
    • Primary Language: Select language
    • Bundle ID: Select the Bundle ID you created earlier
    • SKU: Unique identifier (e.g., mywebfapp001)
    • User Access: Full Access (or Limited if needed)
  5. Click Create

6.2 Complete App Information

Before you can submit for review, you need to fill in:

  • App Information: Category, content rating, etc.
  • Pricing and Availability: Free or paid, territories
  • App Privacy: Privacy policy URL, data collection details
  • Screenshots: Required for all device sizes
  • App Icon: 1024x1024 PNG, cannot be transparent or contain alpha channel
  • App Description: What’s New, Description, Keywords
  • Support URL: Link to your support page

You can fill these in later, but you’ll need them before submitting for review.

⚠️ App Icon Requirement: Your app icon must be opaque (no transparency). Icons with alpha channels will be rejected by App Store Connect.


Step 7: Configure in WebF Platform

Now configure everything in WebF:

7.1 Navigate to Project Settings

  1. Log in to your WebF account
  2. Go to your project
  3. Click “Publish Config” tab
  4. Select the “iOS” tab

7.2 Upload Configuration

Fill in the following fields:

FieldValueExample
Bundle IdentifierYour app’s Bundle IDcom.example.mywebfapp
Team IDYour 10-character Team IDABCD123456
Distribution CertificateUpload your .p12 filedistribution.p12
Certificate PasswordPassword for the .p12 fileMySecurePass123
Provisioning ProfileUpload your .mobileprovision fileMyApp_AppStore.mobileprovision
API Key (.p8)Upload your App Store Connect API keyAuthKey_ABC123DEF4.p8
API Key ID10-character Key ID from Step 5ABC123DEF4
Issuer IDUUID from Step 5xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

7.3 Save Configuration

Click “Save iOS Configuration” to save your settings.


Step 8: Create Your First Build

8.1 Navigate to Builds Tab

  1. In your project, click the “Builds” tab
  2. Click “New Build” button

8.2 Configure Build

  1. Select Build Type:

    • App - For end-user apps
    • SDK - For libraries (if applicable)
    • Both - Build both versions
  2. Select Platforms:

    • ✅ Check iOS
  3. Configure iOS Output Types:

    • IPA (Device) - For real iOS devices
      • Distribution: Select TestFlight
    • IPA (Simulator) - For iOS Simulator testing
  4. Select WebF Version (use latest stable version)

  5. Add any required Plugins

8.3 Start Build

Click “Create Build” to start the build process.


Step 9: Monitor Build Progress

Build Statuses

  • 🔵 RUNNING - Build is in progress
  • SUCCESS - Build completed successfully
  • ⚠️ PARTIAL - Some targets succeeded, others failed
  • FAILED - Build failed completely

View Build Details

  1. Click the “eye” icon next to a build
  2. Check the Artifacts tab for build info
  3. Review the Logs tab if there are errors

Step 10: Test on TestFlight

💡 Build Number Auto-Increment: WebF automatically increments the build number with each new build, so you don’t need to manage this manually.

📝 Privacy Manifest: Starting May 1, 2024, Apple requires apps using certain APIs to include a Privacy Manifest file explaining why the APIs are used. If your app uses file access, system info, or tracking APIs and doesn’t include a manifest, it may be rejected during review.

If you configured IPA with TestFlight distribution:

10.1 Check Upload Status

  1. The build system automatically uploads to TestFlight
  2. Go to App Store Connect
  3. Select your app
  4. Click TestFlight tab
  5. Wait for Apple to process the build (usually 5-15 minutes)

10.2 Add Testers

Internal Testing (up to 100 testers, no review required):

  1. In TestFlight, go to Internal Testing
  2. Click + next to “Internal Testers”
  3. Add testers by email
  4. They’ll receive an invitation to test your app

External Testing (unlimited testers, requires Apple review):

  1. In TestFlight, go to External Testing
  2. Create a new test group
  3. Add a build to the group
  4. Add testers or create a public link
  5. Submit for Beta App Review
  6. Wait for approval (usually 24-48 hours)

Step 11: Submit to App Store

When you’re ready to release:

11.1 Prepare for Submission

  1. In App Store Connect, select your app
  2. Go to App Store tab
  3. Click + next to “iOS App” (if no version exists)
  4. Complete all required information:
    • Screenshots (all required device sizes)
    • Description, keywords, support URL
    • App Privacy details
    • Age rating
    • Pricing and availability

11.2 Select Build

  1. Scroll to Build section
  2. Click + Select Build
  3. Choose the build you want to submit
  4. Click Done

11.3 Submit for Review

  1. Click Add for Review (top right)
  2. Complete the Export Compliance questionnaire
  3. Click Submit to App Review

11.4 Review Process

  • In Review: Usually takes 24-48 hours
  • Rejected: Address feedback and resubmit
  • Approved: Your app is ready to release!

11.5 Release

Once approved, you can:

  • Release Immediately: App goes live right away
  • Schedule Release: Choose a specific date/time
  • Manual Release: Release when you’re ready

Troubleshooting

Certificate Issues

Error: “Certificate not valid”

Solution:

  • Ensure certificate is Apple Distribution (not Development)
  • Check certificate hasn’t expired
  • Verify password is correct
  • Make sure you exported both certificate and private key

Provisioning Profile Issues

Error: “Profile doesn’t match bundle identifier”

Solution:

  • Verify Bundle ID matches exactly
  • Check profile includes your distribution certificate
  • Ensure profile hasn’t expired
  • Regenerate profile if needed

Upload Fails

Error: “Invalid signature” or “Couldn’t authenticate”

Possible causes:

  • ❌ Wrong API key or credentials
  • ❌ API key lacks permissions
  • ❌ Certificate/profile mismatch

Solution:

  1. Verify all credentials are correct
  2. Check API key has “Developer” or “App Manager” access
  3. Ensure certificate matches provisioning profile

Build Processing Stuck

Issue: Build stuck in “Processing” on TestFlight

Solution:

  • Wait - Processing usually takes 5-15 minutes
  • Check email for any issues from Apple
  • If stuck for hours, contact Apple Developer Support

Best Practices

Version Management

  • ✅ Use semantic versioning (e.g., 1.0.0, 1.0.1, 1.1.0)
  • ✅ Increment build number for each upload
  • ✅ Keep track of what’s in each version

Testing Strategy

  1. Internal TestFlight - Quick testing with your team
  2. External TestFlight - Broader testing with beta users
  3. App Store - Full public release

Security

  • 🔐 Never commit certificates or keys to version control
  • 🔐 Store passwords in secure password manager
  • 🔐 Limit API key permissions to minimum required
  • 🔐 Rotate API keys periodically
  • 🔐 Enable two-factor authentication on Apple ID

Certificate Expiration

  • 📅 Distribution certificates expire after 1 year
  • 📅 Provisioning profiles expire after 1 year
  • 📅 Set calendar reminders to renew before expiration
  • 📅 Plan app updates around certificate renewal

Additional Resources


Next Steps

After your app is published:

  • 📊 Monitor crash reports in App Store Connect
  • 🔔 Set up alerts for new reviews and ratings
  • 📈 Track downloads and user engagement
  • 🚀 Plan your update schedule
  • 💬 Respond to user reviews
Last updated on: