TUTORIAL

PWA to APK: Convert Your Web App in 5 Minutes

June 7, 2026· 8 min read
Yes, you can convert a PWA to APK in under 5 minutes — without installing Android Studio, without managing a keystore manually, and without writing a single line of native code. There are two methods depending on your PWA's technical score: TWA (for fully compliant PWAs) and Capacitor (for everything else). This guide explains both, compares them side by side, and walks through the entire build.

APK vs AAB — which do you actually need?

Before converting, clarify the target. An APK and an AAB are not interchangeable — each has a specific use case.

FormatUse caseInstallable directly?
.apkSideloading, Amazon Appstore, Samsung Galaxy Store, testing on deviceYes
.aabGoogle Play Console (required since Aug 2021) — Play generates optimized APKs per deviceNo (Play Store only)

SaasToStore generates both formats from a single build. You receive the .apk and .aab in the same email.

Method 1: Trusted Web Activity (TWA) — the Google-recommended path

A Trusted Web Activity wraps your PWA inside Chrome on Android. The app runs your actual web URL — no code duplication, no separate mobile codebase. It's the method Google officially documents for publishing PWAs on Google Play, and it produces the smallest possible Android app (often under 1 MB).

Requirements for a TWA build

  • HTTPS — mandatory. HTTP URLs are rejected by the TWA runtime
  • Web manifest — must include name, start_url, display: "standalone", theme_color, and icons ≥ 512×512
  • Service worker — strongly recommended. Controls offline behavior and qualifies for Google Play's minimum functionality requirement
  • Digital Asset Links — SaasToStore configures these automatically via the /.well-known/assetlinks.json file
  • PWA score ≥ 70 — verified by Lighthouse or SaasToStore's built-in checker

TWA limitations to know

  • The app requires Chrome to be installed on the user's device (it is, on 99% of Android phones)
  • Navigation bar (URL bar) is hidden only when the Digital Asset Links are correctly verified
  • No access to native Android APIs that go beyond what the browser exposes via the PWA standard
  • App size depends on Chrome's rendering engine, not bundled code — startup is instant

Method 2: Capacitor — when your PWA lacks a service worker

Capacitor (by Ionic) wraps your web app in a native WebView component. Unlike a raw WebView, Capacitor generates a properly signed, policy-compliant Android app that passes Google Play's minimum functionality review. It doesn't require a service worker, making it the fallback for Bubble apps, Webflow sites without SW support, and any URL that scores below 70.

When to choose Capacitor over TWA

PWA score < 70Yes — Capacitor is the right choice
No service worker registeredYes
Site built on Bubble, Softr, or Framer (no manifest)Yes
Need native plugins (camera, biometrics, file access)Yes — Capacitor supports native plugin injection
Want the smallest app file sizeNo — TWA wins here (~800 KB vs ~4 MB)

TWA vs Capacitor — side-by-side comparison

FeatureTWACapacitor
Requires service workerYes (recommended)No
Minimum PWA score≥ 70None
App file size~800 KB~4 MB
Native Android APIsVia browser APIs onlyVia plugins (camera, GPS, etc.)
Google Play review riskVery low (official method)Low (policy-compliant WebView)
Works on Bubble / Softr / FramerDepends on service workerYes, always
Offline modeFull SW controlCache fallback

PWA to APK in 5 minutes — step by step

SaasToStore runs both pipelines server-side. You don't install anything locally.

1

Check your PWA score (free, no account required)

Go to SaasToStore's homepage and paste your URL. The checker runs a Lighthouse-equivalent audit in ~10 seconds: HTTPS, manifest completeness, service worker, icon sizes. You'll see your score and the recommended build type.

2

Create a project and configure your app identity

Sign in, create a new project, confirm the URL. Set your app name (displayed on the Play Store, 30 chars max), package ID (e.g., com.yourcompany.app — cannot be changed after first publish), and initial version code (start at 1).

3

Upload your 512×512 icon

PNG, square, no rounded corners (Android handles the mask). If you don't have one, SaasToStore's AI generator creates an icon from a text description in under 30 seconds.

4

Select TWA or Capacitor, launch the build

The checker recommends automatically. You can override. Click "Launch Build". The pipeline runs on the SaasToStore server — manifest parsing, keystore generation, compilation, APK signing. No queue.

