Google Play Pre-Launch Report: How to Catch Bugs Before Your Testers Do
Google Play Console runs automated tests on every AAB you upload and generates a Pre-Launch Report showing crashes, performance issues, and security vulnerabilities. Learn how to read it, fix the issues it finds, and ship a stable app to your 12 testers.
Get 12 real testers in under 24 hours
TesterBee matches you with 12 real Android users who stay engaged for the full 14-day testing period. Refund if Google rejects your production access due to tester engagement.
You upload your AAB to the Google Play Console, create a Closed Testing track, and start recruiting your 12 testers — but before a single tester installs your app, Google has already tested it. Every AAB uploaded to any Play Console track triggers an automated testing process that runs your app on real devices in the cloud, generating a Pre-Launch Report. Most developers scroll past it. The ones who read it ship apps that do not crash on launch day.
The Google Play Pre-Launch Report is a free, automated quality gate that tests your app across a range of physical Android devices before it reaches any user. It finds crashes, ANRs (Application Not Responding), security vulnerabilities, performance bottlenecks, accessibility issues, and display problems — all without you writing a single test case. For developers going through the 12-tester, 14-day Closed Testing requirement, the Pre-Launch Report is your first line of defense: fix the issues it finds, and your testers will encounter a stable app from day one.
What the Pre-Launch Report Actually Tests
When you upload an AAB to any track (Internal, Closed, Open, or Production), Google spins up a fleet of physical devices in Firebase Test Lab. These are real Android phones and tablets, not emulators, running different Android versions, screen densities, and hardware configurations. On each device, Google's test crawler installs your app and systematically interacts with it for up to 15 minutes per device.
The crawler does not have test scripts. It uses a heuristic exploration algorithm: it taps buttons, scrolls lists, fills text fields with random valid input, navigates back, rotates the screen, and triggers system dialogs. It is essentially a robot user clicking around your app to see what breaks. The results are compiled into five distinct report sections:
1. Stability — Crashes and ANRs
This is the section that matters most. The stability report shows every crash and ANR that occurred during automated testing, organized by device model, Android version, and the specific screen and action that triggered the failure.
Each crash entry includes:
- The full stack trace — exactly what you would see in logcat, deobfuscated if you uploaded mapping files
- The device it happened on — manufacturer, model, Android version, RAM, screen density
- The action that triggered it — a screenshot of the screen and a description like "Tapped on element with text 'Submit'"
- A video replay of the session — you can literally watch the robot user navigate your app up to the crash point
If a crash occurs on more than one device, Google flags it as a "reproducible crash" and highlights it in red. These are your highest-priority issues. A reproducible crash across multiple devices almost certainly means a logic bug in your code — not a device-specific quirk.
The most common crash types found by pre-launch reports:
- NullPointerException — the crawler encounters a screen state you did not handle (empty lists, null intent extras, missing SharedPreferences)
- WindowManager$BadTokenException — showing a dialog after the Activity has been destroyed, often triggered by the crawler rapidly navigating back
- Resources$NotFoundException — referencing a drawable or string resource that does not exist for a specific device configuration (night mode, RTL layout, specific density bucket)
- SecurityException — missing permissions for a feature the crawler accessed; the report will show exactly which permission was missing
- NetworkOnMainThreadException — making a synchronous network call on the UI thread, which the crawler triggers by tapping buttons that initiate API calls
2. Performance — Startup Time and Rendering
The performance section measures cold start time, warm start time, and slow rendering frames across all tested devices. Google surfaces issues when:
- Cold start takes longer than 5 seconds on any device
- More than 10% of frames miss the 16ms render deadline (indicating jank)
- The app uses more than 200MB of memory during testing
For developers about to send their app to 12 testers, this section is especially valuable. If your app takes 8 seconds to cold-start on a mid-range device, your testers will notice — and low engagement during the 14-day testing period is one of the reasons Google rejects production access applications. Fix slow startup times before your testers ever see your app.
The report does not just tell you that startup is slow — it shows a breakdown of what happened during each startup phase: which activities were created, which content providers were initialized, which libraries loaded, and where the time went. Use Android Vitals in the Play Console for ongoing monitoring after launch, but the pre-launch report gives you a snapshot before anyone else sees your app.
3. Accessibility — Screen Reader Compatibility
The accessibility section runs your app through an automated accessibility scanner that checks for common issues: missing content descriptions on clickable elements, insufficient color contrast, touch targets smaller than 48dp, and unlabeled form fields. Each issue includes a screenshot with the problematic element highlighted and a specific recommendation for fixing it.
This is particularly relevant in 2026. With Android 17 introducing Agentic Gemini — AI that interacts with apps on behalf of users — accessibility metadata is no longer just about screen readers. It is about whether an AI agent can understand and navigate your app. The same content descriptions that help TalkBack users also help Gemini. Investing in accessibility coverage during pre-launch testing pays dividends across both human and AI-driven usage.
4. Security — SSL, Permissions, and Exported Components
The security section scans your app for common vulnerabilities:
- SSL/TLS issues — if your app accepts all SSL certificates (trusting self-signed certs) or uses cleartext HTTP traffic
- Exported components — Activities, Services, or BroadcastReceivers declared with android:exported="true" that do not require permissions, potentially allowing other apps to invoke them
- Insecure file permissions — files written with MODE_WORLD_READABLE or MODE_WORLD_WRITEABLE (deprecated but still flagged)
- Outdated library versions — if your APK includes a version of a common library with a known CVE (Common Vulnerabilities and Exposures), Google flags it
These are the kinds of issues that will get your app rejected during Google's production access review. Google's human reviewers check for security vulnerabilities flagged by the automated system. If your pre-launch report shows exported components without permission guards, fix them before applying for production access — a rejection for security issues is one of the hardest to recover from because it signals fundamental architectural problems.
5. Screenshots and Display Issues
The report captures screenshots on every tested device at every screen the crawler visits. This reveals layout problems that would otherwise only surface when a tester with a specific device reports "the button is cut off" or "text overlaps the image." You can browse screenshots organized by device and screen, comparing how your app renders on a small 5-inch phone versus a 10-inch tablet — all without owning either device.
How to Read the Pre-Launch Report Like a Pro
Do not treat every finding as equally urgent. Here is the triage framework used by experienced Android developers:
- Red issues first: reproducible crashes. If the same crash appears on 3+ devices with different Android versions, it is a real bug. Fix it immediately. A crash that reproduces across devices means your app is fundamentally broken for a percentage of users.
- Orange issues second: device-specific crashes. A crash that appears on only one device model and one Android version may be a device-specific quirk, but it still means your app crashes for anyone using that device. Check the stack trace — if it references hardware-specific APIs (camera, NFC, biometric), you may just need to add a feature availability check before calling the API.
- Performance warnings third: slow startup and jank. These will not crash your app but will degrade the tester experience. Fix them before your 14-day testing period begins. A slow app leads to low tester engagement, which Google's reviewers interpret as a sign that the app is not ready for production.
- Security flags fourth. Even if they are not causing crashes, security issues can block your production access approval. Fix all exported component warnings and SSL configuration issues before submitting.
- Accessibility issues fifth. Fix content descriptions and touch target sizes. These are quick wins and directly improve your app's compatibility with Agentic Gemini and TalkBack.
Using the Video Replay to Debug Faster
For every crash, Google provides a screen recording of the test session leading up to the failure. This is often more useful than the stack trace alone. You can watch the exact sequence of taps, scrolls, and screen transitions that triggered the crash — essentially reproducing the bug without needing to set up a test device yourself.
Here is a workflow that saves hours: open the crash entry, play the video at 2x speed until you see the crash screen, then pause and compare the screen state with what you see in the stack trace. Often the stack trace points to a view or fragment that was not initialized because the crawler reached a screen through an unexpected navigation path — one you did not test during development.
How the Pre-Launch Report Fits Into Your Closed Testing Timeline
The ideal workflow for developers using Google Play Closed Testing with 12 testers:
- Day 0: Upload your AAB to the Internal Testing track first. Internal testing has no tester requirements and triggers the pre-launch report immediately. Wait for the report to complete (typically 15-60 minutes).
- Day 0-1: Fix all red and orange issues. Address every crash. Do not promote to Closed Testing with known crashes — you will waste tester time and risk low engagement.
- Day 1: Upload the fixed AAB to the Internal track again. Verify that the pre-launch report now shows zero crashes. This is your green light.
- Day 1-2: Promote the clean build to your Closed Testing track. Now invite your 12 testers. They will install a stable app that has already passed Google's automated testing — dramatically increasing the likelihood of active engagement throughout the 14-day period.
This workflow does not add time — you can recruit testers while the pre-launch report runs. But it ensures that when testers opt in, they experience a crash-free app from the first launch. First impressions matter: a tester who opens your app and immediately hits a crash is unlikely to return for day two of testing.
Common Mistakes Developers Make with the Pre-Launch Report
Mistake 1: Ignoring It Entirely
This is the most common mistake. Developers upload their AAB, see the pre-launch report notification, and dismiss it because they are focused on recruiting testers or filling out the store listing. The report sits there, unread, while the app crashes on 4 out of 10 test devices. Your testers then report crashes, you scramble to fix them mid-testing-cycle, and the 14-day clock may pause if testers drop out due to instability.
Mistake 2: Dismissing Crashes as "It Works on My Device"
The pre-launch report tests on devices you do not own — low-RAM phones, older Android versions, tablets with unusual aspect ratios. A crash that "does not happen on my Pixel" may happen on the Samsung Galaxy A14 that one of your testers uses. The whole point of the pre-launch report is to surface issues on devices you cannot test yourself.
Mistake 3: Not Uploading Deobfuscation Mapping Files
If you use ProGuard or R8 to obfuscate your code, the stack traces in the pre-launch report will show obfuscated class and method names like a.b.c.d() — which are useless for debugging. Upload your mapping.txt file alongside your AAB in the Play Console under "App bundle explorer" > "Upload ReTrace mapping file." With the mapping file uploaded, stack traces become readable and you can trace crashes to the exact line of source code.
Mistake 4: Testing Only One Device Configuration
The pre-launch report tests across multiple device profiles by default, but you can customize which devices and API levels are included. If your app targets a specific region where certain devices dominate (e.g., Xiaomi devices in India, Samsung in Korea), configure the test to include those devices. The default device set is US-centric and may miss region-specific issues.
Mistake 5: Skipping the Accessibility Scans
Accessibility warnings are easy to dismiss because they are not crashes. But missing content descriptions and small touch targets degrade the tester experience and can trigger additional scrutiny during Google's production access review. Fix them. It takes minutes per screen.
Beyond the Pre-Launch Report: What Else to Test Before Sending to Testers
The pre-launch report is automated and finds crashes, performance issues, and security vulnerabilities. It does not replace manual testing. Here is what the report will not catch and what you should manually verify before your testers install:
- Login and authentication flows. The crawler cannot log in. If your app requires sign-in to access core features, the crawler will only test your login screen and onboarding flow — not the authenticated experience.
- Payment and purchase flows. The crawler will not complete real purchases. Test in-app purchase flows manually using Google Play License Testing to avoid charges.
- Background behavior and push notifications. The crawler runs your app in the foreground for 15 minutes. It does not test what happens when your app is backgrounded, when FCM messages arrive, or when the device is rotated during a network call.
- Real network conditions. Firebase Test Lab devices have fast, stable connections. Test your app on slow 3G and intermittent WiFi using Android Emulator network throttling to verify that loading states, timeouts, and retry logic work correctly.
- Permissions at runtime. The crawler grants all requested permissions automatically. It will not test the scenario where a user denies a permission — you need to manually verify that your app handles permission denial gracefully with clear explanations rather than crashes.
Pre-Launch Reports and the Production Access Review
When you apply for production access after completing your 14-day Closed Testing period, Google's reviewers look at your app's quality signals. The pre-launch report is part of that assessment. An app with zero crashes, reasonable startup time, and clean security scans signals to Google that you have done your due diligence. An app with known crashes that were never fixed signals that you rushed to production.
Google does not explicitly list pre-launch report results as a production access criterion, but reviewers have access to the same Android Vitals and pre-launch data that you see in the Play Console. A clean pre-launch report strengthens your application. A report full of unresolved crashes weakens it.
For developers using a testing service like TesterBee to meet the 12-tester requirement, the pre-launch report is a critical step before inviting testers. Send your testers a stable build. Their engagement during the 14-day testing period depends on it — and engagement is what Google's reviewers look for when evaluating your production access application.

Founder, TesterBee
Built TesterBee after struggling with Google Play's 12-tester requirement himself. Has helped 1,200+ developers get production access. Read full story →