Publishing your project

Publishing apps (iOS & Android)

From merge to store: TestFlight and Internal Track run automatically, you trigger the store release with one click.

On this page

The platform builds, signs, and distributes your apps automatically. You only take care of two things: setting up the store credentials once and later triggering the store release.

One-time setup

  1. Create store accounts – as organization credentials:
  2. Link them in the app: when creating or editing the app you set the bundle ID and select the store account.
  3. Existing Play Store apps: if the app is already published, import the original upload key — see Android: Import upload key.
  4. Maintain metadata: title, description, and screenshots – see Store metadata.

iOS code signing (certificates, provisioning profiles) is managed automatically by the platform via an encrypted repository of your organization – nothing to do here.

What happens automatically on every merge

As soon as your code is in main and a store account is linked:

  1. The pipeline builds the release builds for iOS and Android and assigns the new version.
  2. publish-ios uploads the build to TestFlight (internal testers) and updates the store metadata – without submitting for review.
  3. publish-android publishes the build to the Internal Track of the Play Console.
  4. Builds are additionally distributed to testers via Firebase App Distribution.

So you can test every state internally before it goes to the store.

Note
Without a linked store account, the pipeline builds debug builds and distributes them via Firebase App Distribution only – handy for early project phases.

The store release (manual)

When a build should go to the store, start the manual job in GitLab under CI/CD → Pipelines:

  • release-iossubmits the app to Apple for review; after passing review it is released automatically.
  • release-android – promotes the Internal Track build to the Play Store’s production track.

Tips for the store review: App store review notes.

See also