blob: 66e9c089dcb253a0f54caff5176f1b78a418eda0 [file] [view]
## Web Apps
Web apps are websites with app-like qualities or capabilities. Chromium supports 'installing' a web app (or any website), which is sometimes required for some of these capabilities to function (e.g. file handlers or window controls overlay).
See [useful concepts and definitions here](concepts.md).
### User entry points
**Desktop**: If a site has a manifest attached with a name, icon, start_url, and display field specified, an installation icon will appear in the omnibox. Users can also install any site they like via `Menu > More tools > Install Page as App`. Apps are visible on chrome://apps on non-CrOS desktop.
**Android**: An ML model is used to selectively show the blocking installation banner for users who are likely to install the app. Otherwise installation is accessible via `3-dot menu > Add to Homescreen`.
### Developer interface
Sites customize how their installed site integrates at the OS level using a [web app manifest](https://www.w3.org/TR/appmanifest/). See developer guides for in depth overviews:
- https://web.dev/progressive-web-apps/
- https://web.dev/codelab-make-installable/
## Where is the code?
Because Progressive Web Apps spans across Android and Desktop, the code is split across multiple directories depending on its implementation:
* **[Desktop `WebAppProvider`](/chrome/browser/web_applications/README.md)**: Desktop-specific system (Windows, Mac, Linux, ChromeOS) for installing and managing web apps.
* **[Shared `components/webapps`](/components/webapps/README.md)**: Code shared between Android and Desktop, like the `InstallableManager` and `AppBannerManager`.