Publishing a PWA on Google Play: The Complete TWA Checklist for 2026
A step-by-step guide to packaging your Progressive Web App for Google Play using Trusted Web Activities. Covers signing keys, Digital Asset Links, Play Store requirements, and what we learned building the SpaceNexus Android app.
Correction (September 27, 2026): an earlier version of this guide said SpaceNexus had shipped on Google Play and linked readers to download it there. It has not: the SpaceNexus Android app was built as described below, but its Google Play listing is still pending. You can install SpaceNexus from your browser as a web app today at spacenexus.us/app.
You've built a great PWA. It has a service worker, a manifest, offline support, and passes all the Lighthouse checks. Now you want to put it on Google Play. Here's how we packaged SpaceNexus for it, and what we learned along the way.
Why TWA Over Capacitor or React Native
There are three common approaches to getting a web app on the Play Store:
- Trusted Web Activity (TWA): A lightweight Android wrapper that opens your PWA in a full-screen Chrome Custom Tab. No URL bar, no webview: it's Chrome rendering your site natively. The AAB is typically 2-4 MB
- Capacitor/Cordova: Embeds a WebView and provides native plugin bridges. More control, but you manage a separate build pipeline and the WebView may not match Chrome's capabilities
- React Native / Flutter: Full native rebuild. Maximum control, maximum effort. Usually only justified if you need hardware APIs that web can't provide
We chose TWA because SpaceNexus is a data-heavy platform that's already optimized for mobile web. A TWA lets us ship one codebase with zero feature lag between web and app.
Prerequisites Checklist
Before you start, make sure you have:
- A Google Play Developer account ($25 one-time fee)
- Your PWA passing Chrome's installability criteria: valid manifest, registered service worker, served over HTTPS
- A signing key (Java keystore), you'll use this for every release
- A privacy policy URL (required for all Play Store apps)
- Play Store screenshots: minimum 2 phone, recommended 2 tablet
- A feature graphic: 1024x500 px
- A hi-res icon: 512x512 px with no transparency
Step-by-Step Process
1. Generate Your Signing Key
Use keytool to create a Java keystore. Store the passwords securely; you'll need them for every future release:
keytool -genkeypair -alias spacenexus -keyalg RSA -keysize 2048 \
-validity 10000 -keystore spacenexus.keystore
Extract the SHA-256 fingerprint; you'll need this for Digital Asset Links:
keytool -list -v -keystore spacenexus.keystore -alias spacenexus
2. Configure Digital Asset Links
Create .well-known/assetlinks.json at your domain root. This file proves to Android that your app and website belong to the same entity:
[{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "com.yourapp.package",
"sha256_cert_fingerprints": ["YOUR:SHA256:FINGERPRINT:HERE"]
}
}]
Serve it with Content-Type: application/json. Verify it works with Google's Asset Links tool.
3. Build the TWA with Bubblewrap or PWABuilder
We recommend PWABuilder (pwabuilder.com) for the simplest path. Upload your manifest URL, configure your signing key, and it generates a ready-to-upload AAB. Alternatively, use the Bubblewrap CLI for more control.
4. Complete the Play Console Listing
Fill out the store listing: title (50 chars), short description (80 chars), full description (4000 chars), screenshots, feature graphic, and icon. Set your content rating via the IARC questionnaire; most data/news apps qualify as "Everyone."
5. Configure Data Safety
Google Play requires a Data Safety section. Disclose what data you collect, whether it's shared, and your security practices. We created a dedicated /data-safety page that mirrors the Play Store disclosure format.
6. Submit to Internal Testing First
Always start with the Internal Testing track. This lets you verify the app works on real devices before going public. Check that: the URL bar is hidden (Digital Asset Links working), the app opens correctly, push notifications function, and offline mode works.
Common Pitfalls
- URL bar still showing: Your assetlinks.json is misconfigured or the fingerprint doesn't match. Double-check with the Digital Asset Links validator
- App crashes on launch: Usually a CORS or CSP issue. Make sure your headers allow the TWA origin
- Slow cold start: Ensure your service worker precaches critical assets. Users expect near-instant launch from the home screen
- Push notifications not working: TWAs use the web Push API, not FCM directly. Make sure your VAPID keys are configured and service worker handles push events
Our Results
The SpaceNexus build is a 3.4 MB AAB with a Digital Asset Links configuration. It launches in standalone mode (no URL bar), supports offline browsing via a TTL-aware service worker cache, and receives the same web push notifications as the site. Because it renders the live site, every deployment to our web platform reaches it with no app store review delay. Its Google Play listing is still pending.
Week in Space Data, every Friday
Free Friday email: launches flown, funding, hiring and schedule slips, from our own trackers.
Explore this topic with our Get the App
Try Get the App →Get space industry intelligence delivered
Join SpaceNexus for real-time data, market intelligence, and expert insights.
Get Started Free