Skip to content

Deploy iOS App

Prerequisites

  1. Apple Developer Program membership

  2. Enable App Check for iOS (see App Check setup)

  3. Xcode installed on a Mac

  4. App Store Connect account

Certificates & Profiles

  1. Create App ID:

    • Go to Certificates, IDs & Profiles
    • Click ”+” to register new identifier
    • Choose “App IDs” > “App”
    • Enter bundle ID (e.g., com.yourdomain.app)
    • Enable needed capabilities
  2. Create Certificate:

    • Go to Certificates section
    • Click ”+” to create new
    • Choose “Apple Distribution”
    • Follow CSR creation steps
    • Download and install certificate
  3. Create Provisioning Profile:

    • Go to Profiles section
    • Click ”+” to create new
    • Choose “App Store” distribution
    • Select your App ID
    • Select distribution certificate
    • Download and install profile

Xcode Setup

  1. Open ios/Runner.xcworkspace

  2. Update signing settings:

    • Select Runner target
    • Choose your team
    • Enable automatic signing
    • Verify bundle identifier
  3. Configure capabilities:

    • Select Runner target
    • Go to Signing & Capabilities
    • Add required capabilities
    • Enable App Groups if needed

App Store Preparation

  1. Create app in App Store Connect:

    • Go to “My Apps”
    • Click ”+” to create new app
    • Enter app information
    • Choose bundle ID
  2. Configure app info:

    • Privacy policy URL
    • App Store category
    • Content rights
    • Age rating
  3. Prepare assets:

    • App icon (1024x1024)
    • Screenshots for all devices
    • App preview videos (optional)

Build for Release

  1. Update version in pubspec.yaml:

    version: 1.0.0+1 # version_name+build_number
  2. Update ios/Runner/Info.plist:

    <key>CFBundleShortVersionString</key>
    <string>1.0.0</string>
    <key>CFBundleVersion</key>
    <string>1</string>
  3. Build archive:

    Terminal window
    flutter build ipa --release

    Or use Xcode:

    • Product > Archive
    • Wait for archive to complete
    • Click “Distribute App”

App Store Submission

  1. Submit build:

    • Open Xcode > Window > Organizer
    • Select your archive
    • Click “Distribute App”
    • Choose “App Store Connect”
    • Follow upload steps
  2. Configure release in App Store Connect:

    • Select your build
    • Add release notes
    • Set availability date
    • Configure pricing
    • Submit for review

CI/CD Setup

Add this to your GitHub Actions workflow:

name: Deploy to App Store
on:
push:
tags: [ 'v*' ]
jobs:
deploy:
runs-on: macos-latest
steps:
- uses: actions/checkout@v3
- uses: subosito/flutter-action@v2
with:
channel: 'stable'
- name: Install Apple Certificate
uses: apple-actions/import-codesign-certs@v1
with:
p12-file-base64: ${{ secrets.P12_BASE64 }}
p12-password: ${{ secrets.P12_PASSWORD }}
- name: Install Provisioning Profile
uses: apple-actions/download-provisioning-profiles@v1
with:
bundle-id: com.yourdomain.app
profile-type: 'IOS_APP_STORE'
issuer-id: ${{ secrets.APPSTORE_ISSUER_ID }}
api-key-id: ${{ secrets.APPSTORE_API_KEY_ID }}
api-private-key: ${{ secrets.APPSTORE_API_PRIVATE_KEY }}
- name: Build & Deploy
env:
BUNDLE_ID: com.yourdomain.app
run: |
flutter build ipa --release \
--export-options-plist=ExportOptions.plist
- name: Upload to App Store
uses: apple-actions/upload-testflight-build@v1
with:
app-path: build/ios/ipa/*.ipa
issuer-id: ${{ secrets.APPSTORE_ISSUER_ID }}
api-key-id: ${{ secrets.APPSTORE_API_KEY_ID }}
api-private-key: ${{ secrets.APPSTORE_API_PRIVATE_KEY }}

TestFlight

Before App Store release:

  1. Upload to TestFlight:

    • Build will process automatically
    • Add test information
    • Create test groups
  2. Internal Testing:

    • Add internal testers
    • Test on various devices
    • Collect feedback
  3. External Testing (optional):

    • Create external group
    • Add email addresses
    • Set testing period
    • Submit for beta review