WebAPK Explained: How Chromium Installs PWAs on Android

This article explores WebAPK technology and the exact process the Chromium web browser on Android uses to transform Progressive Web Apps (PWAs) into installable native application packages. By examining the architecture of WebAPKs, the role of the Web App Manifest, and the cloud-based minting process, you will understand how web applications achieve deep integration within the Android operating system without going through a traditional app store.

What is WebAPK Technology?

WebAPK (Web Android Package Kit) is a technology developed for Chromium-based browsers on Android that packages a Progressive Web App into a real, installable .apk file. Before WebAPK, adding a website to the Android home screen only created a simple bookmark shortcut.

With WebAPK, the PWA is treated as a native application by the Android operating system. Once installed, a WebAPK:

  • Appears in the Android app drawer and system settings.
  • Can register intent filters, meaning clicking a link to the website will open the installed PWA directly instead of a browser tab.
  • Has its own dedicated storage, permissions, and data usage tracking in the Android OS.
  • Runs in its own standalone window in the Android task switcher, separate from the main browser.

Prerequisites for WebAPK Creation

Chromium will not generate a WebAPK for standard websites. To trigger the WebAPK generation process, a web application must meet specific PWA installability criteria:

  1. HTTPS: The web app must be served over a secure network connection.
  2. Service Worker: The app must register a Service Worker with a fetch handler, allowing the app to load and function while offline.
  3. Web App Manifest: The site must include a valid manifest.json file containing metadata such as the app's name, icons, start URL, theme colors, and display mode (such as standalone or fullscreen).

How Chromium Generates the Native Package

When a user taps "Install App" in a Chromium browser (such as Google Chrome), the browser does not compile the APK locally on the phone. Android devices lack the necessary SDK build tools and cryptographic signing keys required to build apps locally. Instead, Chromium uses a cloud-based generation process:

  1. Manifest Parsing: Chromium reads the website's manifest.json file and extracts the app's metadata, icons, and configuration rules.
  2. The Minting Server Request: Chromium bundles this metadata into a protocol buffer and sends it over the internet to a remote server known as the WebAPK Minting Server, which is maintained by the browser vendor.
  3. Compilation and Signing: The Minting Server takes the manifest data and injects it into a lightweight, pre-made Android application template. The server then compiles this into a standard .apk file and cryptographically signs it using the vendor's official key.
  4. Silent Installation: The signed WebAPK is downloaded back to the user's device. On standard Android devices, Google Play Services intercepts the package and installs it silently in the background. Because the APK is signed by a trusted entity and handled by Play Services, the user does not have to enable the "Install from Unknown Sources" security setting.

How a WebAPK Operates on the Device

A generated WebAPK is extremely small—often less than a megabyte. This is because the APK does not contain a web rendering engine, nor does it contain the actual HTML, CSS, or JavaScript of the web app.

Instead, the WebAPK is merely a native wrapper containing the app's manifest data and a set of instructions. When the user taps the app icon on their home screen, the WebAPK launches and calls upon the host Chromium browser already installed on the device. Chromium then opens a dedicated rendering instance (known as a Custom Tab) configured according to the WebAPK's instructions, hiding the address bar and standard browser UI to provide a native-like experience.

Updating a WebAPK

Because web applications change frequently, WebAPKs must be able to update dynamically.

Changes to the actual web content (HTML, CSS, JavaScript) do not require a WebAPK update, as those files are fetched live from the web or managed directly by the Service Worker cache. However, if a developer changes the app's name, updates the home screen icon, or alters the orientation rules, the native APK must be rebuilt.

Whenever the user launches the installed PWA, Chromium compares the live manifest.json file on the web server with the configuration stored inside the installed WebAPK. If Chromium detects a change in the manifest, it automatically requests a new package from the WebAPK Minting Server and updates the app silently in the background when the app is closed.