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. If other builds are ahead of yours, it waits its turn.
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