---
description: The definitive guide to publishing your web app on the App Store and Google Play — step-by-step, every tool you need, and a checklist to do it yourself.
title: 11 Steps to Get Your Web App on the App Store - Capawesome
image: https://capawesome.io/docs/assets/images/social/blog/11-steps-to-get-your-web-app-on-the-app-store.png
---

[ Skip to content](#11-steps-to-get-your-web-app-on-the-app-store-2026) 

[ 🔐 Introducing the **Capacitor Vault** plugin — store secrets behind biometrics or a device passcode.](/blog/announcing-the-capacitor-vault-plugin/) 

* [  Formbricks ](/docs/plugins/formbricks/)
* [  Geocoder ](/docs/plugins/geocoder/)
* [  Google Sign-In ](/docs/plugins/google-sign-in/)
* [  Grafana Faro ](/docs/plugins/grafana-faro/)
* [  libSQL ](/docs/plugins/libsql/)
* [  Live Update ](/docs/plugins/live-update/)
* [  Managed Configurations ](/docs/plugins/managed-configurations/)
* [  Media Session ](/docs/plugins/media-session/)
* [  ML Kit ](/docs/plugins/mlkit/)
* [  Navigation Bar ](/docs/plugins/navigation-bar/)
* [  NFC ](/docs/plugins/nfc/)
* [  OAuth ](/docs/plugins/oauth/)
* [  Pedometer ](/docs/plugins/pedometer/)
* [  Photo Editor ](/docs/plugins/photo-editor/)
* [  PostHog ](/docs/plugins/posthog/)
* [  Printer ](/docs/plugins/printer/)
* [  Purchases ](/docs/plugins/purchases/)
* [  RealtimeKit ](/docs/plugins/realtimekit/)
* [  Screen Orientation ](/docs/plugins/screen-orientation/)
* [  Screenshot ](/docs/plugins/screenshot/)
* [  Secure Preferences ](/docs/plugins/secure-preferences/)
* [  Speech Recognition ](/docs/plugins/speech-recognition/)
* [  Speech Synthesis ](/docs/plugins/speech-synthesis/)
* [  Share Target ](/docs/plugins/share-target/)
* [  Square Mobile Payments ](/docs/plugins/square-mobile-payments/)
* [  SQLite ](/docs/plugins/sqlite/)
* [  Superwall ](/docs/plugins/superwall/)
* [  Torch ](/docs/plugins/torch/)
* [  Vault ](/docs/plugins/vault/)
* [  Wifi ](/docs/plugins/wifi/)
* [  Zip ](/docs/plugins/zip/)
* [  Cloud ](/docs/cloud/)
* [  Live Updates ](/docs/cloud/live-updates/)
* Advanced
* Integrations
* [  Native Builds ](/docs/cloud/native-builds/)
* [  Configuration ](/docs/cloud/native-builds/configuration/)
* [  Environments ](/docs/cloud/native-builds/environments/)
* Guides
* [  Sample Projects ](/docs/cloud/native-builds/sample-projects/)
* [  Troubleshooting ](/docs/cloud/native-builds/troubleshooting/)
* [  Automations ](/docs/cloud/automations/)
* [  Assist ](/docs/cloud/assist/)
* Account
* Organizations
* [  Organization and User Management ](/docs/cloud/organizations/memberships/)
* [  Single Sign-On (SSO) ](/docs/cloud/organizations/sso/)
* [  Teams ](/docs/cloud/organizations/teams/)
* [  Two-Factor Authentication ](/docs/cloud/organizations/two-factor-authentication/)
* [  Integrations ](/docs/cloud/integrations/)
* [  License Keys ](/docs/cloud/license-keys/)
* [  Webhooks ](/docs/cloud/webhooks/)
* [  Pricing ](https://capawesome.io/pricing/)
* [  FAQ ](/docs/cloud/faq/)
* [  Support ](/docs/cloud/support/)
* [  Contributing ](/docs/contributing/)
* [  LLMs ](/docs/llms/)
* [  Insiders ](/docs/insiders/)
* [  License ](https://capawesome.io/legal/eula/)
* [  Support ](/docs/insiders/support/)
* [  FAQ ](/docs/insiders/faq/)
* [  Blog ](/blog/)
* Categories

* [  Step 2 — Add Native Features with Plugins ](#step-2-add-native-features-with-plugins)
* [  Step 3 — Create Your Developer Accounts ](#step-3-create-your-developer-accounts)
* [  Step 4 — Generate Your Signing Certificates ](#step-4-generate-your-signing-certificates)
* [  Step 5 — Build Your Native App in the Cloud ](#step-5-build-your-native-app-in-the-cloud)
* [  Step 6 — Distribute to Testers ](#step-6-distribute-to-testers)
* [  Step 7 — Prepare Your Store Listing ](#step-7-prepare-your-store-listing)
* [  Step 8 — Complete Google Play's Closed Testing Period ](#step-8-complete-google-plays-closed-testing-period)
* [  Step 9 — Submit for Review ](#step-9-submit-for-review)
* [  Step 10 — Set Up Live Updates: Your Biggest Advantage ](#step-10-set-up-live-updates-your-biggest-advantage)
* [  Step 11 — Automate Everything ](#step-11-automate-everything)
* [  Everything Inside Capawesome Cloud ](#everything-inside-capawesome-cloud)
* [  Need Expert Help? We Do That Too ](#need-expert-help-we-do-that-too)
* [  The Complete Checklist to Deploy a Mobile app ](#the-complete-checklist-to-deploy-a-mobile-app)
* [  Final Thoughts ](#final-thoughts)

* Related links

# 11 Steps to Get Your Web App on the App Store (2026)[¶](#11-steps-to-get-your-web-app-on-the-app-store-2026 "Permanent link")

You have a web app. Maybe you built it yourself, maybe you vibe-coded it with an AI assistant over a weekend. It works, you like it — and now you want it on the App Store and Google Play.

The problem is that every tutorial you find was written for people who already live in Xcode and Android Studio. They assume you have a Mac, know what a provisioning profile is, and have configured Gradle before. If you're coming from the web world — or you're an indie maker who just shipped a React or Vue app — those guides feel like they start three levels above where you are.

This guide starts at zero. It covers every step from "I have a web app" to "my app is live on both stores and I can push fixes without waiting for review" — using tools that handle the painful parts for you.

We've walked hundreds of users through this exact process. Here's everything we've learned, in one place.

[ ![Build and deploy your Capacitor app with Capawesome Cloud](../../assets/external/cloud.capawesome.io/assets/banners/cloud-build-and-deploy-capacitor-apps.69628c3f.png) ](https://capawesome.io/) 

## Who This Guide Is For[¶](#who-this-guide-is-for "Permanent link")

This guide is for you if any of these sound familiar:

* You built a web app with React, Next.js, Vue, Angular, Svelte, or any other framework and want to ship it as a native app
* You're vibe-coding a product with Claude, Cursor, or Copilot and want to reach mobile users
* You have a working app but have no idea how to get it into the App Store
* You've been burned by App Store and Google Play Store review delays and want a way to push fixes instantly
* You need to build for iOS but don't own a Mac

By the end of this guide you'll have:

* A native iOS and Android app built from your existing web code
* Both apps live on the App Store and Google Play
* A system to push bug fixes and new features to users in minutes — without app store review

## The Full Picture: What You'll Use[¶](#the-full-picture-what-youll-use "Permanent link")

Before we dive in, here's a map of the tools involved. Most of them are free or already covered by a single Capawesome Cloud subscription.

| What you need                                  | Tool                                                                                  | Cost              |
| ---------------------------------------------- | ------------------------------------------------------------------------------------- | ----------------- |
| Convert web app to native                      | [Capacitor](https://capacitorjs.com/)                                                 | Free, open source |
| Add native features (camera, biometrics, etc.) | [Capawesome Plugins](https://capawesome.io/docs/plugins/)                             | Free & paid       |
| AI-assisted setup                              | [Capawesome Skills](https://capawesome.io/skills/)                                    | Free              |
| Generate iOS certificates                      | [iOS Certificate Generator](https://capawesome.io/tools/ios-certificate-generator/)   | Free              |
| Generate Android keystore                      | [Android Keystore Generator](https://capawesome.io/tools/android-keystore-generator/) | Free              |
| Build iOS + Android in the cloud               | [Native Builds](https://capawesome.io/cloud/native-builds/)                           | Capawesome Cloud  |
| Publish to App Store + Google Play             | [App Store Publishing](https://capawesome.io/cloud/app-store-publishing/)             | Capawesome Cloud  |
| Push instant updates without review            | [Live Updates](https://capawesome.io/cloud/live-updates/)                             | Capawesome Cloud  |
| Automate the whole pipeline                    | [Automations](https://capawesome.io/cloud/automations/)                               | Capawesome Cloud  |
| Apple developer account                        | [developer.apple.com](https://developer.apple.com/programs/enroll/)                   | $99/year          |
| Google Play account                            | [play.google.com/console](https://play.google.com/console/signup)                     | $25 one-time      |

Let's walk through each step.

## Step 1 — Convert Your Web App to Native with Capacitor[¶](#step-1-convert-your-web-app-to-native-with-capacitor "Permanent link")

[Capacitor](https://capacitorjs.com/) is an open-source runtime that wraps your web app in a native iOS and Android shell. Your code — React, Angular, Vue, Svelte, plain HTML, whatever — runs inside a WebView, and a native bridge connects it to device APIs through plugins.

This is fundamentally different from React Native or Flutter. There's no rewrite. No new framework. If you can `npm run build` your app today, you can have a native version of it running on a phone by the end of this afternoon.

### Why Not a PWA?[¶](#why-not-a-pwa "Permanent link")

Progressive Web Apps are great for some use cases, but they have hard limits: you can't publish them on the App Store or Google Play, iOS PWAs have persistent bugs with notifications and offline support, and you can't access device APIs like biometrics, NFC, or Bluetooth. A Capacitor app is a real, store-listed native app — it just happens to be powered by web code.

### Who Uses Capacitor?[¶](#who-uses-capacitor "Permanent link")

Capacitor isn't a new framework. It's the runtime behind production apps used by millions of people every day — from indie makers to [Fortune 500 companies](https://ionic.io/customers) across fintech, healthcare, logistics, and consumer products. The framework is maintained by the Ionic team, has over 12,000 GitHub stars, and ships regular releases.

If you're worried about picking something that gets abandoned: Capacitor is the foundation of an entire ecosystem of tools, services, and companies that depend on it long-term. It's not going anywhere.

### Setting Up Capacitor[¶](#setting-up-capacitor "Permanent link")

Install Capacitor in your existing web project:

`[](#%5F%5Fcodelineno-0-1)npm install @capacitor/core @capacitor/cli
[](#%5F%5Fcodelineno-0-2)npx cap init
`

Add the iOS and Android platforms:

`[](#%5F%5Fcodelineno-1-1)npm install @capacitor/ios @capacitor/android
[](#%5F%5Fcodelineno-1-2)npx cap add ios
[](#%5F%5Fcodelineno-1-3)npx cap add android
`

Build your web assets and sync them to the native projects:

`[](#%5F%5Fcodelineno-2-1)npm run build
[](#%5F%5Fcodelineno-2-2)npx cap sync
`

That's it. You now have a `ios/` and `android/` folder at the root of your project containing full native Xcode and Android Studio projects — pointing at your web build output. Every time you run `npx cap sync`, Capacitor compiles your web assets and copies them into the native projects, so the app always reflects your latest code.

### Works With Any Framework[¶](#works-with-any-framework "Permanent link")

Capacitor is genuinely framework-agnostic. The setup is the same whether you use:

| Framework               | Build output  | Capacitor config |
| ----------------------- | ------------- | ---------------- |
| React (Vite)            | dist/         | webDir: "dist"   |
| Angular                 | www/ or dist/ | webDir: "www"    |
| Vue (Vite)              | dist/         | webDir: "dist"   |
| Next.js (static export) | out/          | webDir: "out"    |
| SvelteKit (static)      | build/        | webDir: "build"  |
| Plain HTML              | any folder    | webDir: "public" |

**Deep-dive guides:**For more specific walkthroughs related to this topic, check the following guides:

* [Build Mobile Apps with Any Web Framework and Capacitor](/blog/build-mobile-apps-with-any-web-framework-and-capacitor/)
* [How to Wrap an Angular App with Capacitor and Firebase](/blog/how-to-wrap-an-angular-app-with-capacitor-and-firebase/)

### The Vibe Coding Path: Let an AI Agent Do the Setup[¶](#the-vibe-coding-path-let-an-ai-agent-do-the-setup "Permanent link")

If you're building with an AI coding assistant, install the [Capawesome Skills](https://capawesome.io/skills/) to give your agent deep Capacitor knowledge:

`[](#%5F%5Fcodelineno-3-1)npx skills add capawesome-team/skills --skill capacitor-app-creation
`

Then prompt your agent (Claude Code, Cursor, Copilot):

`` [](#%5F%5Fcodelineno-4-1)Use the `capacitor-app-creation` skill to set up Capacitor in my project.
 ``

The agent will initialize Capacitor, add the platforms, fix your `capacitor.config.ts`, and sync everything — correctly, on the first try, without you having to know what `npx cap sync` does.

## Step 2 — Add Native Features with Plugins[¶](#step-2-add-native-features-with-plugins "Permanent link")

A plain Capacitor app renders your web UI on a phone. That's useful, but the real power comes from connecting your JavaScript code to native device features through plugins.

Here's a sample of what's possible with the [Capawesome plugin library](https://capawesome.io/docs/plugins/):

### Authentication & Security[¶](#authentication-security "Permanent link")

**[Biometrics Plugin](https://capawesome.io/docs/plugins/biometrics/)** — Add Face ID, Touch ID, and fingerprint authentication to your app. One call to `authenticate()` handles the platform-specific prompt on both iOS and Android.

**[Vault Plugin](https://capawesome.io/docs/plugins/vault/)** — Store secrets (tokens, keys, passwords) behind biometric or device-passcode protection. Backed by hardware-level encryption on both platforms.

**[Apple Sign-In](https://capawesome.io/docs/plugins/apple-sign-in/) / [Google Sign-In](https://capawesome.io/docs/plugins/google-sign-in/)** — Native OAuth flows that look right on every device.

### Camera & Media[¶](#camera-media "Permanent link")

**[Audio Player](https://capawesome.io/docs/plugins/audio-player/) / [Audio Recorder](https://capawesome.io/docs/plugins/audio-recorder/)** — Record and play back audio with full platform integration. Background playback, lock screen controls, the works.

**[File Picker](https://capawesome.io/docs/plugins/file-picker/)** — Let users pick files from their device with the native file browser. Returns the file URI or base64 data.

### Scanning & Recognition[¶](#scanning-recognition "Permanent link")

**[ML Kit Barcode Scanning](https://capawesome.io/docs/plugins/mlkit/barcode-scanning/)** — On-device barcode and QR code scanning using Google's ML Kit. No server required.

**[ML Kit Document Scanner](https://capawesome.io/docs/plugins/mlkit/document-scanner/)** — Let users scan documents with edge detection and automatic cropping, just like a proper scanner app.

**[NFC Plugin](https://capawesome.io/docs/plugins/nfc/)** — Read and write NFC tags on both Android and iOS.

### Connectivity[¶](#connectivity "Permanent link")

**[Bluetooth Low Energy](https://capawesome.io/docs/plugins/bluetooth-low-energy/)** — Connect to BLE peripherals: fitness trackers, IoT devices, medical devices, beacons.

**[WiFi Plugin](https://capawesome.io/docs/plugins/wifi/)** — Get WiFi state, SSID, and signal strength.

### Payments & Monetization[¶](#payments-monetization "Permanent link")

**[Purchases Plugin](https://capawesome.io/docs/plugins/purchases/)** — In-app purchases and subscriptions via RevenueCat. One SDK, both stores.

**[Superwall Plugin](https://capawesome.io/docs/plugins/superwall/)** — A/B test paywalls without app updates.

### Firebase Integration[¶](#firebase-integration "Permanent link")

The full [Firebase plugin suite](https://capawesome.io/docs/plugins/firebase/) covers Analytics, Authentication, Crashlytics, Cloud Messaging (push notifications), Remote Config, Firestore, Cloud Storage, and more — each as a separate, tree-shakeable package.

### And Many More[¶](#and-many-more "Permanent link")

Capawesome maintains [50+ plugins](https://capawesome.io/docs/plugins/) covering sensors (accelerometer, barometer, pedometer), productivity (contacts, app shortcuts, badge count), printing, screen orientation, speech recognition and synthesis, SQLite, geolocation, and more.

Can't find the plugin you need? 

Capawesome offers custom plugin development — the team has built custom Capacitor plugins for dozens of companies. [Get in touch.](https://capawesome.io/consulting/)

## Step 3 — Create Your Developer Accounts[¶](#step-3-create-your-developer-accounts "Permanent link")

You need accounts on both platforms before anything can go live. This is a one-time setup, but it has real timelines you need to plan around.

### Apple Developer Program — $99/year[¶](#apple-developer-program-99year "Permanent link")

Sign up at [developer.apple.com/programs/enroll](https://developer.apple.com/programs/enroll/). Apple takes up to 48 hours to approve new accounts. If you're registering as an organization (to publish under a company name rather than your personal name), you'll also need a D-U-N-S number, which takes 5–7 business days to obtain.

**Start this process first.** It's the most common cause of delayed launches.

### Google Play Console — $25 one-time[¶](#google-play-console-25-one-time "Permanent link")

Sign up at [play.google.com/console/signup](https://play.google.com/console/signup). The $25 fee is paid once and your account never expires. Identity verification usually completes within a few hours.

Full walkthrough: [How to Create Your Apple Developer and Google Play Developer Accounts](/blog/how-to-create-apple-developer-and-google-play-accounts/)

## Step 4 — Generate Your Signing Certificates[¶](#step-4-generate-your-signing-certificates "Permanent link")

Every app submitted to the stores must be cryptographically signed — this is how Apple and Google verify the build came from you. You need:

* **iOS:** a distribution certificate + provisioning profile
* **Android:** a keystore file

This is where most first-timers get stuck. The official Apple documentation for code signing is notoriously opaque. The good news: you can generate everything you need directly in your browser, without Xcode or Android Studio.

### Free Browser Tools[¶](#free-browser-tools "Permanent link")

**[iOS Certificate Generator](https://capawesome.io/tools/ios-certificate-generator/)** generates iOS development and distribution certificates along with a CSR file — the same thing you'd normally do through Keychain Access on a Mac, but in your browser. No sign-up, nothing leaves your device.

**[Android Keystore Generator](https://capawesome.io/tools/android-keystore-generator/)** creates a PKCS#12 keystore file for signing your Android app. Fill in the fields, download the file, store it somewhere safe — you'll need it for every future release.

**[iOS UDID Finder](https://capawesome.io/tools/ios-udid-finder/)** — if you need to register a test device for development builds, this finds your device UDID from any browser.

Once you have your certificates, upload them to Capawesome Cloud once. Every subsequent build picks them up automatically — no local keychain required, no credentials in your CI environment variables.

* [Docs: iOS signing certificates](https://capawesome.io/docs/cloud/native-builds/certificates/ios/)
* [Docs: Android signing certificates](https://capawesome.io/docs/cloud/native-builds/certificates/android/)

For a detailed explanation of what certificates and provisioning profiles actually are:

[iOS Certificates and Provisioning Profiles Explained](/blog/ios-certificates-and-provisioning-profiles-explained/)

## Step 5 — Build Your Native App in the Cloud[¶](#step-5-build-your-native-app-in-the-cloud "Permanent link")

Traditionally, building an iOS app requires a Mac with the right version of Xcode. Building a production Android APK requires Android Studio with the right Java and Gradle versions configured. Both need your signing credentials stored locally.

Capawesome Cloud [Native Builds](https://capawesome.io/cloud/native-builds/) eliminates all of that. You connect your Git repository, and the build happens on **Apple Silicon M4 Pro hardware** in the cloud — delivering typical build times of 2–5 minutes. You can trigger builds from Windows, Linux, or a Chromebook. No Mac required.

### How It Works[¶](#how-it-works "Permanent link")

**Step 1: Connect your repository**

Link your GitHub, GitLab, Bitbucket, or Azure DevOps repository to Capawesome Cloud. This is a one-time OAuth authorization.

**Step 2: Trigger a build**

From the Capawesome Cloud Console, choose your branch, select iOS or Android, pick your build type (Debug, Release, Simulator), and hit Build.

![Creating an iOS build in the Capawesome Cloud Console](/docs/assets/images/screenshots/cloud-app-builds-ios-create.png)

**Step 3: Download or deploy**

When the build completes, download the IPA or APK/ABB directly — or chain it into an App Store Publishing destination with one click.

### Video Walkthroughs[¶](#video-walkthroughs "Permanent link")

Android build — full workflow from Git to downloadable ABB:

iOS build — Simulator build and signed Development build:

### Build From the CLI[¶](#build-from-the-cli "Permanent link")

You can also trigger builds from the terminal with the [Capawesome CLI](https://capawesome.io/docs/cloud/cli/):

`[](#%5F%5Fcodelineno-5-1)npx @capawesome/cli apps:builds:create \
[](#%5F%5Fcodelineno-5-2)  --platform ios \
[](#%5F%5Fcodelineno-5-3)  --buildType release
`

This makes it easy to plug Capawesome Cloud into any existing CI pipeline — GitHub Actions, GitLab CI, Bitbucket Pipelines, Jenkins, or anything else.

### Advanced Features[¶](#advanced-features "Permanent link")

* **[Environments](https://capawesome.io/docs/cloud/native-builds/environments/)** — define separate configurations for dev, staging, and production builds
* **[Auto-increment build numbers](https://capawesome.io/docs/cloud/native-builds/guides/auto-incrementing-build-numbers/)** — never manually bump your build number again
* **[Build without Git](https://capawesome.io/docs/cloud/native-builds/guides/build-without-git/)** — upload a ZIP if you don't want to connect a repository
* **[Assist — Ask AI](https://capawesome.io/docs/cloud/assist/)** — when a build fails, click Ask AI to get a plain-English diagnosis with a suggested fix

Full setup guide: [Getting Started with Native Builds](https://capawesome.io/docs/cloud/native-builds/setup/)

## Step 6 — Distribute to Testers[¶](#step-6-distribute-to-testers "Permanent link")

Before going to the public stores, get your app onto real devices. Finding bugs on a physical device — especially iOS — is consistently different from finding them in a simulator.

Capawesome Cloud App Store Publishing supports all the major testing channels:

**TestFlight (iOS)** — Upload your IPA to TestFlight and invite testers by email. Testers install the app from the TestFlight app. Internal testers (up to 100) skip the review queue; external testers go through a simplified review that usually takes a few hours.

**Google Play Internal Testing** — Share your app via a link immediately after upload, with no review. Testers install it directly from the Play Store.

You can also install a build directly on a device from the Capawesome Cloud Console without going through any store:

![Install App dialog for iOS in Capawesome Cloud](/docs/assets/images/screenshots/cloud-install-app-ios.png) 

Full guide: [How to Distribute iOS and Android Apps to Testers](/blog/how-to-distribute-ios-and-android-apps-to-testers/)

## Step 7 — Prepare Your Store Listing[¶](#step-7-prepare-your-store-listing "Permanent link")

This is where most first-timers hit an unexpected wall. The app is built, it works, but you can't submit it without a complete store listing. Apple and Google require:

* **App icon** — 1024×1024px for iOS (no transparency), 512×512px for Google Play
* **Screenshots** — Apple now requires iPhone 6.9" (1320×2868px) screenshots; these are mandatory
* **App name and description** — Apple gives you 30 characters for the name, 30 for a subtitle, and 100 characters of keywords (comma-separated, don't repeat what's in the name)
* **Privacy policy URL** — Required by both platforms, even for free apps with no data collection
* **Age rating** — Calculated from a questionnaire in each store's console
* **Data collection disclosures** — Apple's Privacy Nutrition Labels and Google's Data Safety section both require you to declare every type of data your app collects, including data from third-party SDKs

The full checklist with every requirement, device size, and tool recommendation:

[How to Prepare Your App Store Listing](/blog/how-to-prepare-your-app-store-listing/)

## Step 8 — Complete Google Play's Closed Testing Period[¶](#step-8-complete-google-plays-closed-testing-period "Permanent link")

**This is the most common surprise for first-time publishers, and it can delay your Android launch by weeks.**

For **personal developer accounts created after November 13, 2023**, Google Play requires new apps to complete a **closed testing period** before they can publish to the public ([source](https://support.google.com/googleplay/android-developer/answer/14151465)):

* You need **at least 12 testers** who actively opt in via a special link
* The testing period must run for **at least 14 consecutive days**
* After 14 days with 12+ active testers, you can apply for production access

Organization accounts are not subject to this requirement.

This means your Google Play launch is a minimum of two weeks from when you have 12 testers opted in. **Start recruiting testers the moment your first Android build is ready** — don't wait until you're "ready to launch."

Good places to find testers: your existing user base (if any), the [Capawesome Discord community](https://discord.gg/VCXxSVjefW), your company's Slack, friends, family.

The App Store does not have this requirement — iOS apps go live immediately after Apple's review.

## Step 9 — Submit for Review[¶](#step-9-submit-for-review "Permanent link")

With your store listing complete and testing done, you're ready to submit.

### App Store (iOS)[¶](#app-store-ios "Permanent link")

In App Store Connect, set your app's release strategy (manual or automatic after approval), assign the build you want to submit, and click Submit for Review. Apple's review typically takes 3–5 days for new apps.

Common reasons for rejection: - Missing privacy policy - App crashes on launch (test on a real device, not just a simulator) - Metadata mismatch (screenshots don't match the app's actual UI) - Missing required functionality explanations - Login credentials not provided. You must provide the review team with an active and functional test account. Because App Review is an automated and manual process, the reviewers cannot access account-restricted features without valid login information.

Be careful with all these requirements, because even though you can resubmit your app after a rejection, each resubmission takes longer to be reviewed.

### Google Play[¶](#google-play "Permanent link")

After your closed testing period, apply for production access in the Google Play Console. Once approved, your initial review typically takes 3–7 days.

### Automated Submissions with Capawesome Cloud[¶](#automated-submissions-with-capawesome-cloud "Permanent link")

Capawesome Cloud [App Store Publishing](https://capawesome.io/cloud/app-store-publishing/) automates the submission step entirely. You connect your App Store Connect API key and Google Play service account once, configure your store destinations, and then publish with a single click — or automatically on every successful native build via [Automations](https://capawesome.io/docs/cloud/automations/setup/).

![Creating a deployment in Capawesome Cloud](/docs/assets/images/screenshots/cloud-app-deployments-create.png) 

Supported destinations: - Apple App Store (production) - TestFlight (internal and external) - Google Play (Internal, Alpha, Beta, Production) - Firebase App Distribution

When a submission fails, [Ask AI](https://capawesome.io/docs/cloud/assist/) in the Capawesome Console parses Apple's or Google's validator output and tells you exactly what went wrong and how to fix it — in plain language.

## Step 10 — Set Up Live Updates: Your Biggest Advantage[¶](#step-10-set-up-live-updates-your-biggest-advantage "Permanent link")

Once your app is approved, this is the feature that changes everything about how you iterate.

**The problem with native app updates:** Every change you ship — a bug fix, a copy tweak, a new feature — must go through the App Store review queue. That's 1–5 days. For critical bugs, that's an eternity.

**Live Updates bypass the queue entirely.**

Because Capacitor separates your app into a native shell and a web layer (HTML, CSS, JavaScript, and static assets), you can update the web layer over the air — directly to users' devices, in minutes. Don't take our word for it — here's what developers like you said after shipping their first app with Capawesome:

**King Arthur Baking:** _"We can quickly deliver improvements without app store delays, saving time and resources while keeping the experience fresh for our baking community."_

**snapADDY**: _"We now deliver daily live updates to more than 200,000 devices without any issues."_

**Summon Worlds**: _"We mainly use over-the-air (OTA) updates to deliver critical bug fixes and updates when waiting on the App Store review process is not an option."_

### What Live Updates Can and Can't Do[¶](#what-live-updates-can-and-cant-do "Permanent link")

**Can update:** any change to your HTML, CSS, JavaScript, images, fonts, JSON data, and other static assets.

**Cannot update:** changes that require new native code, new Capacitor plugins, new iOS/Android permissions, or changes to `Info.plist` / `AndroidManifest.xml`. Those still need a native build and a store review.

In practice, the vast majority of day-to-day iteration — UI changes, bug fixes, new screens, content updates — falls in the "can update" category.

### Setup[¶](#setup "Permanent link")

Install the Live Update plugin:

`[](#%5F%5Fcodelineno-6-1)npm install @capawesome/capacitor-live-update@latest
[](#%5F%5Fcodelineno-6-2)npx cap sync
`

Configure it in `capacitor.config.ts`:

`[](#%5F%5Fcodelineno-7-1)import { CapacitorConfig } from '@capacitor/cli';
[](#%5F%5Fcodelineno-7-2)
[](#%5F%5Fcodelineno-7-3)const config: CapacitorConfig = {
[](#%5F%5Fcodelineno-7-4)  plugins: {
[](#%5F%5Fcodelineno-7-5)    LiveUpdate: {
[](#%5F%5Fcodelineno-7-6)      appId: 'your-app-id-from-capawesome-cloud',
[](#%5F%5Fcodelineno-7-7)      autoUpdateStrategy: 'background',
[](#%5F%5Fcodelineno-7-8)    },
[](#%5F%5Fcodelineno-7-9)  },
[](#%5F%5Fcodelineno-7-10)};
[](#%5F%5Fcodelineno-7-11)
[](#%5F%5Fcodelineno-7-12)export default config;
`

`autoUpdateStrategy: 'background'` is the recommended default — the app checks for updates at every launch, downloads them silently in the background, and applies them the next time the user opens the app. No code changes, no user prompts.

Shipping a fix from that point forward:

`[](#%5F%5Fcodelineno-8-1)npm run build
[](#%5F%5Fcodelineno-8-2)npx @capawesome/cli apps:liveupdates:upload
`

Done. Every user gets the fix on their next app launch.

### Advanced Live Update Features[¶](#advanced-live-update-features "Permanent link")

Capawesome Cloud Live Updates includes features that enterprise teams depend on:

**[Channels](https://capawesome.io/docs/cloud/live-updates/channels/)** — ship different bundles to different user segments. Useful for A/B testing, staged rollouts, or keeping your beta users on a separate track.

![Creating a channel in Capawesome Cloud](/docs/assets/images/screenshots/cloud-app-channels-create.png)

**[Rollouts](https://capawesome.io/docs/cloud/live-updates/advanced/rollouts/)** — gradually roll out a new bundle to 10%, 25%, 50%, then 100% of users. Watch your error rates before committing to a full release.

![Live Update rollout in progress](/docs/assets/images/screenshots/cloud-app-live-updates-rollout-complete.png)

**[Rollbacks](https://capawesome.io/docs/cloud/live-updates/advanced/rollbacks/)** — if something goes wrong, roll back to the previous bundle instantly from the console.

![Rolling back a bundle in Capawesome Cloud](/docs/assets/images/screenshots/cloud-app-bundles-rollback.png)

**[Code Signing](https://capawesome.io/docs/cloud/live-updates/advanced/code-signing/)** — RSA-sign your bundles so the Live Update SDK verifies authenticity on every device before applying an update.

**[Delta Updates](https://capawesome.io/docs/cloud/live-updates/advanced/delta-updates/)** — only ship the files that changed, not the entire bundle. Dramatically reduces update size and delivery time for returning users.

**[Device Management](https://capawesome.io/docs/cloud/live-updates/devices/)** — force specific devices to a specific channel. Great for QA devices, internal testing, or enterprise deployments.

![Forcing a device to a channel in Capawesome Cloud](/docs/assets/images/screenshots/cloud-app-devices-forced-channel.png)

Note 

Include the Live Update plugin in your first release — even before you have updates to ship. Adding a new plugin requires a new Native Build and another store review, and that's exactly the situation you don't want to be in when you're trying to push a critical fix.

**Full documentation:**

* [Getting Started with Live Updates](https://capawesome.io/docs/cloud/live-updates/setup/)
* [Capacitor Live Updates: A Complete Guide to OTA Updates](/blog/capacitor-live-updates-guide/)
* [Update Strategies](https://capawesome.io/docs/cloud/live-updates/guides/update-strategies/)
* [Live Updates Best Practices](https://capawesome.io/docs/cloud/live-updates/guides/best-practices/)

## Step 11 — Automate Everything[¶](#step-11-automate-everything "Permanent link")

Once you're comfortable with the flow, the final step is connecting the pieces so that a `git push` triggers the entire pipeline without you touching a dashboard.

[Capawesome Cloud Automations](https://capawesome.io/docs/cloud/automations/setup/) lets you define end-to-end pipelines:

`[](#%5F%5Fcodelineno-9-1)git push to main
[](#%5F%5Fcodelineno-9-2)  → Trigger Native Build (iOS + Android)
[](#%5F%5Fcodelineno-9-3)  → On success: publish to TestFlight + Google Play Internal
[](#%5F%5Fcodelineno-9-4)  → On build approval: deploy Live Update to production channel
`

Automations can be triggered on a **Git push** to a specific branch or tag. When a build or deployment completes, Capawesome Cloud can send a [webhook](https://capawesome.io/docs/cloud/automations/webhooks/) with the result — making it easy to post notifications to Slack, Microsoft Teams, Discord, or any other tool, so your team knows when a build succeeds or fails without watching the console.

For CI/CD pipelines you already have, the [Capawesome CLI](https://capawesome.io/docs/cloud/cli/) and [REST API](https://capawesome.io/docs/cloud/api/) let you trigger any action from GitHub Actions, GitLab CI, Bitbucket Pipelines, Azure DevOps, or Jenkins.

**Guides:**

* [Capacitor CI/CD in 2026: Why Specialization Wins](/blog/ci-cd-for-capacitor-apps/)
* [CI/CD for Capacitor: Common Pitfalls and How to Avoid Them](/blog/ci-cd-for-capacitor-common-pitfalls/)
* [GitHub Actions integration](https://capawesome.io/docs/cloud/live-updates/integrations/github-actions/)
* [GitLab CI/CD integration](https://capawesome.io/docs/cloud/live-updates/integrations/gitlab-ci/)

## Everything Inside Capawesome Cloud[¶](#everything-inside-capawesome-cloud "Permanent link")

Here's the full picture of what Capawesome Cloud gives you — all under one roof, one subscription, one dashboard. All plans include a **14-day free trial**.

### Native Builds[¶](#native-builds "Permanent link")

Cloud-based iOS and Android builds on Apple Silicon M4 Pro. No Mac, no build servers to manage. Average build time: 2–5 minutes. Includes managed code signing, build history, downloadable artifacts, environment variables, and full build logs.

**Thousands of native builds** are completed on Capawesome Cloud every month.

### Live Updates[¶](#live-updates "Permanent link")

OTA updates delivered over a global CDN. Includes channels, rollouts, rollbacks, RSA code signing, delta updates, device management, and analytics.

### App Store Publishing[¶](#app-store-publishing "Permanent link")

One-click submissions to TestFlight, the App Store, Google Play (all tracks), and Firebase App Distribution. Supports multiple destinations per app — ideal for [white-label](https://capawesome.io/solutions/white-label/) products or regional variants. Encrypted credentials, protected destinations with role-based access control, and full audit logs.

**Thousands of App Store updates** deployed every month.

### Automations[¶](#automations "Permanent link")

Automatically trigger native builds from Git events — on every push to a branch or on tag creation. Chain builds with store publishing and live update deployments in a single pipeline. When a build completes, Capawesome Cloud sends a [webhook](https://capawesome.io/docs/cloud/automations/webhooks/) with the result so you can connect it to any notification tool.

### Assist — AI Diagnostics[¶](#assist-ai-diagnostics "Permanent link")

When a build or deployment fails, Ask AI turns the raw validator output from Apple, Google, or your build logs into a plain-language cause → explanation → suggested fix. Opt-in per click, zero data retention.

### Integrations[¶](#integrations "Permanent link")

GitHub, GitLab, Bitbucket, Azure DevOps, GitHub Enterprise, GitLab Self-Managed, Slack, Microsoft Teams, Discord.

### Security & Compliance[¶](#security-compliance "Permanent link")

* GDPR compliant, data hosted in Germany
* ISO 27001 certified (our data center partners)
* SOC 2 Type II (report available on request)
* All credentials encrypted at rest
* RSA code signing for live update bundles

## Need Expert Help? We Do That Too[¶](#need-expert-help-we-do-that-too "Permanent link")

Building a Capacitor app is learnable, but sometimes you need someone who's already made all the mistakes.

The Capawesome team offers [consulting services](https://capawesome.io/consulting/) for teams that need hands-on help:

* **Capacitor app development** — architecture, development, deployment, and maintenance
* **Custom Capacitor plugins** — if no existing plugin does what you need, we build it. We've delivered custom plugins for dozens of companies, often within a few days
* **Collaborative support** — work alongside your team for architecture reviews, code reviews, debugging, and pairing sessions
* **CI/CD setup** — get your build and deployment pipeline configured correctly from the start

Some reviews from our users:

_"We had to use an Android and iOS SDK in our Capacitor app, for which no plugin existed. Capawesome was able to create a fully functional Capacitor plugin for us within a few days. The communication was excellent and the plugin works perfectly."_ — Daniel Ehrhardt, CEO at Codext GmbH

_"Our Capacitor app had several unique requirements for running operations in the background. The Capawesome team was able to quickly understand our needs and crafted a customized Capacitor plugin that exceeded our expectations."_ — Christofer Huber, CTO at WEBPUNKS GmbH

[Talk to us →](https://capawesome.io/consulting/)

## The Complete Checklist to Deploy a Mobile app[¶](#the-complete-checklist-to-deploy-a-mobile-app "Permanent link")

Use this before you submit:

**Foundation**

* Web app builds successfully (`npm run build`)
* Capacitor initialized and platforms added (`npx cap add ios`, `npx cap add android`)
* Native features added via plugins as needed
* Live Update plugin installed and configured
* App tested on a real device (not just browser/simulator)

**Accounts**

* Apple Developer Program account created and approved ($99/yr)
* Google Play Console account created ($25 one-time)

**Certificates**

* iOS distribution certificate generated and uploaded to Capawesome Cloud
* iOS provisioning profile generated and uploaded
* Android keystore generated and uploaded to Capawesome Cloud

**Build & Test**

* First native build completed via Capawesome Cloud (Debug or Simulator)
* App distributed to testers via TestFlight / Google Play Internal / Firebase App Distribution
* Bugs found on real devices fixed

**Store Listing**

* App icon ready (1024×1024 for iOS, 512×512 for Android)
* iPhone screenshots ready (required by Apple)
* iPad screenshots ready (if app supports iPad)
* Google Play screenshots ready (minimum 2)
* App name, subtitle/short description, full description written
* Keywords ready (iOS: 100 chars; Google Play: embedded in description)
* Privacy policy URL live and accessible
* Age rating completed in App Store Connect and Google Play Console
* Apple Privacy Nutrition Labels completed
* Google Data Safety section completed

**Google Play Only**

* Closed testing track created with 12+ testers opted in
* 14-day testing period completed
* Production access applied for

**Submission**

* Release build created via Capawesome Cloud (signed, production)
* App submitted for review on App Store
* App submitted for review on Google Play

**Post-Launch**

* First live update bundle deployed
* Automations configured for future releases

## Final Thoughts[¶](#final-thoughts "Permanent link")

The mobile app store process has a reputation for being painful — and for good reason. The certificate maze, the review queue, the toolchain requirements, the surprise gotchas like Google's closed testing period — none of it is developer-friendly by default.

But the actual hard parts are a small fraction of what people worry about. With Capacitor handling the native layer, Capawesome Cloud handling the build and deployment infrastructure, and a handful of free browser tools handling the certificate setup, the genuinely difficult stuff is gone. What's left is building your product.

If you get stuck at any step, the [Capawesome Discord](https://discord.gg/VCXxSVjefW) is active and the team is there. And if you want someone in the trenches with you, [consulting is available](https://capawesome.io/consulting/).

Subscribe to the [Capawesome newsletter](https://capawesome.io/newsletter/) for updates on new plugins, Cloud features, and guides like this one.

[Start your 14-day free trial →](https://console.cloud.capawesome.io) [Book a demo →](https://cal.com/team/capawesome/demo)

June 4, 2026 

 Back to top 