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

# Ship to stores

> The 8-step iOS publish wizard inside Vibely — build, TestFlight, testers, metadata, screenshots, privacy, review, status.

Shipping a mobile app to the store is normally a multi-hour ordeal: certificates, provisioning profiles, screenshots, metadata, the privacy questionnaire, then waiting on App Review. Vibely's iOS publish wizard walks the whole flow inside the product — eight ordered steps, each with the supporting cards you'd otherwise hunt for across App Store Connect and your Xcode project.

This page is the feature tour.

## About Expo and EAS

Vibely's mobile apps are built on **Expo**. **EAS** (Expo Application Services) is the cloud build infrastructure — no Mac required for iOS builds. You connect your Expo account once; from there the wizard drives EAS for every build, upload, and submission.

You don't need to learn EAS or hand-write `eas.json`. The agent set that up correctly when the project was created.

## The 8-step iOS publish wizard

Open it from the project's **Ship** menu. The wizard runs each step in order; you can jump back to earlier steps to tweak anything before submission.

<Steps>
  <Step title="Build">
    Kick off an EAS build for the platform + profile you want. Vibely streams the build log live; iOS typically lands in 12–18 minutes. The build artifact is what every subsequent step refers to.
  </Step>

  <Step title="TestFlight">
    Upload the finished build to TestFlight in App Store Connect. Vibely handles the API call and surfaces processing status — you don't need to open App Store Connect for this.
  </Step>

  <Step title="Testers">
    Invite internal testers (up to 100, instant access) and external testers (up to 10,000, first build of each version goes through Apple's beta-app review). Emails go out from TestFlight; testers install via the TestFlight app.
  </Step>

  <Step title="Metadata">
    Fill in the App Store metadata form: app name, subtitle, description, keywords, support URL, marketing URL, age rating answers, categories. Vibely shows you exactly what App Store Connect requires and flags missing fields before you proceed.
  </Step>

  <Step title="Screenshots">
    Upload device screenshots for the required display sizes. The wizard lays out the slots Apple expects and tells you when a slot is missing.
  </Step>

  <Step title="Privacy">
    Walk the App Privacy questionnaire — what data your app collects, how it's used, whether it's linked to the user. Vibely maps each answer back into App Store Connect; you don't fill the form twice.
  </Step>

  <Step title="Review">
    Submit the build for App Review. The wizard confirms everything Apple expects to be present (build picked, metadata complete, screenshots uploaded, privacy answered) and then files the submission.
  </Step>

  <Step title="Status">
    Track the App Review outcome — In Review, Pending Developer Release, Approved, Rejected. If Apple rejects, the reason lands here so you can jump back to the affected step and resubmit.
  </Step>
</Steps>

## Cards rendered alongside the wizard

Four supporting cards sit next to the step list and stay visible while you work — they cover the long-lived configuration the steps depend on.

### Credentials

The credentials card shows the signing setup for your build: iOS distribution certificate, provisioning profile, and the team they belong to. EAS-managed credentials are the default — EAS generates, stores, rotates, and renews them so you don't get blindsided by an expired certificate. If you need to bring your own (paste an existing certificate + key), this is the card to do it from.

### Push permissions

If your app uses push notifications, the push permissions card surfaces the capability state: is the APNs key uploaded, is the entitlement in `app.json`, is the permission string set. Missing pieces are flagged with a one-click fix.

### Release notes

Each submission carries a short "what's new" note for testers and reviewers. The release notes card is where you write it. The wizard pulls from here when filing to TestFlight and App Review.

### Deep links

Universal links and custom URL schemes live in the deep links card — domains your app should claim, the AASA configuration Vibely will serve, and which routes resolve where inside the app. Edit here once; the wizard wires the rest.

## Pre-publish security scan

Before the wizard files anything to Apple, Vibely runs a security scan on your project. Findings appear inline; some block submission, others are warnings you can choose to ship anyway. See [Mobile security](/docs/mobile-app/security) for what's checked and how findings are handled.

## Android

Android publishing follows the same shape — EAS build, upload to Play Console, Internal Testing for fast iteration, then a production submit. Internal builds skip Google review; production submits are typically faster than Apple's review after the first one lands.

## OTA updates

For JavaScript or asset-only changes, Vibely ships via **EAS Update** — users get the new code on next app launch with no store review. The agent picks the right mode automatically:

* **OTA update** — pure JS/asset changes. Live in minutes.
* **Native update** — anything that touches `app.json`, permissions, plugins, or native modules. Requires a new build and a fresh submission.

OTA updates can be rolled back instantly from the EAS dashboard.

## Limits

* iOS and Android publishing require their respective developer accounts ($99/year Apple, $25 one-time Google). Those are Apple's and Google's fees, not Vibely's.
* Some Apple features (App Clips, widgets, non-Expo push providers) require a custom EAS development build — one-time setup.
* In-app purchases must use StoreKit / Play Billing or RevenueCat — web checkout for digital goods is against store policy. See [Native → IAP](/docs/mobile-app/native#in-app-purchases).
