# How releasing works

> This page is about FlutterFlow (the app builder you use by describing your app), not FlutterFlow Studio.

URL: https://docs.flutterflow.io/ffx/how-releasing-works

Learn the four stages that your app goes through in each store, where each version comes from, how your store accounts work, and who can release.

In [**Releases**](https://docs.flutterflow.io/ffx/glossary#sharing-and-releases), you take your app to the App Store and Google Play through your own developer accounts. You connect each store account, test your app, and then submit a [version](https://docs.flutterflow.io/ffx/glossary#sharing-and-releases) for review.

To see these steps in FlutterFlow, go to **Releases** and select **How releasing works** at the top of the page.

## The four stages {#stages}

Each store moves through the same four [stages](https://docs.flutterflow.io/ffx/glossary#sharing-and-releases): **Set up**, **Test**, **Review**, and **Live**. The App Store and Google Play move independently, so one store can be in **Review** while the other is still in **Test**.

| Stage | What happens |
| --- | --- |
| **Set up** | You create your developer account, connect FlutterFlow to it, and add your app in the store's console. |
| **Test** | FlutterFlow uploads a version of your app, and your testers try it through TestFlight or Google Play. |
| **Review** | You submit the version, and Apple or Google reviews it. |
| **Live** | People can get your app from the store. |

Testing and the public release are separate steps. Sending a version to testers doesn't submit it for review.

FlutterFlow builds your app for iPhone only, so the App Store requires no iPad screenshots.

**Releases** shows a card for each store with its stage, whose move it is, and the next action when it's your move. The bar at the top holds the next send, to one store or to both, and appears only when you have a version to send. See [Release status](https://docs.flutterflow.io/ffx/release-status).

<Mock name="store-status" alt="The App Store card at Test, saying Apple is processing 0.1 and With Apple, and the Google Play card at Review, saying Answer Google’s questions and Your move, with Open Play Console." />

## Versions {#versions-come-from-your-app}

FlutterFlow builds every version from your app, which is what you've pushed. Work in a thread that you haven't pushed never reaches testers or the stores. Changes that you push reach the stores in the next version that you send.

The exception is going back to an earlier version: FlutterFlow builds that version again, and your app doesn't change. See [Earlier versions](https://docs.flutterflow.io/ffx/go-back).

## Store accounts {#store-accounts}

Your store accounts are FlutterFlow's connections to your Apple Developer account and your Google Play account. They belong to your FlutterFlow account, not to one app, so you connect each store account once and every app can use it. An Apple team key can reach every app on your Apple team.

If you have only one store account for a store, a new app uses it automatically. If you have more than one store account, or if you created the app before connecting the account, an owner of the app chooses which one it uses, starting from the one that most of your apps use.

An owner can change it later: in **Releases**, select **Change** next to the store account that the app uses, or choose another account in **Project Settings › App stores**. After the store has the app, choose a store account that can reach it there. Moving the app to another Apple team or Google Play account takes an app transfer in that store.

Only an owner of your account can connect, rename, or disconnect store accounts. To see your store accounts, open the account menu and select **App stores**.

To stop one app from using a store account, open that store's page in **Releases** and select **Stop using on** followed by your app's name, or in **Project Settings › App stores** choose **None** for that store and confirm **Stop using**. The connection stays for your other apps.

When you disconnect a store account, uploads to that store stop for every app that uses it until you select another store account for each app. Before you confirm, FlutterFlow lists the apps that disconnecting affects. Disconnecting deletes FlutterFlow's copy of the key. To revoke the key itself, go to App Store Connect for an Apple key or Google Cloud for a Google Play key.

To connect each store, see [Connect App Store Connect](https://docs.flutterflow.io/ffx/connect-app-store) and [Connect Google Play](https://docs.flutterflow.io/ffx/connect-google-play).

## What stays in the consoles {#what-stays-in-the-consoles}

Some tasks stay in App Store Connect and Play Console, such as the questions that Apple and Google ask before they review a version. See [Finish console setup](https://docs.flutterflow.io/ffx/console-setup).

## Who can release {#who-can-release}

Owners and developers can send versions to testers and submit them for review. Billing members and viewers don't see store status or versions in **Releases**. Only owners can connect a store for an app, choose the store account that it uses, and set its App ID. See [Team roles](https://docs.flutterflow.io/ffx/roles).

Your [allowance](https://docs.flutterflow.io/ffx/plans-and-allowance) pays for the agent's work. Every release builds from what you have pushed to your app. Asking the agent for a build in a thread uses allowance, like any other message to the agent.

When Apple requests changes, clicking **Fix with the agent** opens a new thread with a prefilled request; sending that request uses allowance.

## Next steps {#what-you-can-do-next}

- [Launch checklist](https://docs.flutterflow.io/ffx/launch-checklist)
- [Developer accounts](https://docs.flutterflow.io/ffx/developer-accounts)
- [Send to testers](https://docs.flutterflow.io/ffx/send-to-testers)
- [Submit for review](https://docs.flutterflow.io/ffx/submit-for-review)
