Web apps are websites with app-like qualities or capabilities. Chromium supports “installing” a web app (or any website), which enables OS-level integration such as windowing, file handlers, protocol handlers, shortcut menus, badging, and background synchronization.
See Web Apps Concepts for core definitions (Manifest, Installability, Promotability, Scope, Display Modes, Identifiers).
start_url, and non-browser display mode), an install icon appears in the omnibox. Users can also install any site via Chrome Menu > Cast, Save, and Share > Install page as app.... Installed apps are managed on chrome://apps.3-dot menu > Add to Home screen / Install app, installing either a WebAPK or adding a homescreen shortcut.Sites customize OS integration using the W3C Web Application Manifest specification. See web.dev guides:
Because Web Apps span Blink, Content, Shared Components, and platform-specific embedder layers, the code is structured into several core directories:
[Blink Manifest Parser] third_party/blink/renderer/modules/manifest/
│ (Mojo IPC)
▼
[Content Manifest Host] content/browser/manifest/
│
▼
[Shared Components] components/webapps/ (Shared logic)
│
┌─────┴───────────────────────────┐
▼ ▼
[Desktop PWA Engine] [Android WebAPKs & TWAs]
chrome/browser/web_applications/ chrome/android/webapk/
chrome/browser/ui/web_applications/ chrome/android/java/.../webapps/
chrome/browser/ui/views/web_apps/ chrome/browser/android/webapk/
components/webapps): Common logic for installability verification (InstallableManager), promotion banners (AppBannerManager), and identifiers (identifiers.md).chrome/browser/web_applications): Profile-keyed WebAppProvider system, commands, fine-grained locks, LevelDB storage, sync integration, and OS integration.chrome/browser/ui/web_applications): Browser window controllers (WebAppBrowserController), omnibox actions, navigation capturing, and Mac App Shims.chrome/browser/ui/views/web_apps): Views dialogs (install bubbles, permission prompts, update reviews) and integration testing driver.chrome/android/webapk): Minted Android APK wrapper, client libraries, and local test setup.third_party/blink/renderer/modules/manifest): W3C manifest parsing in the untrusted renderer process converting JSON into blink.mojom.Manifest.content/browser/manifest): Browser-side manifest fetching and icon downloading coordination.