Build my web app

Where a PWA stops, and what the native bridge does instead

Nine things an installed web app cannot do on a phone, what the Android builders expose instead, and the documentation for each one.

Everything else on this site is about making your website installable: a manifest, a service worker, an icon on a home screen. That covers more than people expect. It does not cover everything, and pretending otherwise wastes a week of somebody's life.

This page is the honest boundary. On the left, what an installed web app genuinely cannot do on a phone today. On the right, what the AppMint Android builder exposes to the same page once it is packaged, and where that is documented.

The documentation lives in one place: the integration guide on freewebtoapk.com, generated from the guide that ships inside the builders themselves. It is not reprinted here - one copy that is always current beats three copies that disagree.

Nine walls, and what is on the other side

What you wantIn an installed web appInside a packaged app
Charge for somethingA payment page in the browser. No store billing exists for a PWA, on either platform.Google Play billing, from your own page: one-time unlocks, subscriptions, live localised prices, entitlements restored on reinstall - in-app purchases.
Show adsWeb ad tags only, at web rates.AdMob banner, interstitial and rewarded formats, with the consent rules that go with them - AdMob, app-ads.txt.
Push on iPhoneOnly for a site the user has added to the home screen, iOS 16.4 and later, and silently lost if they remove it.Not applicable - but on Android, topic push to every install from a dashboard: AppMint Push, OneSignal.
Reminders with no serverNo. Scheduling requires a push server and a live subscription.Notifications scheduled on the device, exact alarms included, working in aeroplane mode - local notifications.
Read and write a real folderThe File System Access API, on desktop Chrome. Not on iOS, not on Android Chrome.A folder the user grants once, with permission that survives reboots - native folder access.
Lock-screen media controlsThe Media Session API gets you part of the way; artwork and the seek bar are inconsistent.A real Android media notification your page drives, plus playback that continues with the screen off - media notifications, background audio.
Bluetooth and NFCWeb Bluetooth on Android Chrome only; Web NFC likewise; neither on iOS.Both, through the bridge, on any Android device that has the hardware - sensors, files and background jobs.
Stop screenshotsNot possible. There is no web API for it and there will not be one.A page can turn screen capture off while it is open - blocking screenshots.
Be in the Play StoreThrough a Trusted Web Activity, which is a real and good option - and still a website underneath.A normal APK or AAB, with the store metadata, permissions and ownership checks that implies - Play ownership verification.

The part people get wrong

Packaging your site does not throw the web away. Inside the app your page is still your page: the same HTML, the same service worker, the same cache. The bridge is an addition - a global object that exists there and nowhere else:

// Runs in Safari, in Chrome, and inside the packaged app.
if (window.WebToApk && window.WebToApk.isOwned('pro_unlock')) {
  showProFeatures();
} else {
  showWebCheckout();     // the browser path you already had
}

That single check is the whole compatibility story. Write it and one codebase serves the browser, the home-screen install and the store listing. Skip it and the page throws on the first device that is not an Android phone.

Where to start reading

If you are only reading this with a tool

Every documentation page has a plain Markdown twin at the same address with .md appended, and the whole guide is available as a single file at https://freewebtoapk.com/docs/llms-full.txt. This site's own index is at /llms.txt.

Still deciding? The comparison page weighs the three routes - installable web app, Trusted Web Activity, packaged APK - against cost, reach and effort, without a thumb on the scale.

Frequently asked questions

Do I have to choose between a PWA and a wrapped app?

No, and most people should not. The same site can be installable from the browser and also shipped as an APK. The service worker and manifest keep working inside the app; the bridge only adds what the browser has no API for.

Does using the bridge lock my site to Android?

Only if you call it without checking. Every bridge call sits on window.WebToApk, which simply does not exist in a browser - one if around the call and the same page runs in Safari, in Chrome, and inside the app.

Is the documentation the same as what is inside the apps?

It is generated from it. The chapters on freewebtoapk.com are extracted from the guide that ships inside the AppMint app, so they cannot describe a version of a feature that was never released.