> ## Documentation Index
> Fetch the complete documentation index at: https://docs.openv2.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# App Store

> Submit your Openv2 iOS build to the Apple App Store, from prerequisites through App Review.

Publishing your Openv2 app to the Apple App Store involves three phases: preparing your Apple account and assets, triggering an iOS build through Openv2, and managing the submission and review process in App Store Connect. Openv2 handles the Expo/EAS side of building; the store account, policies, and review outcomes are yours to manage with Apple.

## 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](https://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 your `app.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](/builds-mobile)).
* **Display name** — the name shown under your app icon on the home screen. Set it in `app.json` under `name`.
* **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.

<Note>
  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`.
</Note>

## Build your iOS binary in Openv2

<Steps>
  <Step title="Open the build flow">
    From the **header** of your project, select the **Build** action to open the Expo build wizard.
  </Step>

  <Step title="Select iOS">
    Choose the **iOS** path. The wizard prompts you to sign in with your Apple account and link your Expo/EAS account.
  </Step>

  <Step title="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.
  </Step>

  <Step title="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.
  </Step>

  <Step title="Upload to App Store Connect">
    Use Apple's **Transporter** app (Mac) or **Xcode's Organizer** to upload the IPA to App Store Connect. After uploading, the binary appears under your app's **TestFlight** and **Submissions** sections.
  </Step>
</Steps>

## 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 your `app.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](https://developer.apple.com/app-store/review/guidelines/) before submitting. Common rejection reasons include incomplete metadata, misleading screenshots, or functionality that doesn't match the app description.

<Warning>
  Apple controls submission timelines and review outcomes. Review typically takes one to three days but can take longer. Rejections are communicated through App Store Connect. Use Apple's documentation as the source of truth for policy questions — Openv2 has no influence over Apple's decisions.
</Warning>

## 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.

TestFlight is the recommended way to catch bugs before they reach App Review.

## Iterating on rejections

When App Review rejects your build:

1. Read the rejection message in App Store Connect carefully — it usually cites a specific guideline.
2. Fix the issue in Openv2: update your code or assets in the workbench, ask the AI assistant if you need help.
3. Trigger a new iOS build from the header.
4. Upload the new binary to App Store Connect and resubmit.

<Tip>
  You can respond directly to a rejection in App Store Connect if you believe it was issued in error. Apple reviewers can reconsider, but providing a clear explanation and any supporting evidence (like a demo video) improves your chances.
</Tip>

## What comes next

<CardGroup cols={2}>
  <Card title="Mobile builds" icon="hammer" href="/builds-mobile">
    Understand the full build flow, app icon setup, and how to resolve native dependency issues.
  </Card>

  <Card title="Play Store" icon="google-play" href="/play-store">
    Publish your Android build to Google Play alongside your iOS release.
  </Card>
</CardGroup>