5

Receive your .apk and .aab by email

Build completes in 2–5 minutes. You get an email with three attachments: the signed .aab (for Google Play), the signed .apk (for sideload/alternative stores), and the encrypted keystore file (keep it — you'll need it for every update).

PWA readiness checklist before converting

Run this checklist in your browser's DevTools (Lighthouse tab) or with SaasToStore's free checker:

  • Site served over HTTPS with valid certificate
  • manifest.json linked in <head> with name, start_url, display: standalone
  • At least one icon ≥ 512×512 PNG in the manifest
  • theme_color defined (used for Android toolbar color)
  • Service worker registered and controlling the scope (Application tab → Service Workers)
  • Offline fallback page exists (or at minimum a cache-first strategy)
  • App loads in < 5 seconds on a 4G connection
  • No mixed content (HTTP resources on HTTPS pages)

Common errors and how to fix them

Error: "App rejected — minimum functionality (policy 4.3)"

Cause: Raw WebView without service worker or meaningful PWA features. Fix: Use SaasToStore's TWA mode with a validated manifest and service worker. SaasToStore's Capacitor mode also passes 4.3 by design.

Error: "Digital Asset Links verification failed"

Cause: The assetlinks.json file is missing or the SHA-256 fingerprint doesn't match the build. Fix: SaasToStore generates and hosts the assetlinks.json automatically — or provides the exact content to add to your /.well-known/ directory.

Error: "keystore not found on update"

Cause: Rebuilding with a new keystore. Fix: Always use the same SaasToStore project for updates. The original keystore is encrypted, stored, and reused automatically on every rebuild. A new keystore = Google Play rejects the update.

Warning: "Chrome not installed" on device

Context: TWA requires Chrome. On 99% of Android devices it's pre-installed. If you're targeting a specific OEM device that excludes Chrome (rare, enterprise-only), use Capacitor mode.

Distributing your APK beyond Google Play

The signed .apk you receive works on any Android distribution channel:

  • Amazon Appstore — free account, APK upload, review in ~24h. 170M+ Fire TV + tablet users
  • Samsung Galaxy Store — free account, APK upload. Pre-installed on every Samsung Android device
  • Direct sideload — share the .apk file via link, QR code, or email. Users enable "install from unknown sources" once
  • Enterprise MDM — push the APK via Mobile Device Management tools for internal-only distribution
Multi-store tip: The LAUNCH plan (from 21€) connects Amazon Appstore and Samsung Galaxy Store to your SaasToStore project. One button publishes to 4 stores simultaneously. See pricing →
Important reminder: The APK generated by SaasToStore is signed with your project's keystore. Never lose this keystore — it's the cryptographic identity of your app. If you lose it, you cannot update your app on Google Play or any other store. SaasToStore encrypts and stores it, but also emails you an encrypted backup.

Frequently asked questions

Can I convert any website to an APK?+

Any site served over HTTPS can be wrapped. But for the Google Play Store, you also need a web manifest and ideally a service worker. Without those, the Capacitor build mode works as a universal fallback.

What's the difference between APK and AAB?+

APK is the file installed directly on an Android device — useful for sideloading and stores like Amazon. AAB is the publishing format required by Google Play since 2021. SaasToStore generates both from the same build.

Do I need Android Studio to convert a PWA to APK?+

No. SaasToStore runs the full Bubblewrap/Capacitor pipeline server-side. You paste a URL, configure your app name and icon, and receive the signed APK and AAB by email.

How long does a PWA to APK conversion take?+

Under 5 minutes for both TWA and Capacitor builds. The pipeline runs on a dedicated server — no queuing, no waiting for a local compilation.

What PWA score do I need for a TWA build?+

A score above 70 (out of 100) with a valid manifest and HTTPS. Service worker presence is strongly recommended. Run the free PWA check on SaasToStore to see your score before building.

Can I publish the APK on stores other than Google Play?+

Yes. The APK works on Amazon Appstore, Samsung Galaxy Store, and any sideload distribution. The AAB is for Google Play only. SaasToStore generates both in a single build.

Ready to publish your app?

Paste your URL. We build the signed Android App Bundle. You upload to the Play Store.

Publish now

Keep reading