TECHNICAL GUIDE

TWA vs Capacitor vs PWABuilder: which PWA wrapper wins in 2026?

June 27, 2026· 11 min readUpdated October 22, 2026
TWA vs Capacitor vs PWABuilder: Android PWA wrapper comparison

When you convert a website to an Android app, you face one fundamental choice of wrapper: Trusted Web Activity (TWA) or Capacitor. Both produce a signed Android App Bundle that passes the Play Store. Both wrap your live URL. The difference determines whether your app gets published or rejected — and how much native functionality it unlocks. And PWABuilder? It isn't a third wrapper: it's a packaging tool that produces a TWA for Android. We cover where it fits below.

Here's the complete breakdown.

What is a PWA wrapper?

A PWA wrapper is the thin native app that hosts your web app so it can be installed from a store. On Android there are two families. A TWA hands your site to Chrome, which renders it full screen once Digital Asset Links prove you own the domain. A WebView shell such as Capacitor embeds your site in the Android System WebView inside your own app. Tools like Bubblewrap, PWABuilder and SaasToStore generate those wrappers for you — they are builders, not wrappers.

What is TWA (Trusted Web Activity)?

Trusted Web Activity is Google's official method for shipping a Progressive Web App as a native Android app. Introduced in 2019, it wraps your PWA using Chrome's rendering engine — which means zero extra code, no custom WebView, and an app size of roughly 800 KB.

The key requirement: your website must be a full PWA — HTTPS + web manifest + a registered service worker that passes Google's Lighthouse minimum functionality check. Additionally, you must host a Digital Asset Links file at /.well-known/assetlinks.json to verify domain ownership and remove the Chrome URL bar from the app.

TWA requirements

  • ✓HTTPS on custom domain
  • ✓Web app manifest (name, icons, theme_color)
  • ✓Service worker with fetch handler
  • ✓assetlinks.json at /.well-known/
  • ✓Lighthouse PWA score passing

What is Capacitor?

Capacitor is Ionic's open-source native runtime that wraps any HTTPS URL in a native Android WebView — without requiring a service worker or PWA manifest. It compiles to a standard Android project and produces a fully signed .aab + .apk.

