Firebase App Distribution is a Google service for distributing pre-release builds of mobile applications to testers and internal teams without publishing them in app stores. App Distribution provides a unified interface for uploading APK and IPA files, managing tester groups, and collecting feedback. According to Firebase Documentation, 2026, the service automatically notifies testers about new versions via email and push notifications, and Fastlane integration allows publishing builds directly from a CI/CD pipeline without manual actions. App Distribution supports both Android (AAB/APK) and iOS (IPA), including ad-hoc and enterprise distribution.
Key Takeaways
Firebase App Distribution is a Google service for distributing pre-release versions of mobile applications to testers and stakeholders. Unlike publishing in app stores, App Distribution allows you to deliver builds to selected participants instantly, without a lengthy review process. The service is integrated with Firebase Crashlytics, enabling developers to receive crash reports directly from testers and fix issues before the public release.
The traditional beta distribution process involves manually sending APK/IPA files via email, uploading to third-party file sharing services, or setting up your own server. Firebase App Distribution solves these problems: a unified build repository on Google Cloud, automatic tester notifications, centralized access management, and built-in feedback via Firebase Crashlytics. The service is indispensable for teams practicing CI/CD and regular releases: a new build is available to testers within a minute after upload.
App Distribution supports all standard build formats for mobile platforms. For Android — APK and Android App Bundle (AAB) with automatic APK generation from AAB during installation. For iOS — IPA files for ad-hoc, development, and enterprise distribution. Each build is accompanied by release notes, a version number, and a build code for tracking. The maximum upload file size is 500 MB, and builds are stored for 150 days.
Uploading builds to Firebase App Distribution is done via the Firebase Console, CLI (firebase appdistribution:distribute), or automated tools like Fastlane and Gradle. When uploading, you specify the build version, release notes, and the list of testers or groups that should receive a notification. Firebase automatically assigns a unique identifier to the build and makes it available for installation via a link.
The Firebase Console provides a web interface for uploading builds and managing versions. The console displays the history of all uploaded builds with date, version, status, and installation count. A developer can disable a specific version if a critical bug is found — this will block installation of that version for all testers. The console also shows an installation graph by day, helping track testing activity.
The Firebase CLI allows uploading builds with a single command, which is convenient for CI/CD pipeline integration. The distribute command accepts a file path, a project access token, a list of tester groups, and optional release notes. Authentication uses a Firebase service account with the Firebase App Distribution Admin role. The CLI supports both Android and iOS builds, automatically detecting the platform by the file extension.
# Uploading a build via Firebase CLI
firebase appdistribution:distribute \
app-release.apk \
--app 1:123456789:android:abc123def456 \
--groups "qa-team,product-owners" \
--release-notes "Fixed authorization bug" \
--token "FIREBASE_TOKEN"
Firebase App Distribution provides a flexible tester management system: you can add participants by email, create groups by roles or projects, and assign different builds to different groups. When a new tester is added, the system sends them an invitation email with instructions for installing the application. Testers receive automatic notifications about each new build assigned to their group.
Groups allow you to organize testers functionally. Group examples: QA Team (full access to all builds), Product Owners (access to stable builds), External Testers (limited access for external beta testers). A single tester can belong to multiple groups. When uploading a build, the developer selects target groups — only members of the selected groups receive notifications, eliminating information noise.
To add testers programmatically, the Firebase App Distribution API is used. The API allows you to create testers, add them to groups, and delete them when necessary. This is convenient for integration with internal test management systems and bug trackers. When a tester is added via the API, they also receive an invitation email with a link to install the first application.
const admin = require("firebase-admin")
const serviceAccount = require("./serviceAccountKey.json")
admin.initializeApp({ credential: admin.credential.cert(serviceAccount) })
async function addTestersToGroup(email, groupAlias) {
try {
await admin.appDistribution().addTesters(email, [groupAlias])
console.log("Tester added to group")
} catch (error) {
console.error("Error:", error)
}
}
addTestersToGroup("tester@example.com", "qa-team")
Android build distribution through Firebase App Distribution supports two formats: APK and Android App Bundle (AAB). When uploading an AAB, Firebase automatically generates an APK compatible with the tester’s device using Google Play App Signing. Testers install the application via a direct link — they do not need access to the Google Play Console, nor do they need to be added as testers in the Play Console. This significantly simplifies the beta testing process for Android.
To install via App Distribution, testers must enable installation from unknown sources on their device. Firebase automatically generates a link leading to a web page with an APK install button. For the AAB format, the device must support the Play Core Library and have Google Play Store installed. Firebase recommends using AAB for final versions and APK for quick iterations.
The Firebase App Distribution Gradle plugin allows sending builds directly from a Gradle task. Configuration includes adding the com.google.firebase.appdistribution plugin, setting up a service account, and configuring target groups. After setup, the assembleDistRelease task will build the application and upload it to Firebase App Distribution with a single command.
// build.gradle (module: app)
plugins {
id 'com.android.application'
id 'com.google.firebase.appdistribution'
}
android { // standard config }
firebaseAppDistribution {
appId "1:123456789:android:abc123def456"
serviceCredentialsFile "firebase-sa.json"
groups "qa-team"
releaseNotes "Automatic build"
}
iOS build distribution through Firebase App Distribution requires additional setup because Apple restricts app installation outside the App Store. To distribute iOS apps, you must use ad-hoc or enterprise certificates from the Apple Developer Program. Testers must be added to the Apple Developer Portal as devices for ad-hoc distribution, or use enterprise distribution without device limits.
For ad-hoc distribution, you need to collect the UDID of all tester devices and add them to the Apple Developer Portal. Firebase App Distribution shows testers instructions for finding their UDID and automatically saves registered devices. After adding the UDID to the provisioning profile and building the IPA, testers receive an installation link. Firebase recommends using an enterprise certificate for projects with a large number of testers, as ad-hoc is limited to 100 devices per account.
Fastlane is the recommended tool for automating iOS app builds. The match lane manages certificates and provisioning profiles, while the sigh lane creates an IPA for distribution. Firebase App Distribution integrates with Fastlane through the firebase_app_distribution plugin, which uploads the IPA and notifies testers. Fastlane also supports version management and release notes through additional plugins.
# Fastfile
lane :beta do
match(type: :adhoc)
gym(scheme: "MyApp", export_method: "ad-hoc")
firebase_app_distribution(
app: "1:123456789:ios:abc123def456",
groups: "qa-team",
release_notes: "Build from #\{Time.now.strftime
('%Y-%m-%d %H:%M')}"
)
end
Full Firebase App Distribution integration with CI/CD allows automatically publishing new builds with every commit to the repository. By setting up a CI pipeline, the team gets instant feedback from testers just minutes after a code push. App Distribution supports all popular CI systems: GitHub Actions, GitLab CI, Jenkins, Bitrise, and CircleCI. Each platform requires its own configuration, but the general principle is the same: build → upload → notify.
GitHub Actions allows you to set up automatic build distribution on push to the develop branch or when creating a pull request. The workflow includes installing Java/Flutter/Node.js, building the application, authenticating through a Firebase Service Account, and running the Firebase CLI with the distribute command. Secrets (tokens, service accounts) are stored in GitHub Secrets and are not exposed in build logs. For iOS, Xcode setup and Fastlane installation in the workflow are additionally required.
# .github/workflows/distribute.yml
name: Distribute to Firebase
on:
push: { branches: [ develop ] }
jobs:
build-and-distribute:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Java
uses: actions/setup-java@v3
with: { distribution: "temurin", java-version: "17" }
- name: Build APK
run: ./gradlew assembleDebug
- name: Upload to Firebase
uses: wzieba/Firebase-Distribution-GitHub-Action@v1
with:
appId: "${{ secrets.FIREBASE_APP_ID }}"
serviceCredentialsFileContent: "${{ secrets.FIREBASE_SA_KEY }}"
groups: qa-team
file: app/build/outputs/apk/debug/app-debug.apk
Firebase App Distribution integrates with Firebase Crashlytics for automatic crash report collection from testers. Crashlytics automatically links a crash to a specific build version and device, helping to quickly locate and fix the issue. Testers can also send screenshots and comments via the App Distribution web interface, receiving a feedback form link after installing the build.
Frequently Asked Questions
Firebase App Distribution is a cross-platform service (Android + iOS), unlike TestFlight which works only for iOS. App Distribution also integrates with Crashlytics and Firebase Analytics, providing a unified ecosystem for beta testing on both platforms.
Builds are stored for 150 days from the upload date. After this period, they are automatically deleted. It is recommended to regularly upload new builds and manually delete outdated ones through the Firebase Console to prevent testers from installing old versions.
There is no limit on the number of testers in Firebase App Distribution. For iOS ad-hoc distribution, Apple’s limit of 100 devices per account applies. For Android and iOS enterprise distribution, there are no restrictions on the number of testers.
Yes, App Distribution supports AAB (Android App Bundle). Firebase automatically generates an APK from the AAB for each tester’s device using Google Play App Signing. This is especially convenient for testing before publishing to the Play Store.
Yes, App Distribution is included in the free Firebase Spark plan. Spark plan limits: up to 500 testers and 25,000 installs per month per project. The Blaze plan removes these limits and adds priority support.
Summary
We will develop a mobile application turnkey
IT Sectr creates iOS and Android applications for startups and businesses since 2017. We will advise you and propose the best solution.
Read also