tree: 2f574b812810af6d7b539a8de178d6232c8b29b6
  1. .style.mdformat
  2. concepts.md
  3. file_handling.md
  4. README.md
docs/webapps/README.md

Web Apps in Chromium

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).

User Entry Points

  • Desktop: If a site provides a valid web app manifest (name, icon, 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.
  • Android: Installation is triggered via ambient badges, bottom sheets, or 3-dot menu > Add to Home screen / Install app, installing either a WebAPK or adding a homescreen shortcut.

Developer Interface

Sites customize OS integration using the W3C Web Application Manifest specification. See web.dev guides:

Subsystem Architecture & Where Code Lives

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/

1. Cross-Platform Shared Components

2. Desktop PWA Subsystem (Windows, Mac, Linux, ChromeOS)

  • Core Desktop Engine (chrome/browser/web_applications): Profile-keyed WebAppProvider system, commands, fine-grained locks, LevelDB storage, sync integration, and OS integration.
  • Desktop UI Controllers (chrome/browser/ui/web_applications): Browser window controllers (WebAppBrowserController), omnibox actions, navigation capturing, and Mac App Shims.
  • Desktop Views UI (chrome/browser/ui/views/web_apps): Views dialogs (install bubbles, permission prompts, update reviews) and integration testing driver.

3. Android Web Apps (WebAPKs & TWAs)

4. Manifest Parsing & Extraction

  • Blink Manifest Parser (third_party/blink/renderer/modules/manifest): W3C manifest parsing in the untrusted renderer process converting JSON into blink.mojom.Manifest.
  • Content Manifest Coordinator (content/browser/manifest): Browser-side manifest fetching and icon downloading coordination.