If you already have a React web application, you do not need to rewrite it completely to publish an Android app. Capacitor can package the production web build inside an Android project and expose selected native capabilities through plugins. This is usually the fastest route for dashboards, commerce apps, SaaS products, content platforms, and internal tools.
This guide explains how to deploy a React app to Play Store in 2026, from choosing the right architecture to generating a signed .aab, completing Play Console declarations, and preparing for Indian users. It assumes an existing React project built with Vite, Create React App, or a similar tool.
Choose the right route first
Your technology choice affects performance, native access, and maintenance:
- Capacitor: Best for an existing React web app. You retain HTML, CSS, and React components while adding Android integration where required.
- React Native: Better when you are starting a mobile product or need deeply native interfaces and sustained high performance. Reusing a web React codebase usually requires substantial UI changes.
- Trusted Web Activity: Suitable for a high-quality, installable PWA that already works well online. It offers less native integration and depends heavily on the web experience.
If your application includes AI inference, consider the device and network architecture before wrapping it. AI model optimization for mobile devices is relevant when models run on-device; server-hosted workloads need careful API, authentication, latency, and offline handling instead.
Prepare the React app for mobile
Start with a production build that behaves correctly on small screens and unreliable networks.
1. Confirm the build command. Run npm run build and identify whether the output directory is dist or build. Vite normally uses dist; Create React App normally uses build.
2. Set the correct base path. A Capacitor app loads local assets, so avoid assumptions that files are served from the website root. Check your bundler’s base or homepage setting.
3. Make navigation mobile-safe. Test deep links, refreshes, authentication redirects, keyboard behaviour, modals, and forms on Android devices.
4. Reduce the initial payload. Use route-level code splitting, compressed images, lazy loading, and cache headers for remote resources. This matters on entry-level phones and mobile connections across India.
5. Define an offline policy. Decide which screens should remain usable without connectivity and show clear states when APIs fail. A service worker can help with web caching, but it does not replace native storage or sync logic.
6. Remove browser-only assumptions. Check file uploads, downloads, clipboard access, camera use, notifications, and pop-ups inside Android WebView.
Do not claim native functionality that the app does not provide. Play review can reject thin wrappers with poor navigation, broken links, or little utility beyond a website.
Add Capacitor to the project
Install Capacitor and initialise the Android package:
npm install @capacitor/core @capacitor/cli
npx cap initThe CLI asks for an app name and an application ID, such as in.example.product. Choose the ID carefully: it identifies the Play Store package and should not be changed after release.
Set the web directory in capacitor.config.ts or capacitor.config.json to match your build tool:
import type { CapacitorConfig } from '@capacitor/cli';
const config: CapacitorConfig = {
appId: 'in.example.product',
appName: 'Example Product',
webDir: 'dist'
};
export default config;Install and add Android:
npm install @capacitor/android
npx cap add androidAfter every web change that should appear in the native project, run:
npm run build
npx cap sync androidsync copies web assets and updates installed Capacitor plugins. Commit the Android project and review changes rather than treating it as disposable generated output.
Configure Android and native features
Open the project with Android Studio:
npx cap open androidUse a current stable Android Studio and the SDK versions required by your installed Capacitor release. Android and Play policies change, so check the current target API requirement in Play Console before release rather than copying an old tutorial.
Review these areas:
- Application ID: Confirm it matches the ID registered in Play Console.
- Versioning: Increase
versionCodefor every uploaded bundle. UseversionNamefor the customer-facing version, such as1.2.0. - Permissions: Request only permissions necessary for a user-visible feature. Explain sensitive access clearly in-app.
- Status and navigation bars: Test edge-to-edge layouts, cut-outs, dark mode, and keyboard resizing.
- Icons and splash screen: Generate adaptive launcher icons and verify them on light and dark backgrounds.
- Plugins: Use maintained Capacitor plugins for camera, files, notifications, biometrics, and device features. Avoid exposing secrets in JavaScript.
For an AI product, keep API keys and privileged prompts on a backend. If your app calls an inference service, production deployment practices such as rate limiting and observability matter as much as the Android wrapper; see this guide to deploy AI web apps quickly for a broader release workflow.
Generate a signed Android App Bundle
New Play Store apps should be uploaded as an Android App Bundle (`.aab`), not an APK. In Android Studio:
1. Select Build > Generate Signed Bundle / APK.
2. Choose Android App Bundle.
3. Select the release build variant.
4. Create or select a keystore and signing key.
5. Build the bundle and record its output path.
Protect the keystore, passwords, and upload credentials in a password manager or secrets system. Never commit them to Git. Google Play App Signing can protect the app-signing key while you use an upload key for submissions, but losing access to your upload process can still delay releases.
Before uploading, test a release build on physical devices. Confirm login, deep links, push notifications, file handling, payments, analytics consent, crash reporting, and back-button behaviour. An emulator is useful, but it will not reproduce every low-memory, network, or manufacturer-specific issue.
Complete Play Console release requirements
Create the app in Google Play Console, select the correct app category, add a support email, and complete the store listing. You will typically need:
- App name, short description, full description, icon, screenshots, and feature graphic
- Privacy policy URL that works without login
- Data safety declarations matching your actual SDKs and backend
- Content rating questionnaire
- Target audience and age declarations
- Ads declaration and financial or health-related disclosures where applicable
- App access instructions if reviewers need credentials
- A signed
.aabuploaded to internal, closed, or production testing
New personal developer accounts may face testing requirements before production access. Read the requirements shown in your account because eligibility and review steps can change. A staged rollout is safer than sending an untested release to every user.
For Indian products, support UPI and local payment flows only through compliant providers, publish transparent pricing, and account for GST, refunds, and applicable business obligations. Technical launch planning should sit alongside Indian CA compliance guidance, especially if the app collects subscription revenue or sells services.
India-focused launch checklist
Before production, test on a representative range of devices and connections:
- Entry-level Android phones with limited RAM and storage
- Android versions supported by your chosen Capacitor release
- 4G, slow networks, intermittent connectivity, and captive portals
- Hindi and other target languages, including text expansion and font rendering
- UPI or other payment flows without storing sensitive payment data
- Battery usage, startup time, and the size of the initial download
Measure crashes, failed API calls, WebView errors, and abandoned onboarding. Use feature flags for risky changes and keep a rollback plan. If your product later moves AI workloads closer to the device, compare native, WebView, and edge approaches using guidance on deploying machine learning models on edge devices in India.
Common mistakes
- Uploading an APK when the release requires an app bundle
- Forgetting to run
npm run buildandnpx cap syncbefore opening Android Studio - Reusing the same
versionCodefor an update - Changing the application ID after creating the Play listing
- Leaving debug URLs, test credentials, or verbose logs in release builds
- Requesting broad permissions without a clear user benefit
- Treating a responsive website as a finished mobile product
- Declaring data collection inaccurately because third-party SDK behaviour was not audited
A React app can reach the Play Store quickly, but approval is only the beginning. Keep the web layer lightweight, make native integrations deliberate, monitor real Android devices, and release through testing tracks before expanding distribution.