pwa2play
LIVEA Claude Code plugin that ships PWAs to the Play Store.
Packages a web app into a signed, Play-Store-ready Android bundle and bakes in the rules that get uploads rejected, so it passes review the first time.
Why it exists.
Wrapping a PWA for Android is a solved problem, but the default tools quietly set you up to fail and Google's rejection messages never say what actually went wrong, a wrong signing key, a stale target API, a missing asset-link fingerprint. I lost a weekend to it once, so I wrote everything I learned into a plugin that walks you past each trap before you hit it.
pwa2play is an open-source Claude Code plugin that turns a Progressive Web App into a Trusted Web Activity ready for the Google Play Store. It wraps Bubblewrap with a skill and three commands that walk the whole path, init, build, Digital Asset Links, and the first upload, and it carries the hard-won rules that usually cause rejections: reuse the signing key, put the app-signing fingerprint in assetlinks.json, bump the version code, and keep targeting the current API level. A companion script reads the real target API and version straight out of a built APK before you upload.
How the pieces fit.
The whole system, end to end. Trace any node to see its role and connections.
Hover or focus any node to trace its role and connections.
Every surface, shipped.
Guided first release
The package command walks from Bubblewrap init to the first upload, stopping at each place people usually slip and refusing to skip the assetlinks fingerprint or the test track.
Safe updates
The update command keeps the original signing key and a rising version code, the two things that silently get an app update rejected, so shipping a new version is boring instead of scary.
Reads the real APK
A small script reports the package id, version code, target and min SDK straight from a built .apk, so you verify the actual bytes rather than trusting what the build tool printed.
The rejection rules, encoded
Key reuse, the app-signing SHA-256 in assetlinks.json, version-code bumps, current API level, and the personal-versus-organization testing path, written down once so nobody relearns them the hard way.
The calls that mattered.
Encode the traps, not just the steps
problem · Anyone can copy the Bubblewrap commands; the real value is knowing what gets an upload rejected.
call · The skill leads with the five rules that actually cause rejections, and the command flows won't let you skip the assetlinks fingerprint or the test track, so the knowledge is enforced, not just documented.
Read the artifact, don't trust the tool
problem · Build tools report what they intended to produce, not what the file actually contains, and a stale target API is invisible until Google bounces it.
call · A companion script reads the target SDK and version code out of the built APK, so verification happens against the real bytes before anything is uploaded.
An installable, open-source plugin that gets a PWA onto the Play Store the right way, published under my own marketplace and installable by anyone in two lines. The kind of small, sharp tool I like leaving behind for other builders.