From b2bb5326a3155cd072742bedd6e83d9f2d096549 Mon Sep 17 00:00:00 2001
From: Daniel Murphy
Copyright
©
- 2024
+ 2025
World Wide Web Consortium.
W3C®
@@ -673,7 +673,7 @@
The example also shows how to use the link type "manifest" and how
- to use other
- The text-direction list is the list «
+ The text-direction list is the list «
"ltr", "rtl",
"auto" ».
- To process the
- The manifest's
- A language tag is a string that matches the production
+ A language tag is a string that matches the production
of a well-formed
@@ -941,20 +941,20 @@
- To process the
- The manifest's
- The manifest's
- The manifest's Web Application Manifest
-
+
More details about this document
@@ -346,7 +346,7 @@
Web Application Manifest
Web Application Manifest
meta
and link
elements to give the web
+ to use other meta
and link
elements to give the web
application a fallback name and set of icons.
Web Application Manifest
(application/manifest+json
). Developers can also choose a
different extension (e.g. .json
) or none at all (e.g.
/api/GetManifest
), but are encouraged to transfer the manifest
- using the application/manifest+json
MIME type, although
- any JSON MIME type is ok.
+ using the application/manifest+json
MIME type, although
+ any JSON MIME type is ok.
1.1.3
@@ -715,9 +715,9 @@
Web Application Manifest
type
member. If the user agent doesn't support WebP, it falls
- back to the second icon of the same size. The MIME type of
+ back to the second icon of the same size. The MIME type of
this icon can then be either determined via a HTTP header, or can
- be sniffed by the user agent
+ be sniffed by the user agent
once the first few bytes of the icon are received.
Web Application Manifest
agent would present
https://example.com/icons/play-later.svg next to the
text. When launched, the user agent would instantiate a new
- top-level browsing context and navigate to
+ top-level browsing context and navigate to
https://example.com/play-later.
Web Application Manifest
dir
member, given ordered map
- json and ordered map manifest:
+ To process the dir
member, given ordered map
+ json and ordered map manifest:
Web Application Manifest
lang
member is a string in the form of a
+ The manifest's lang
member is a string in the form of a
language tag that specifies the language for the values of the
manifest's localizable members. If the lang
member is not
specified, the language is treated as unknown.
@@ -931,7 +931,7 @@ Web Application Manifest
accessibility.
Language-Tag
defined in [BCP47].
Web Application Manifest
spoken in China).
lang
member, given ordered map
- json and ordered map manifest:
+ To process the lang
member, given ordered map
+ json and ordered map manifest:
-
false
, return.
Web Application Manifest
name
member is a string that
+ The manifest's name
member is a string that
represents the name of the web application as it is usually displayed
to the user (e.g., amongst a list of other applications, or as a
label for an icon).
@@ -1073,7 +1073,7 @@ Web Application Manifest
short_name
member is a string that
+ The manifest's short_name
member is a string that
represents a short version of the name of the web application. It is
intended to be used where there is insufficient space to display the
full name of the web application.
@@ -1134,7 +1134,7 @@ Web Application Manifest
scope
member is a string that
+ The manifest's scope
member is a string that
represents the navigation scope of this web
application's application context.
Web Application Manifest
- To process the scope
member, given ordered map
- json and ordered map manifest:
+ To process the scope
member, given ordered map
+ json and ordered map manifest:
- To process the display
member, given ordered map
- json and ordered map manifest:
+ To process the display
member, given ordered map
+ json and ordered map manifest:
- The manifest's orientation
member is a string that
- serves as the default screen orientation for all top-level
+ The manifest's orientation
member is a string that
+ serves as the default screen orientation for all top-level
browsing contexts of the web application. The possible values are
- those of the OrientationLockType
enum, which in this
+ those of the OrientationLockType
enum, which in this
specification are referred to as the orientation values
(i.e., "any", "natural", "landscape", "portrait", "portrait-primary",
"portrait-secondary", "landscape-primary", or "landscape-secondary").
If the user agent supports the value of the orientation
- member as the default screen orientation, then that serves as
- the default screen orientation for the life of the web
+ member as the default screen orientation, then that serves as
+ the default screen orientation for the life of the web
application (unless overridden by some other means at runtime). This
means that the user agent MUST return the orientation to the
- default screen orientation any time the orientation is
- unlocked [SCREEN-ORIENTATION] or the top-level browsing
- context is navigated.
+ default screen orientation any time the orientation is
+ unlocked [SCREEN-ORIENTATION] or the top-level browsing
+ context is navigated.
Although the specification relies on the [SCREEN-ORIENTATION]'s
- OrientationLockType
, it is OPTIONAL for a user agent to implement
+ OrientationLockType
, it is OPTIONAL for a user agent to implement
the [SCREEN-ORIENTATION] API. Supporting the [SCREEN-ORIENTATION]
API is, of course, encouraged.
browser
display
mode.
Once the web application is running, other means can change the - orientation of a top-level browsing context (such as via + orientation of a top-level browsing context (such as via [SCREEN-ORIENTATION] API).
- To process the orientation
member, given ordered map
- json and ordered map manifest:
+ To process the orientation
member, given ordered map
+ json and ordered map manifest:
- The manifest's start_url
member is a string that
+ The manifest's start_url
member is a string that
represents the start URL , which is
- URL that the developer would prefer the user agent load when
+ URL that the developer would prefer the user agent load when
the user launches the web application (e.g., when the user clicks on
the icon of the web application from a device's application menu or
homescreen).
@@ -1477,25 +1477,25 @@
- To process the start_url
member, given ordered map
- json, ordered map manifest, URL
- manifest URL, and URL document URL:
+ To process the start_url
member, given ordered map
+ json, ordered map manifest, URL
+ manifest URL, and URL document URL:
start_url
is
../start_point.html, and the manifest's URL is
https://example.com/resources/manifest.webmanifest,
- then the result of parsing would be
+ then the result of parsing would be
https://example.com/start_point.html.
@@ -1596,7 +1596,7 @@
- The manifest's id
member is a string that represents
+ The manifest's id
member is a string that represents
the identity for the application. The identity takes
the form of a URL, which is same origin as the start URL.
The identity can be used by a service that collects lists of web @@ -1636,27 +1636,27 @@
- To process the id
member, given ordered map
- json, ordered map manifest:
+ To process the id
member, given ordered map
+ json, ordered map manifest:
Since id
is resolved against start_url
's
- origin, providing "../foo", "foo", "/foo", "./foo" all
- resolves to the same identifier. As such, best practice is to
+ origin, providing "../foo", "foo", "/foo", "./foo" all
+ resolves to the same identifier. As such, best practice is to
use a leading "/" to be explicit that the id is a root-relative URL
path. Also, standard encoding/decoding rules apply to the id
processing algorithm, as per the URL Standard.
@@ -1867,23 +1867,23 @@
If the user agent honors the value of the theme_color
member as the default theme color, then that color serves as the
- theme color for all browsing contexts to which the manifest
- is applied. However, the user agent MAY override the default theme color if a document whose URL is
+ theme color for all browsing contexts to which the manifest
+ is applied. However, the user agent MAY override the default theme color if a document whose URL is
within scope of the application context's manifest
- includes a meta
element whose name
attribute is
- "theme-color
". However, the user agent SHOULD NOT
- override the default theme color via a meta
element whose
- name
attribute is "theme-color" for documents'
- URL are not within scope, since the application
+ includes a meta
element whose name
attribute is
+ "theme-color
". However, the user agent SHOULD NOT
+ override the default theme color via a meta
element whose
+ name
attribute is "theme-color" for documents'
+ URL are not within scope, since the application
has no control over these documents.
- The user agent MAY ignore the theme color's alpha component based on the context. For example, in most environments, + The user agent MAY ignore the theme color's alpha component based on the context. For example, in most environments, the theme color cannot be transparent.
Implementors MAY override the value defined by the
- theme_color
member to support prefers-color-scheme.
+ theme_color
member to support prefers-color-scheme.
When processing a manifest, the process a color member @@ -1941,7 +1941,7 @@
background_color
member describes the
expected background color of the web application. It repeats what is
already available in the application stylesheet but can be used by
- the user agent to draw the background color of a web
+ the user agent to draw the background color of a web
application for which the manifest is known before the files are
actually available, whether they are fetched from the network or
retrieved from disk.
@@ -1949,12 +1949,12 @@
The background_color
member is only meant to improve the
user experience while a web application is loading and MUST NOT be
- used by the user agent as the background color when the web
+ used by the user agent as the background color when the web
application's stylesheet is available.
Implementors MAY override the value defined by the
- background_color
member to support prefers-color-scheme.
+ background_color
member to support prefers-color-scheme.
When processing a manifest, the process a color member @@ -2009,7 +2009,7 @@
- The manifest's shortcuts
member is an list of
+ The manifest's shortcuts
member is an list of
shortcut items that provide access to key tasks within a web
application.
- To process the shortcuts
member, given ordered map
- json, ordered map manifest, and
- URL manifest URL:
+ To process the shortcuts
member, given ordered map
+ json, ordered map manifest, and
+ URL manifest URL:
- A language map is an ordered map whose key is a + A language map is an ordered map whose key is a language tag and whose value is a localized value. The localized value is content localized in the language given by the key. @@ -2122,7 +2122,7 @@
- A localized text object is an ordered map with the + A localized text object is an ordered map with the following properties:
value
dir
(optional)
@@ -2146,12 +2146,12 @@
- For localizable members that accept strings, the
+ For localizable members that accept strings, the
*_localized
member's language map accepts either a
- string or a localized text object as the localized value.
+ string or a localized text object as the localized value.
- When a string is used, or when the dir
+ When a string is used, or when the dir
member of the localized text object is missing, the default direction (dir
member of the manifest) is
applied.
- When a string is used, or when the
+ When a string is used, or when the
lang
member of the localized text object is missing, the language tag of the language map
key is applied.
- To process a *_localized
text member, given ordered map json, ordered map map,
- string member, and text-direction
+ To process a *_localized
text member, given ordered map json, ordered map map,
+ string member, and text-direction
defaultDirection:
- To process a localized text object, given string or - ordered map localizedValue, string - defaultLanguageTag, ordered map map, - string member, and text-direction + To process a localized text object, given string or + ordered map localizedValue, string + defaultLanguageTag, ordered map map, + string member, and text-direction defaultDirection:
false
, return.
The process a localized text object algorithm takes both a
- string or a localized text object for the localized value parameter, but the processed result will be normalized into
+ string or a localized text object for the localized value parameter, but the processed result will be normalized into
a localized text object with the
value
, lang
, and
dir
members set.
@@ -2280,8 +2280,8 @@
- For localizable members that accept a list of image resources, the *_localized
member's language map
- accepts a list of image resources as the localized value.
+ For localizable members that accept a list of image resources, the *_localized
member's language map
+ accepts a list of image resources as the localized value.
id
member passing json and manifest.
scope
member passing json, manifest, and
manifest URL.
@@ -2435,7 +2435,7 @@
- Only sRGB colors, and colors the user agent can convert to
- sRGB without any outside knowledge (e.g., "AliceBlue"
), are
+ Only sRGB colors, and colors the user agent can convert to
+ sRGB without any outside knowledge (e.g., "AliceBlue"
), are
supported. For example, lab(…)
or color(display-p3, …)
can be
- converted to sRGB without outside knowledge, but
+ converted to sRGB without outside knowledge, but
color(--custom-profile, …)
would require finding a matching
"@color-profile" rule which cannot be specified in the manifest.
- To process a color member, using ordered map - json, ordered map map, and - string member: + To process a color member, using ordered map + json, ordered map map, and + string member:
- To process a text member, given ordered map - json, ordered map map, and - string member: + To process a text member, given ordered map + json, ordered map map, and + string member:
The processing a manifest steps are invoked by [HTML]'s
- processing steps for the link
element, but MAY also be invoked
+ processing steps for the link
element, but MAY also be invoked
by the user agent to process a manifest without an associated
- document.
+ document.
In this case, to match the guarantees made by the corresponding @@ -2515,16 +2515,16 @@
link
element
- linkElement with a rel
of
- manifest
and a href
that resolves to
+ link
element
+ linkElement with a rel
of
+ manifest
and a href
that resolves to
manifest URL, and that
Origin
is
- document URL's origin, and whose credentials mode is set to the CORS settings attribute credentials mode
- for linkElement's crossorigin
attribute.
+ Origin
is
+ document URL's origin, and whose credentials mode is set to the CORS settings attribute credentials mode
+ for linkElement's crossorigin
attribute.
- A processed manifest is applied to a top-level browsing context, + A processed manifest is applied to a top-level browsing context, meaning that the members of the manifest are affecting the presentation and/or behavior of the browsing context. Whenever a - top-level browsing context is created, the user agent MAY - apply a manifest to it before navigation begins. + top-level browsing context is created, the user agent MAY + apply a manifest to it before navigation begins.
- A top-level browsing context that has a manifest applied to + A top-level browsing context that has a manifest applied to it is referred to as an application context.
If an application context is created as a result of the user
- agent being asked to navigate to a deep link, the
- user agent MUST immediately navigate to the deep link
+ agent being asked to navigate to a deep link, the
+ user agent MUST immediately navigate to the deep link
with historyHandling set to "replace
". Otherwise, when
the application context is created, the user agent MUST
- immediately navigate to the start URL with
+ immediately navigate to the start URL with
historyHandling set to "replace
".
- Each manifest image resource is an image resource that + Each manifest image resource is an image resource that is conceptually part of a web application, suitable to use in various contexts depending on the semantics of the member that is using the object (e.g., an icon that is part of an application menu, etc.).
- A manifest image resource differs from a image resource in that
+ A manifest image resource differs from a image resource in that
it can have an additional purpose
member.
@@ -2688,7 +2688,7 @@
The purpose
member is an
- unordered set of unique space-separated tokens. The allowed
+ unordered set of unique space-separated tokens. The allowed
values are the icon purposes.
@@ -2737,7 +2737,7 @@
- The icon purposes list is the list « "monochrome", "maskable", "any" ». + The icon purposes list is the list « "monochrome", "maskable", "any" ».
If an icon contains multiple purposes, it could be used for any of @@ -2748,30 +2748,30 @@
"fizzbuzz"
, then it will be ignored.
- To determine the purpose of an image, given ordered map json: + To determine the purpose of an image, given ordered map json:
- The security policy that governs whether a user agent can
+ The security policy that governs whether a user agent can
fetch an icon image is governed by the img-src
directive [CSP3]
- associated with the manifest's owner Document
.
+ associated with the manifest's owner Document
.
- A common use case of a manifest is for a user agent to - install a web application; whereby the user agent - provides the end-user with a means of instantiating a new top-level - browsing context that has the manifest's members applied to - it. A web application that is installed is known as a installed web application. That is, the manifest's members, or - their defaults, are in effect on the top-level browsing context. - This distinguishes an installed web application from a traditional - bookmark, as opening a web page from a traditional bookmark will not - have the manifest's properties applied to it. + Any website is an installable web application. +
+
++ A user agent can provide a way for the end-user to install a web application on the end-user's device, allowing the + user to instantiate a new top-level browsing context with the + manifest's members applied. +
+Once a web application is installed it is known as a + installed web application: + That is, the manifest's members, or their defaults, + are applied to the top-level browsing context of the web application. This + distinguishes an installed web application from a traditional bookmark, + as opening a web page from a traditional bookmark will not have the + manifest's properties applied to it.
For example, on user agents that support installation, a web @@ -3254,12 +3260,12 @@
If the name
and short_name
members are
missing, empty, or the wrong type, a user agent MAY fallback to the
- Document
to find suitable replacements for missing manifest
+ Document
to find suitable replacements for missing manifest
members (e.g., using application-name
in place of name
or short_name
). Alternatively, the user agent SHOULD
assign a default name (e.g., "Untitled") that follows platform
@@ -3307,14 +3313,14 @@
This would typically take place when the user selects an - installed web app from an app launching UI surface e.g., a home + installed web app from an app launching UI surface e.g., a home screen, launcher or start menu.
The steps to launch a web application is given by the following algorithm. The algorithm takes a processed manifest - manifest, an optional URL target URL, - an optional POST resource POST resource and returns an + manifest, an optional URL target URL, + an optional POST resource POST resource and returns an application context.
@@ -3341,17 +3347,17 @@
It is RECOMMENDED that UI that affords the end user the ability to - install a web application also allows inspecting the icon, + install a web application also allows inspecting the icon, name, start URL, origin, etc. pertaining to a web application. This is to give an end-user an opportunity to make a conscious decision to approve, and possibly modify, the information pertaining @@ -3379,7 +3385,7 @@
scope
" member of a processed manifest. The
navigation scope is the URLs to which an application context can be
- navigated while the manifest is applied.
+ navigated while the manifest is applied.
@@ -3426,24 +3432,24 @@
- A URL target is said to be within scope of URL scope if the
+ A URL target is said to be within scope of URL scope if the
following algorithm returns true
:
false
.
+ false
.
- A URL target is within scope of a
+ A URL target is within scope of a
manifest if the target is within scope
of manifest's navigation scope (i.e., within scope of manifest's scope
member).
- If the application context's active document's - URL is not within scope of the application context's processed manifest, the user agent SHOULD show - a prominent UI element indicating the URL or at least its - origin, including whether it is served over a secure connection. - This UI SHOULD differ from any UI used when the URL is + If the application context's active document's + URL is not within scope of the application context's processed manifest, the user agent SHOULD show + a prominent UI element indicating the URL or at least its + origin, including whether it is served over a secure connection. + This UI SHOULD differ from any UI used when the URL is within scope of the application context's processed manifest, in order to make it obvious that the user is navigating off scope. @@ -3471,12 +3477,12 @@
- Once a user agent applies a particular display mode to an + Once a user agent applies a particular display mode to an application context, it becomes the default display - mode for the top-level browsing context (i.e., it is used - as the display mode when the window is navigated). The user + mode for the top-level browsing context (i.e., it is used + as the display mode when the window is navigated). The user agent MAY override the default display mode for security reasons - (e.g., the top-level browsing context is navigated to + (e.g., the top-level browsing context is navigated to another origin) and/or the user agent MAY provide the user with a means of switching to another display mode.
@@ -3647,7 +3653,7 @@- The display modes list is the list « "fullscreen", "standalone", "minimal-ui", "browser" ». + The display modes list is the list « "fullscreen", "standalone", "minimal-ui", "browser" ».
A user agent MUST reflect the applied display mode of the web
- application in the display-mode
media feature [MEDIAQUERIES-5].
+ application in the display-mode
media feature [MEDIAQUERIES-5].
A user agent will expose the actual display mode being applied — not
necessarily the one declared in the manifest — via the
- display-mode
media feature, accessible through CSS or
+ display-mode
media feature, accessible through CSS or
JavaScript. Note that this media feature will also reflect other
display modes for a web page when a manifest is not being applied. For
example, if the end-user puts the page into fullscreen, then the user
agent would reflect this change to CSS and scripts via the
- display-mode
media feature.
+ display-mode
media feature.
It is RECOMMENDED that UI that affords the end user the ability to - install a web application also allows inspecting the icon, name, + install a web application also allows inspecting the icon, name, start URL, origin, etc. pertaining to a web application. This is to give an end-user an opportunity to make a conscious decision to approve, and possibly modify, the information pertaining to the web @@ -3764,7 +3770,7 @@
@@ -3953,7 +3959,7 @@
There is only one class of product that can claim conformance to this - specification: a user agent. + specification: a user agent.
Although this specification is primarily targeted at web browsers, it @@ -4239,7 +4245,7 @@