Documentation

Apple App Store & TestFlight

Create the app in App Store Connect, make an API key, and let CapWrapp create the signing certificate.

iPhone builds require an Apple Developer Program membership and an app record in App Store Connect. CapWrapp does not sign you up for Apple and does not create that app record yet.

You do not need a Mac. Signing is created from the API key. Builds run on GitHub’s Mac runners.

1. Create the app on Apple’s website

  1. Open Apps in App Store Connect.
  2. New app → iOS. Bundle ID must exactly match the Capacitor App ID (Settings shows it, e.g. app.yourbrand.mobile).
  3. If the bundle ID is missing, create it under Certificates, Identifiers & Profiles → Identifiers.
  4. Add at least one internal tester (yourself) or a TestFlight group. A successful upload with zero testers looks like “nothing happened.”

2. Create an App Store Connect API key

This is a password made for tools.

  1. Open Users and Access → Integrations → App Store Connect API.
  2. Create a key with the Admin role so CapWrapp can manage apps and provisioning profiles.
  3. Download the .p8 file once. Apple will not show it again.
  4. Copy Issuer ID (top of the page) and the 10-character Key ID.

3. Paste them in CapWrapp

App → Settings → App Store:

  • Issuer ID, Key ID, .p8 file
  • Bundle ID (pre-filled from Capacitor when possible)
  • Encryption checkbox — leave unchecked for most apps. CapWrapp writes ITSAppUsesNonExemptEncryption so TestFlight is not stuck on Missing Compliance. Check it only if the app uses non-exempt encryption and Info.plist already contains the code from App Store Connect → App Information → App Encryption Documentation (ITSEncryptionExportComplianceCode). An empty code is rejected at upload (error 90592).

Tap Save Apple setup. CapWrapp then:

  • Reads your Team ID from the key
  • Sets up an Apple Distribution certificate and stores it (you never upload a .p12)

Certificate limit

Apple allows only a few Distribution certificates per team, so every app on the same Apple team in a workspace signs with one shared certificate. Adding another app on that team takes no new slot.

CapWrapp never revokes a certificate on its own. If the team is already at Apple’s limit, the Apple card lists the team’s certificates, flags the ones CapWrapp created that nothing uses anymore, and lets you pick which one to revoke. Before each iOS build, CapWrapp checks the certificate with Apple and replaces it if it was revoked or expires within 30 days.

Keys never go to GitHub. The browser sends them to CapWrapp’s servers; GitHub Actions later fetches them with a short-lived run token.

4. iOS folder must exist

If Settings says iOS setup isn’t finished, the repo has no ios/ project yet. Finish the wrap follow-up in Lovable, push, then Try again. You cannot TestFlight a website-only repo.

After the first upload

Builds appear in TestFlight → your app → iOS builds. Processing can take a while. Install the TestFlight app on your iPhone, accept the invite, and install.

CapWrapp does not yet submit the app for App Store review or external TestFlight. That stays in App Store Connect. Agreements, privacy, age rating, screenshots, and Add for Review are the App Store submission checklist.