App size is larger (~4 MB vs TWA's 800 KB) because the app ships the Capacitor runtime and its plugins; it renders with the Android System WebView, which Google Play keeps up to date. But the trade-off is maximum compatibility: WordPress, Wix, Squarespace, Webflow, Bubble — any HTTPS URL works without modification. No service worker. No assetlinks.json.

Capacitor requirements

  • ✓HTTPS on custom domain
  • ✓That's it — no service worker, no manifest required

Side-by-side comparison

CriteriaTWACapacitor
App size~800 KB~4 MB
Service worker requiredYes (mandatory)No
assetlinks.json requiredYesNo
Any HTTPS URLNo (needs PWA)✅ Yes
Works with Wix / SquarespaceOften not✅ Yes
Works with WordPress (no plugin)No✅ Yes
Works with Lovable / Bubble / Webflow PWA✅ Yes✅ Yes
Google Play compliance✅ Yes✅ Yes
Push notifications (FCM)✅ Yes (via web push)✅ Yes (native plugins)
Offline supportVia service workerVia service worker
Deep linkingVia Digital Asset LinksVia App Links
Engine updatesAuto (uses device Chrome)Auto (Android System WebView)
Rendering engineChrome (device)Android WebView
SaasToStore detectionAuto (if PWA score OK)Auto (fallback)

When to use TWA

Use TWA when:

  • Your website is a complete PWA — Lighthouse score passing, service worker registered, manifest present with icons and theme color
  • App size matters — targeting markets with limited storage (emerging markets, budget devices)
  • You're using Lovable, which generates a full PWA by default
  • You want the smallest possible app footprint and Chrome's latest rendering

Check with SaasToStore's PWA checker — it runs a Lighthouse-equivalent audit and tells you in 10 seconds whether your site qualifies for TWA.

When to use Capacitor

Use Capacitor when:

  • Your website has no service worker — WordPress without a PWA plugin, Wix, Squarespace, Webflow without custom SW
  • You can't or don't want to modify the website
  • You want maximum compatibility — any HTTPS URL, any platform, guaranteed to pass Play Store review
  • You need native Capacitor plugins (camera, biometrics, Bluetooth, NFC)
  • The app is for a niche audience where 4 MB vs 800 KB doesn't matter

Where PWABuilder fits

Searches for "PWABuilder vs Capacitor" compare two different things. Capacitor is a runtime you build an app project with. PWABuilder is Microsoft's free web tool that generates the packages for you — and on Android, what it generates is a TWA, built with Google's Bubblewrap.

ToolWhat it isAndroidiOS
BubblewrapGoogle's command-line TWA generatorTWA project, signed .aab—
PWABuilderMicrosoft's free packaging web toolTWA (via Bubblewrap): .aab + keystore + assetlinks.jsonSwift Xcode project, experimental
CapacitorIonic's native runtime, with pluginsAndroid Studio project you buildXcode project you build
SaasToStoreHosted pipeline from a URLSigned .aab + .apk, TWA or CapacitorSigned .ipa, no Mac needed

So "TWA vs PWABuilder" is really "the wrapper vs a tool that makes it", and the TWA rules in this article apply to PWABuilder's Android package too. What PWABuilder leaves to you is the signing key, the iOS build on a Mac and every update — compared in detail in SaasToStore vs PWABuilder.

The #1 rejection reason: TWA without a service worker

Google Play's minimum functionality policy rejects apps that are "thin wrappers around a website." A TWA without a service worker is classified as a thin wrapper. The fix is simple: add a service worker to your website, or switch to Capacitor mode.

SaasToStore detects this automatically. If your PWA score is insufficient for TWA, it switches to Capacitor — which passes by construction.

How SaasToStore chooses between TWA and Capacitor

SaasToStore's PWA checker runs a Lighthouse-equivalent audit on your URL:

  1. HTTPS check — both modes require this
  2. Manifest check — name, icons (192px + 512px), theme_color, background_color
  3. Service worker check — fetch handler registered, responses cached
  4. Lighthouse PWA score — minimum passing grade for TWA submission

If all four pass → TWA build. If any fail → Capacitor build. You see the recommendation instantly. No manual configuration needed.

Check which mode your site needs

The PWA checker runs in 10 seconds — free, no account required.

Check my site →

Related guides

Frequently asked questions

What is the difference between TWA and Capacitor?+

TWA (Trusted Web Activity) is a lightweight Chrome-based wrapper that requires a full PWA setup (HTTPS + manifest + service worker). Capacitor is a native runtime that wraps any HTTPS URL without service worker requirements. TWA builds are ~800 KB; Capacitor builds are ~4 MB but work with any website.

Which is better for Google Play: TWA or Capacitor?+

Both pass Google Play review when built correctly. TWA is Google's official recommended method for PWA apps and produces smaller apps. Capacitor is more universally compatible — it works even when the website has no service worker, making it safer for sites built with Wix, WordPress, or Squarespace.

Does TWA work without a service worker?+

Not reliably for the Play Store. Without a service worker, a TWA is the kind of thin website wrapper Google Play's minimum functionality policy rejects. If your site has no service worker, use Capacitor instead.

Is PWABuilder a TWA?+

On Android, yes. PWABuilder is Microsoft's free packaging tool, not a wrapper of its own: its Google Play package is a Trusted Web Activity generated with Bubblewrap, delivered as a zip with the .aab, the signing key and assetlinks.json. Its iOS package is a Swift Xcode project, labelled experimental.

Capacitor or PWABuilder: which should I use?+

Capacitor if you need native plugins (camera, biometrics, NFC) or your site has no service worker — but you build the Android and iOS projects yourself. PWABuilder if your site is a full PWA and a TWA plus a Windows package is enough. SaasToStore picks TWA or Capacitor for you and signs the builds.

Can I switch from TWA to Capacitor later?+

Yes, but you'll need to submit a new build to Google Play. The app package ID (com.yoursite.app) stays the same — only the internal build method changes. SaasToStore handles the migration automatically.

What is Digital Asset Links and why does TWA need it?+

Digital Asset Links (assetlinks.json) is a file hosted at yourdomain.com/.well-known/assetlinks.json that verifies your Android app is officially associated with your website. TWA requires this for the browser chrome to disappear — without it, the app shows a Chrome URL bar, which looks unprofessional.

Does Capacitor support push notifications?+

Yes. Both TWA and Capacitor support push notifications via Firebase Cloud Messaging (FCM). Capacitor has native plugin support for more granular notification control (badges, grouped notifications, notification actions).

Ready to publish your app?

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

Publish now