From 41b3b90e8eb8b3072330531fb0938ad90436cdc4 Mon Sep 17 00:00:00 2001
From: Phillis Tang
+ The [=manifest's=] id
member is a string that
+ represents the id for the application.
+
The |id| is used by user agents uniquely identify the application + globally. When |id| is changed, it's recognized as a new app and + can be installed separately. When id is not changed, it can be used + to find installed application to perform manifest update. +
++ The |id| can also be used by third party entities such as PWA stores + to uniquely identify and reference web apps +
++ To process the `id` member, given [=object=] + |json:JSON|, [=ordered map=] |manifest:ordered map|.: +
++ User agents MAY re-fetch and update a manifest for an installed web + application and apply updated manifest to its application + context. When a manifest is processed, user agents can + determine whether it's an installed application that can be updated + or a new application by comparing application's [=manifest/id=]. +
Since id is resolved against start_url's origin, providing id as
- "../foo", "foo", "/foo", "./foo" all resolves to the same thing. It is
+ "../foo", "foo", "/foo", "./foo" all resolves to the same [=identifier=]. It is
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 are apply to the id processing algorithm, as per the [[[URL]]].
From d4a7ac156478043982e8409815d2d6e1217ee85d Mon Sep 17 00:00:00 2001
From: Yajing Tang Since id is resolved against start_url's origin, providing id as
+ Since [=manifest/id=] is resolved against [=manifest/start_url=]'s [=URL/origin=], providing
"../foo", "foo", "/foo", "./foo" all resolves to the same [=identifier=]. It is
As such, best practice is to use a leading "/" to be explicit that
the id is a root-relative url path. Also, standard
From a222c0d9ea308a0e86d97269aeb9d66df4e4792f Mon Sep 17 00:00:00 2001
From: Yajing Tang The [=identity=] is used by user agents to uniquely identify the
application universally. When the user agent sees a manifest with an
- [=identity=] that does not correspond to an already-installed application,
- it SHOULD treat that manifest as a description of a distinct
- application, even if it is served from the same URL as that of another
- application. When the user agent sees a manifest with an [=identity=]
- matching that of an already-installed application, it SHOULD be used as
- a signal that this manifest is a replacement for the already-installed
- application's manifest, and not a distinct application, even if it is
- served from a different URL than the one seen previously.
-
- The [=identity=] is considered matching when the processed |manifest|["id"] [=url/equal|equals=].
+ [=identity=] that does not correspond to an already-installed
+ application, it SHOULD treat that manifest as a description of a
+ distinct application, even if it is served from the same URL as that of
+ another application. When the user agent sees a manifest where
+ |manifest|["id"] [=url/equal|equals=] the [=identity=] of an
+ already-installed application, it SHOULD be used as a signal that this
+ manifest is a replacement for the already-installed application's
+ manifest, and not a distinct application, even if it is served from a
+ different URL than the one seen previously.
The [=identity=] can be used by a service that collects lists of web
From bb5b1170322114473b99eebe6732293d604783fc Mon Sep 17 00:00:00 2001
From: Phillis Tang Below table shows some example cases of the |identity| processing algorithm.
The manifest is fetched and processed on every page load. When the
processing is successful, user agents MAY apply updated manifest to
From f9d4edbbab1091cf8a45bf0864a3ed0deb021dd6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marcos=20C=C3=A1ceres?=
The manifest is fetched and processed on every page load. When the
processing is successful, user agents MAY apply updated manifest to
From f89eda6520f90c45b7d42c0d81b06f2db165b5bb Mon Sep 17 00:00:00 2001
From: Phillis Tang
- The manifest is fetched and processed on every page load. When the
- processing is successful, user agents MAY apply updated manifest to
- any current and future application contexts
- associated with the application.
-
- When the user agent fetches a manifest as part of an update check,
- it MUST [=url/equal|compare=] the fetched processed manifest's
- [=manifest/identity=] with the identity of the app being updated. If
- it is not equal, the user agent MUST NOT update the installed
- application's manifest.
-
- User agents SHOULD be careful about performing update to manifest
- fields like app name and icons. Users should be fully aware if
- such fields are to be be updated to avoid web applications being
- installed and silently changed to appear as a different one.
-
"https://example.com/%F0%9F%98%80"
-
|json|["id"]
|manifest|["start_url"]
|manifest|["id"]
+ Explaination
undefined
@@ -882,7 +883,7 @@
""
"https://example.com/my-app/start"
- "https://example.com/"
+ "https://example.com/my-app/start"
- "/"
From ee923ad544f58baeb1efa582cd52219d06f529ec Mon Sep 17 00:00:00 2001
From: Phillis Tang
"https://example.com/my-app/start"
"https://example.com/my-app/start"
-
"%6D"
- "https://example.com/my-app/start"
- "https://example.com/m"
-
"😀"
"https://example.com/my-app/start"
From 3a97b9e7443c59ba2d25686abb15c21ab34d9789 Mon Sep 17 00:00:00 2001
From: Phillis Tang
|json:JSON|, [=ordered map=] |manifest:ordered map|:
-
|json|["id"]
|manifest|["start_url"]
|manifest|["id"]
- Explaination
+ undefined
"https://example.com/my-app/start"
"https://example.com/my-app/start"
+
undefined
+ "https://example.com/my-app/#here"
+ "https://example.com/my-app/"
+
""
"https://example.com/my-app/start"
From 3a70f207b7f31cbe14143a0d07e6bef6fb16960a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marcos=20C=C3=A1ceres?=
Updating the manifest
-
Updating the manifest
+
Updating the manifest
- Privacy and security consideration
-
-
From 2fc8a9e795c1b7b559982b983219fe4879e3f1fd Mon Sep 17 00:00:00 2001
From: Phillis Tang
From f0817f0d9b2eacef261920ae3feae63c658039de Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marcos=20C=C3=A1ceres?=
|json:JSON|, [=ordered map=] |manifest:ordered map|:
-
undefined
"https://example.com/my-app/#here"
- "https://example.com/my-app/"
+ "https://example.com/my-app/#here"
""