TECHNICAL GUIDE

TWA vs Capacitor: Which Android Wrapper Wins in 2026?

June 27, 2026· 10 min read
TWA vs Capacitor: Android wrapper technical comparison

When you convert a website to an Android app, you face one fundamental choice: 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.

Here's the complete breakdown.

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 Capacitor includes its own WebView runtime. 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
Chrome updatesAuto (uses device Chrome)Bundled 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

The #1 rejection reason: TWA without a service worker

Google Play's policy 4.3 (Minimum Functionality) explicitly 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?+

No. TWA requires a service worker to pass Google's minimum functionality review. Without one, the app will be rejected for policy violation 4.3 (apps that are thin wrappers). If your site has no service worker, use Capacitor instead.

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