Skip to content

How to Publish a Capacitor or Ionic App on Google Play

Build web assets, sync to Android, generate a signed bundle in Android Studio, and avoid the “minimum functionality” rejection for web-based apps.

Updated 3 min readBy the TestersZone team

Short answer

Build your web app, run npx cap sync android, open the android/ project in Android Studio (npx cap open android), set the version in android/app/build.gradle, then use Build → Generate Signed App Bundle. Make sure the app offers real app functionality, not just a wrapped website.

1. Prepare the web build

Run your framework’s production build (for example npm run build) so the output folder Capacitor uses (webDir in capacitor.config) is fresh.

2. Sync and open

  • npx cap sync android copies web assets and updates native plugins.
  • npx cap open android opens Android Studio.

3. Set IDs and versions

  • appId in capacitor.config must match applicationId in android/app/build.gradle. It’s permanent once uploaded.
  • versionCode and versionName in android/app/build.gradle. Increase versionCode for every upload.
  • Check android/variables.gradle for compileSdkVersion and targetSdkVersion. Target API 36 has been required since August 31, 2026. Upgrading Capacitor usually updates these.

4. Generate a signed bundle

In Android Studio choose Build → Generate Signed App Bundle / APK → Android App Bundle, create or select your keystore, choose the release variant, and build. The .aab lands in android/app/release/ (or the path Studio shows). Keep the keystore backed up.

5. Avoid “minimum functionality” problems

Google Play’s policies require apps to provide a stable, engaging experience. Apps that only load a website in a WebView are a classic rejection risk. Strengthen yours with:

  • Native features: push notifications, offline support, camera, share sheet, biometrics.
  • Content that works without a network, or a graceful offline screen.
  • Native-feeling navigation (no browser chrome, proper back button handling).

6. Capacitor gotchas

SymptomFix
Old web build in the appRun cap sync after every web build
Mixed content blockedUse HTTPS APIs
Back button closes the appHandle backButton events with the App plugin
Plugin crash in releaseAdd keep rules for reflection-based plugins

After the bundle is built: same path for every app

  1. Create the app in Play Console and complete the store listing and App content. See does a closed test need a store listing.
  2. Upload the .aab to a closed testing track (internal first is optional). See upload your first AAB.
  3. Attach a tester list and publish. Share the opt-in link.
  4. On a new personal account: keep 12+ testers opted in for 14 days, then apply for production access.

Frequently asked questions

Do I need Android Studio for Capacitor?

You need the Android SDK. Android Studio is the easiest way to get it and to generate a signed bundle, though Gradle on the command line works too.

Can I use live reload in production?

No. Live reload is a development feature. Production builds must bundle your web assets inside the app.

How do I add push notifications?

Use Capacitor’s push notifications plugin with Firebase Cloud Messaging, and declare notification permission handling for Android 13+.

Sources and how we keep this accurate

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 free

Keep reading

Browse all guides, or see the quick answers, guides and comparisons.