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.
| Format | Use case | Installable directly? |
|---|---|---|
| .apk | Sideloading, Amazon Appstore, Samsung Galaxy Store, testing on device | Yes |
| .aab | Google Play Console (required since Aug 2021) — Play generates optimized APKs per device | No (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.jsonfile - 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
TWA vs Capacitor — side-by-side comparison
| Feature | TWA | Capacitor |
|---|---|---|
| Requires service worker | Yes (recommended) | No |
| Minimum PWA score | ≥ 70 | None |
| App file size | ~800 KB | ~4 MB |
| Native Android APIs | Via browser APIs only | Via plugins (camera, GPS, etc.) |
| Google Play review risk | Very low (official method) | Low (policy-compliant WebView) |
| Works on Bubble / Softr / Framer | Depends on service worker | Yes, always |
| Offline mode | Full SW control | Cache fallback |
PWA to APK in 5 minutes — step by step
SaasToStore runs both pipelines server-side. You don't install anything locally.
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.
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).
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.
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.
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