Prerequisites
Have the following in place before starting your iOS build:- Apple Developer Program membership — the paid individual or organization account at developer.apple.com. You cannot submit to the App Store without it.
- Bundle identifier — set a unique reverse-domain ID (for example,
com.yourcompany.appname) in yourapp.json. This must match the app ID you register in App Store Connect. - App icon — a 1024×1024 PNG with no transparency or rounded corners. Openv2 can generate or upload this for you (see Mobile builds).
- Display name — the name shown under your app icon on the home screen. Set it in
app.jsonundername. - Privacy policy URL — required if your app collects any user data. Host a privacy policy at a public URL and have it ready for App Store Connect.
Create your app record in App Store Connect before your first submission. You’ll need the bundle ID to match what’s in your Openv2 project’s
app.json.Build your iOS binary in Openv2
Open the build flow
From the header of your project, select the Build action to open the Expo build wizard.
Select iOS
Choose the iOS path. The wizard prompts you to sign in with your Apple account and link your Expo/EAS account.
Complete the credential steps
Follow the wizard’s prompts for Apple sign-in and EAS linkage. The modal explains each step and tracks progress. If a native dependency error appears, fix it in the workbench (ask the AI assistant for help), then restart the build.
Download the IPA
When the build completes, download the IPA from the build modal or build history. You’ll upload this file to App Store Connect.
Common friction points
Missing capabilities and entitlements
If your app uses features like Sign in with Apple, push notifications, or background modes, those capabilities must be enabled in your App Store Connect app record and declared in your Expo config. A mismatch causes build rejection or runtime failures. Ask the AI assistant to add the correct config plugin and entitlement entries to yourapp.json or app.config.js if they’re missing.
App Privacy disclosure
App Store Connect requires you to complete the App Privacy questionnaire, which asks what data your app collects and how it’s used. Be accurate — Apple and reviewers check this against your app’s actual behavior.Account deletion requirement
If your app supports account creation, Apple requires you to provide an in-app account deletion flow. Apps without one are rejected. Ask the AI assistant to implement this if your app has authentication.Login demo credentials
If your app requires a login to review, provide demo credentials in the App Review notes when submitting. Reviewers cannot approve an app they can’t access.Review guidelines
Read Apple’s App Review Guidelines before submitting. Common rejection reasons include incomplete metadata, misleading screenshots, or functionality that doesn’t match the app description.TestFlight for beta testing
Before submitting for public review, use TestFlight to distribute your build to testers.- Internal testing — available immediately after upload, for up to 100 members of your Apple Developer team.
- External testing — requires a brief TestFlight review from Apple, then allows up to 10,000 external testers via an invite link or public link.
Iterating on rejections
When App Review rejects your build:- Read the rejection message in App Store Connect carefully — it usually cites a specific guideline.
- Fix the issue in Openv2: update your code or assets in the workbench, ask the AI assistant if you need help.
- Trigger a new iOS build from the header.
- Upload the new binary to App Store Connect and resubmit.
What comes next
Mobile builds
Understand the full build flow, app icon setup, and how to resolve native dependency issues.
Play Store
Publish your Android build to Google Play alongside your iOS release.
