From prompt to public listing
- What your tool builtWeb app, Expo, Flutter or native project
- Signed release AABThe file Google Play accepts
- Developer accountUS$25 once, identity verified
- App content formsPrivacy, Data safety, rating
- Closed test12 testers, 14 days, if your account needs it
- Production releaseAfter access is granted
Your AI tool only changes the first step. Steps two to six are the same for every Android app.
Quick Answer
To publish a vibe-coded app publicly on Google Play, build a signed Android App Bundle (AAB) through the framework your tool actually produced, then complete the account, app content and release requirements. For a personal developer account created after November 13, 2023, the app also needs a closed test with at least 12 testers opted in continuously for 14 days before you can apply for production access. Google's private AI Studio route for personal apps, announced October 13, 2026, is a separate path and does not create a public listing.
Most AI app builders stop at a working preview: a URL, an Expo Go session or an APK on your own phone. None of those is what Google Play reviews. This post starts from what your tool actually produced, then walks through the build, the fixes, the forms and the test in the order Play Console asks for them. Current as of October 16, 2026.
What This Post Covers
Can I publish an app made with AI on Google Play?
Yes, if the finished app meets Google Play's requirements. We found no Google policy that bans an app because AI wrote its code. A public release goes through the same review, quality and policy checks as any other app, so using AI to write code does not remove your responsibility for the finished app.
Google's own October 13, 2026 announcement talks about vibe coding Android apps in Google AI Studio. What it does not create is a shortcut: a public listing still needs a working release, accurate declarations and, for many new personal accounts, the closed test. We found no dated Google policy that targets AI-written apps as a category. The rules that catch weak AI builds are the general ones about usefulness and broken behavior.
“We do not allow apps that only have limited functionality and content.”
Google Play Developer Policy, Minimum Functionality
AI code, AI features and AI listing images are three separate questions
AI wrote your code
There is no declaration for code authorship. Review looks at the app you ship: whether it works, what it does with data and whether it is useful.
Your app generates content with AI
Apps that generate content at runtime fall under Google's AI-generated content policy: safeguards against prohibited content and an in-app way for users to report or flag it.
AI made your store images
Store listing and promotional images and videos have their own conditional AI label declarations, judged item by item. That is about the assets, not your code.
For everything a new app needs before review, see Google Play publishing requirements for 2026.
Do you want a public listing or just an app on your phone?
Decide this first, because private personal use and a public Play listing now have different entry paths. Everything after this section is about the public listing.
Google's private AI Studio route versus a public Play listing
An app only you install
On October 13, 2026 Google announced that apps vibe coded in Google AI Studio can be installed privately on your own device from a personal catalog. Google describes the rollout as starting in select markets, including the US, for users aged 18 and over with a standard Google account. Sharing with a small circle is described as coming later.
An app anyone can install
A public listing needs a Play Console developer account (US$25 one time, with identity verification and, for new personal accounts, a check on a physical Android device running Android 10 or later), a signed AAB, the App content forms and, for personal accounts created after November 13, 2023, the closed test. Google says a public release keeps its normal trust, safety and quality review.
We could not verify a full country list for the private route, so check Google's October 2026 announcement for your market before you plan around it. Do not assume a private app skips safety checks either; Google has not said that.
How do I get the AAB from my tool?
The Android build process follows your project's framework, not the name of the coding assistant. A web Publish button can produce a website without producing an Android App Bundle, so first identify what you have: a web app, an Expo or React Native project, a Flutter project, or a builder that exports an AAB itself.
Pick the tool you built with
Replit
- Route to the AAB
- Replit's mobile documentation says publishing to Google Play is not yet supported by Replit, and that EAS CLI and EAS Build are not supported on Replit. If your project is an Expo app, export the source with Git and run the Expo production build (see the Expo card) on your own machine. If it is a web project, use the Capacitor route in the Lovable card.
- Watch out for
- Advice telling you to run EAS from the Replit Shell is out of date. The export then external build route combines documented pieces; Replit does not offer it as one button.
Lovable
- Route to the AAB
- Lovable publishes websites. It has no built-in store packaging or submission. The documented option is to package the web build yourself with Capacitor:
npm install @capacitor/android, thennpx cap add androidandnpx cap open android, and create the signed bundle in Android Studio. - Watch out for
- The Capacitor major version sets the target API you can reach: Capacitor 8 maps to API 36 and Capacitor 7 to API 35. Check plugins and signing, and remember the wrapper still has to be a useful app, not just the website in a frame.
Bolt
- Route to the AAB
- Bolt can create either a web app or an Expo mobile project. For an Expo project, download it into a local editor, configure EAS and run the Android production build. A web project needs a shell such as Capacitor, or a separate native build.
- Watch out for
- Do not run native build steps against a plain web project. Bolt's own walkthrough goes from internal testing to production; add Google's closed test in between if your account is in scope.
FlutterFlow
- Route to the AAB
- Go to Settings and Integrations > App Settings > Mobile Deployment > Google Play Store, then deploy or download the AAB. FlutterFlow documents a first manual upload to internal testing and automated deployments after that.
- Watch out for
- Save or export the generated upload key, or import your original one. Check the SDK values in the advanced Android settings; FlutterFlow does not promise that every project meets the API or 16 KB rules.
Kodular
- Route to the AAB
- Use Export app as AAB (the documented shortcut is Alt + Shift + E) and upload the resulting bundle.
- Watch out for
- Kodular release 2026.05.3, published September 27, 2026, added target API 36, so rebuild any older AAB. The deprecated Firebase Database component blocks compiling until you migrate it, and every extension needs its own compatibility check.
Expo
- Route to the AAB
- Configure EAS and signing, then run
eas build --platform android --profile production. Download the AAB, or submit it witheas submit --platform android. - Watch out for
- A preview APK is not a Play upload; the production profile builds an AAB. Expo's submission docs, updated October 9, 2026, support an automated first submission, and it lands on the internal track by default. Internal testing is not the closed test, so choose the track on purpose.
Cursor or Claude Code (Flutter)
- Route to the AAB
- Configure release signing, check the application ID and the Gradle SDK values, then run
flutter build appbundle. The bundle appears atbuild/app/outputs/bundle/release/app.aab. - Watch out for
- The assistant is not the runtime; Flutter is. Inspect native plugins, and keep the original application ID if you are updating an app that already exists on Play.
Cursor or Claude Code (React Native)
- Route to the AAB
- Set up the upload keystore and release signing, then run
npx react-native build-android --mode=release. The bundle appears atandroid/app/build/outputs/bundle/release/app-release.aab. If the project uses Expo, follow the Expo card instead. - Watch out for
- React Native 0.81 defaulted to target API 36 and 0.77 added 16 KB support. Those are milestones, not proof that every library in your app complies.
Each route above was checked against the vendor's own documentation on October 16, 2026; none was run on a sample project. Builders change fast, so confirm against the current docs before you build. And do not raise the target SDK number by hand to make an old project pass: upgrade to tooling that supports the new target instead.
What must I fix before uploading?
Check the release artifact before you invite anyone to test it. Three technical checks catch most rebuild surprises: the target API level, native library page size, and the app's identity and signing.
Target API level
New apps and app updates for phones and tablets must target Android 16 (API level 36) or higher since August 31, 2026; apps granted an extension had until November 1, 2026. Wear OS, Android Automotive, TV and XR apps have different targets. The details and the fix path are in the target API level post.
16 KB page size and native libraries
Apps that contain native code must support devices with 16 KB memory pages. Google's current guide blocks incompatible updates from February 1, 2027 for apps targeting API 35 and higher, but that is not an exemption for a new app: check the native libraries now. A framework's 16 KB support does not establish that every native dependency in your app is compatible. See how to find and fix the 16 KB error.
App identity and signing
“If you change the application ID, Google Play Store treats the upload as a completely different app.”
Android Developers, Configure the app module
When an AI rebuild regenerates the project, compare the new application ID with the one Play Console already knows. Keep the upload key and its passwords somewhere safe. With Play App Signing, Google holds the app signing key, and the upload key you sign each bundle with is a separate key.
Will Google reject my web wrapper?
Not for being a wrapper. A wrapper must meet the same published quality rules as the rest of the app, and some of those rules hit thin wrappers hardest.
Permission and useful functionality
Google's spam policy does not allow apps that “provide a webview of a website without permission from the website owner or administrator”, or apps whose main purpose is sending affiliate traffic to a website. Its minimum functionality policy separately covers apps with limited content or broken behavior. A wrapper of your own site passes the permission test, but it still has to do something useful and work on a real device.
TWA versus WebView
A Trusted Web Activity renders your site in the user's browser and proves ownership through Digital Asset Links; a WebView renders it inside your own app. Developers report published TWA apps as well as rejected ones, and Google's public documentation does not say that TWA usage is invisible to testing checks. Change the architecture only for an identified problem, not because a forum says wrappers always fail.
If your TWA shows a browser address bar after installing from Google Play, check Digital Asset Links against the Play signing certificate first: the assetlinks.json SHA-256 fix covers it step by step.
Diagnose the actual rejection
Read the policy named in the rejection email and reproduce the problem in the release build, not the preview. A broken functionality rejection points at a crash, a dead login or a screen that does not load, not at the framework. See how to fix a broken functionality rejection.
Which Play Console forms do I need?
Your declarations must describe what the released app and its dependencies actually do, including SDKs, sign-in, analytics, ads and any cloud AI service. AI builders often add these without telling you.
“Apps that do not access any personal and sensitive user data must still submit a privacy policy.”
Google Play Developer Policy, User Data
| Form | Who needs it | Where | Done when |
|---|---|---|---|
| Privacy policy | Who needs itEvery app | WhereApp content > Privacy policy, plus the policy or a link inside the app | Done whenA public page that matches your app and its real data practices |
| Data safety | Who needs itApps on closed, open or production tracks, even if they collect no data | WhereApp content > Data safety | Done whenAnswers based on the real SDK, backend and WebView inventory |
| Content rating | Who needs itEvery new app | WhereApp content > Content rating questionnaire | Done whenA submitted rating; Google does not allow unrated apps |
| App access | Who needs itApps with a login or restricted features | WhereApp content > App access | Done whenA reviewer can reach every advertised feature |
| Ads and target audience | Who needs itEvery app | WhereApp content > Ads, then Target audience and content | Done whenReal age groups and ad behavior declared |
| Generative AI features | Who needs itApps that generate content at runtime | WhereInside the app itself | Done whenContent safeguards and an in-app way to report or flag output |
| Contacts access | Who needs itApps targeting API 37+ that request READ_CONTACTS | WhereApp content declaration | Done whenBroad access justified, or replaced by the contact picker, by January 27, 2027 |
| Account deletion | Who needs itApps that let users create an account | WhereA deletion request path inside the app and on the web, with that web URL entered in Play Console | Done whenDeleting the account removes its data, with any legitimate retention disclosed |
Menu labels drift between Google's help pages, so if a label differs in your Console, look under App content. These paths come from Google's documentation, not from screenshots of your account.
Where does the closed test fit?
After the build, the forms and a usable release, and before you apply for production access. Google requires it for personal developer accounts created after November 13, 2023; organization accounts and older personal accounts are outside that rule.
“If you have a newly created personal developer account, you must run a closed test for your app with a minimum of 12 testers who have been opted-in for at least the last 14 days continuously.”
Play Console Help, answer 14151465
Use the right track
The test runs on a closed track. Internal testing is useful preparation, with up to 100 testers per app, but it does not count; setting up internal testing explains the difference. A preview URL, an Expo Go session or a sideloaded APK does not count either: testers opt in and install from Google Play.
Apply, then release
When the Dashboard shows you are eligible, apply for production access and answer the questions about your test honestly. Google says review usually takes seven days or less and can occasionally take longer. Approval gives you access to production; you still prepare and submit a production release before the app is public. If you just paid the fee, what to do after paying US$25 lays out the whole order.
What if the rebuild lost my key or changed my package?
First identify whether the rebuild changed your credentials, your app identity or both. Losing an upload key is different from losing an app signing key, and a changed application ID creates a different Play app even if the screens look identical.
| Symptom | Check first | Recovery path |
|---|---|---|
| Lost upload keystore | Check firstIs the app enrolled in Play App Signing? | Recovery pathCreate a new upload key, export its public certificate as a PEM file, then request an upload key reset in Play Console under Manage Play app signing > Upload key certificate. |
| Lost self-managed app signing key | Check firstDid Google manage signing, or did you? | Recovery pathWithout the original key and without Play App Signing, updating the existing app can be impossible. Check before you rebuild under a new identity. |
| Rebuild has a different package | Check firstCompare the new application ID with the live app | Recovery pathRestore the original application ID if you want an update, then check signing and the version code. |
| TWA shows a browser bar after installing from Play | Check firstDoes assetlinks.json list the Play signing certificate? | Recovery pathFix Digital Asset Links for the real package name and signing key. |
| Release build fails while the preview works | Check firstWhat differs between the preview and the release bundle? | Recovery pathExercise the release build itself and check its configuration, native libraries and dependencies. A working browser or Expo preview does not prove the bundle is ready. |
“If you lose your upload key or suspect that it was compromised, you are not locked out of your app.”
Play Console Help, Use Play App Signing
keytool -export -rfc -keystore upload-keystore.jks -alias upload -file upload_certificate.pem
Use your real keystore path and alias. You upload only the public certificate; never send the private key to anyone.
Pre-submission checklist
Submit when the real release build, the declarations, the reviewer access details and the testing evidence all agree. Tick each gate as you clear it.
Ten gates before you submit
0 of 10 gates clearedAll ten gates cleared. Your release, your forms and your test evidence agree.
When does a tester service help?
When you have a usable closed test release and the remaining problem is finding 12 people who will opt in and stay for 14 days. A tester service cannot fix your build, verify your account or make Google's decision for you.
Many AI builders reach this point last: the app works, but nobody around them has an Android phone, or a friend drops out on day nine. PrimeTestLab supplies real testers on real Android devices. You share your opt-in link, testers opt in within 4-6 hours and stay for the full 14 days, and a tester who drops out is replaced the same day (the replacement starts their own 14 days, so a buffer above 12 matters). You never give us Play Console access, and you follow the test on a live dashboard with a written report at the end.
See how the 12-tester service works, or pick a plan below.
Current plans
Starter
12 testers
$19.99
Enterprise
25 testers
$27.99
Professional
25 testers
$59.99
+5% service fee at checkout (minimum $1.50). Visa and Mastercard, processed by Stripe. If Google does not grant production access after the full test, you choose a free retest or a full refund.
Frequently Asked Questions
Can I publish an app I made with AI on Google Play?
Yes. An AI-built app can be submitted for public release, and Google says that path keeps its normal trust, safety and quality review. Identify the framework your tool produced, create its signed Android App Bundle, and complete the account and app requirements that apply to you. Using AI does not, by itself, make the finished app ready.
Replit gave me a link. Where is my AAB?
A published web link is not an Android bundle. Check whether your project is a website or an Expo or React Native mobile project. Replit's current documentation does not support Google Play publishing or running EAS on Replit. Exporting the mobile source and building it with Expo elsewhere is a possible route, but it is not a Replit publishing button.
Can I put my Lovable website in an Android app?
Lovable documents external packaging, including Capacitor, but has no built-in Google Play submission. The Android shell still needs release signing, the right configuration and checks on a real device. Permission to use the website is only one concern; the app also needs useful functionality and a stable experience. Packaging alone does not make it acceptable.
Do I need testers if I built the app with Expo or FlutterFlow?
Check your Play account, not the builder. Google's rule covers personal accounts created after November 13, 2023, and no build tool is exempt. A successful internal upload from Expo or FlutterFlow does not complete the required closed test. Follow the app's Dashboard and run the test on the closed track if your account needs it.
Does a TWA have to be converted to WebView to pass?
No Google requirement we found mandates that conversion. Google documents Trusted Web Activities as a browser-based Android integration, and developers report successful TWA releases as well as rejections. Start with the actual rejection, the website permission, the functionality and how the release build behaves. Claims that TWA testing is invisible to Google are not established by public documentation.
My app collects nothing. Do I still need privacy information?
Yes. Google requires a privacy policy even from apps that access no personal or sensitive data, and apps on closed, open or production tracks must complete Data safety. Check every SDK and remote service first: analytics, ads, sign-in or app-controlled web content can change the right answers even when your own screens collect nothing.
I lost my keystore. Do I need to start a new app?
First identify which key you lost. With Play App Signing, a lost upload key can be replaced through Google's upload key reset, using the public certificate of a new key. Losing a self-managed app signing key without that protection is different and can prevent updates. Check the original app's signing setup before you rebuild under a new identity.
Can I change the package name when I rebuild?
Changing the application ID makes Google Play treat the bundle as a different app. If you want to update the existing listing, restore its original application ID and sign with the right credentials. A familiar app name or an identical interface does not keep the identity when the package identifier underneath has changed.
Does rebuilding with the latest framework fix the 16 KB error?
It may fix the framework's own libraries, but it does not prove the whole app is compatible. Native plugins, SDKs or extensions can still ship incompatible binaries. Inspect the final release bundle and test on a 16 KB environment. Google treats native dependencies as part of your app, including those a third-party builder added for you.
Will my Lovable edits update the Play app automatically?
That depends on how the app is built. A TWA renders your live web content through the browser, while a packaged Android project has its own native release and configuration. Work out which files and services a change affects before deciding whether you need a new bundle. Do not assume every web, plugin, permission or signing change follows the same update process.
Bottom Line
Summary
The AI tool you used does not change what Google Play asks for: a signed AAB, the declarations and, for personal accounts created after November 13, 2023, a closed test with 12 testers opted in for 14 continuous days. Identify what your tool built, follow that framework's release route, fix the target API, 16 KB and signing checks, and fill in the forms from the real build. When finding testers is the last thing standing between you and production access, PrimeTestLab supplies them from $19.99. See plans →