> For the complete documentation index, see [llms.txt](https://docs.akinon.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.akinon.com/tutorials/app-maker/build-and-distribute/distribute-to-stores.md).

# Distribute to Stores

## Distribute to Stores

Once a build succeeds, you can distribute it to the app stores directly from App Maker — no Xcode, Transporter, or Play Console upload needed. This page covers creating a distribution, the iOS (TestFlight / App Store) flow, and the Google Play track flow.

### Creating a Distribution

1. Open the build's detail page and go to the **Distributions** section.
2. Click **Distribute** and select the target store. The store is determined by the build's OS: iOS builds go to the Apple App Store, Android builds to Google Play (or Huawei AppGallery).
3. Choose the release track:
   * **iOS** — `TestFlight` or `Production`.
   * **Android** — `internal`, `alpha`, `beta`, or `production`.
4. Confirm. The upload is queued and its progress appears in the distribution list.

Each distribution has its own **timeline** showing every state change (pending → uploading → uploaded → store review states), and its own log download. A distribution that has not started uploading can be **cancelled**.

> Distribution requires valid store credentials (App Store Connect / Google Play API keys) on the project. See [Credentials](/tutorials/app-maker/projects/settings/credentials.md).

### iOS: TestFlight and App Store

#### Beta Review and Export Compliance

After the binary is uploaded, TestFlight distribution typically requires two submissions, both available as actions on the distribution:

* **Export Compliance** — declare the app's encryption usage. Until this is submitted, the build stays in the *Missing Compliance* state.
* **Beta Review** — submit the build to Apple's beta review so it can be distributed to external testers.

#### External Testers

Once beta review is approved, you can distribute the build to **TestFlight external test groups**. App Maker lists your existing external groups from App Store Connect; select the group(s) to grant access to the build.

#### Releasing to the App Store

For a production release, use the **Release** action on the distribution. Two release types are supported:

* **All at once** — the update is available to every user as soon as Apple approves it.
* **Phased release** — Apple rolls the update out gradually over 7 days to users with automatic updates enabled. While a phased release is active you can **pause**, **resume**, or **complete** it early from the distribution actions.

#### Expiring a Build

To remove a build from TestFlight (for example, to stop testers from installing an outdated version), use the **Expire Build** action.

### Android: Google Play Tracks

Google Play distributions target one of four tracks: `internal` → `alpha` → `beta` → `production`.

* **Upload** — a new distribution uploads the artifact to the selected track.
* **Promote** — instead of re-uploading, promote an existing distribution to a higher track (e.g. from `internal` to `production`). Promotion reuses the reviewed artifact, so it is the fastest path to production.
* **Phased (staged) rollout** — when releasing to `production`, you can release to a percentage of users and increase it over time.

### Keeping Store Status in Sync

Store review states change on Apple's and Google's side. The distribution list refreshes these via **store sync** — use the refresh action if the displayed state looks stale. The build's overall store state (e.g. *Ready for Sale*) is also visible on the [Build Detail](/tutorials/app-maker/build-and-distribute/build-detail.md) page.

### Related Pages

* [Build Detail](/tutorials/app-maker/build-and-distribute/build-detail.md) — timeline, logs, artifact download.
* [Force Update](/tutorials/app-maker/operate-and-update/force-update.md) — retire old versions after a release.
* [CodePush](/tutorials/app-maker/operate-and-update/codepush.md) — ship JS-only fixes without a new store release.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.akinon.com/tutorials/app-maker/build-and-distribute/distribute-to-stores.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
