React Native
Google Play closed testing for React Native apps
React Native ships through Android's native layer, so the release path is standard Android publishing. The hard part is the same one every developer hits: 12 real testers keeping your app installed for 14 consecutive days.
Getting your build onto Play
- 1
Generate an upload keystore
If you do not already have one, create a signing key. Keep it somewhere you will not lose it - you cannot re-sign an existing Play listing with a different upload key without recovery.
keytool -genkeypair -v -storetype PKCS12 -keystore my-upload-key.keystore \n -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000 - 2
Wire the keystore into your Gradle config
Point android/gradle.properties and android/app/build.gradle at your keystore so release builds are signed with it.
- 3
Build the release bundle
Release builds bundle the JavaScript at build time, so this is also where bundling problems surface.
cd android && ./gradlew bundleRelease - 4
Upload and add the tester group
Upload the bundle to a closed testing track, then add TestSlot's single tester group email to the tester list. One entry covers every TestSlot tester.
What breaks a React Native closed test
- JavaScript bundle errors that only appear in release
Release mode surfaces problems debug never does, particularly around bundle loading and native module initialisation. Run the production build on a physical device before uploading.
- Metro bundler output missing from the build
Release builds bundle the JS ahead of time. If metro.config.js is misconfigured, the bundle may not be included and the app fails on launch for every tester at once.
- Unlinked native modules
Third-party React Native packages often ship native Android components that need linking. Verify every native dependency is configured in your Gradle files before you burn testing days on it.
The part most React Native developers get stuck on
Shipping the build is the easy half. Google still requires 12 real testers who keep your app installed for 14 consecutive days before it will grant production access.
- TestSlot supplies real people on real Android devices, not emulators or scripts.
- Each tester's phone confirms roughly hourly that your app is still installed, and reports the time actually spent in it.
- Streaks are counted server-side, so a changed device clock does nothing to the count.
- If a tester drops out, replacement coverage keeps you at the required headcount.
Questions
- Does Google treat React Native apps differently in closed testing?
- No. Google reviews the shipped Android build and the tester activity behind it. React Native apps face the same 12-tester, 14-consecutive-day requirement as any other Android app.
- Should I ship an APK or an AAB?
- An Android App Bundle. ./gradlew bundleRelease produces the AAB that Play Console expects.
- My app works in Expo Go but fails as a release build. Why?
- Development runtimes load JavaScript differently from a production build, and they do not exercise the same native module initialisation path. Always validate the signed release build on a physical device before it reaches testers.
- Can I keep pushing updates during the 14 days?
- Yes, and you should. Shipping fixes during the window and describing them in your release notes is exactly the kind of genuine testing activity that makes production access questionnaire answers convincing.

