How to Publish a React Native App on Google Play
Build a signed release AAB for a bare React Native app: upload keystore, gradle.properties, bundleRelease, Hermes, ProGuard and getting it into a closed test.
Short answer
Generate an upload keystore, put its path and passwords in android/gradle.properties (or a safer secrets file), add a release signingConfig in android/app/build.gradle, then run ./gradlew bundleRelease inside android/. Upload android/app/build/outputs/bundle/release/app-release.aab to a closed track.
Using Expo?
If your project uses Expo (managed or with EAS), follow publish an Expo app instead. This guide is for the bare React Native CLI workflow.
1. Application ID and version
In android/app/build.gradle set applicationId (permanent), versionCode (bump every upload) and versionName (shown to users).
2. Upload keystore
Create a keystore with keytool and keep it outside the repo. React Native’s “Publishing to Google Play Store” docs suggest putting the store file name, alias and passwords in android/gradle.properties as MYAPP_UPLOAD_* variables. Better still, keep the passwords in ~/.gradle/gradle.properties or environment variables so they’re not committed.
3. Signing config
Add a release entry under signingConfigs in android/app/build.gradle that reads those variables, and point buildTypes.release.signingConfig to it. The React Native docs show the snippet.
4. Build
From the android folder run ./gradlew bundleRelease. The bundle lands at android/app/build/outputs/bundle/release/app-release.aab.
Test the release build on a device before uploading (npx react-native run-android --mode release, or the equivalent for your RN version). Release-only bugs are common.
5. React Native gotchas
| Symptom | Likely cause |
|---|---|
| Crash on launch in release only | Missing ProGuard/R8 keep rules for a native module |
| Blank screen in release | JS bundle not included, or an exception swallowed in production |
| Debug-only network config | Cleartext HTTP blocked in release. Use HTTPS |
| Old targetSdk | Upgrade React Native. Since August 31, 2026 you need API 36. See target API 36 |
6. Crash reporting before testers arrive
Add a crash reporter (Crashlytics or Sentry) so tester crashes come with stack traces. See add Crashlytics to your test build.
After the bundle is built: same path for every app
- Create the app in Play Console and complete the store listing and App content. See does a closed test need a store listing.
- Upload the .aab to a closed testing track (internal first is optional). See upload your first AAB.
- Attach a tester list and publish. Share the opt-in link.
- On a new personal account: keep 12+ testers opted in for 14 days, then apply for production access.
Frequently asked questions
Is Hermes required?
No, but it’s the default JavaScript engine in recent React Native versions and usually improves startup and memory use.
How do I test the exact release build?
Build the release variant and install it on a device (bundletool can turn your .aab into installable APKs). Release-only bugs are common, so test before uploading.
Can CI build my React Native bundle?
Yes. Store the keystore and passwords as CI secrets and run the Gradle bundleRelease task. Never commit the keystore.
Sources and how we keep this accurate
- Android Developers: About Android App Bundles
- Play Console Help: Use Play App Signing
- React Native docs: Publishing to Google Play Store
Policy facts are checked against Google's own documentation on the date shown above. Google can change requirements at any time, so confirm in your Play Console. Where we give advice or estimates rather than Google's rules, we say so. TestersZone is independent and not affiliated with Google. Drafts are AI-assisted and reviewed by our team.
Need 12 testers? Get them free.
Test 3 apps, earn 60 credits, and list your app for up to 20 real testers with verified daily check-ins.
Start freeKeep reading
How to Publish an Expo App on Google Play With EAS
Add Firebase Crashlytics to Your Closed Test Build
How to Upload Your First App Bundle to Play Console
How to Publish a Unity Game on Google Play
How to Publish a Flutter App on Google Play (2026)
How to Publish a Godot Game on Google Play
Browse all guides, or see the quick answers, guides and comparisons.