Contact emails
dom...@chromium.org,
yyana...@chromium.org
Explainer
https://gist.github.com/domenic/c5bd38339f33b49120ae11b3b4af5b9b#file-1-explainer-md
Specification
None
Summary
This adds a new option, `extendedLifetime: true`, to the `SharedWorker` constructor. This requests that the shared worker be kept alive even after all current clients have unloaded. The primary use case is to allow pages to perform asynchronous work that requires JavaScript after a page unloads, without needing to rely on a service worker.
Blink component
Blink>Workers
Web Feature ID
shared-workers
TAG review
https://github.com/w3ctag/design-reviews/issues/1089
TAG review status
Pending
Origin Trial Name
Extended lifetime shared workers
Chromium Trial Name
SharedWorkerExtendedLifetime
Origin Trial documentation link
https://gist.github.com/domenic/c5bd38339f33b49120ae11b3b4af5b9b#file-1-explainer-md
WebFeature UseCounter name
kSharedWorkerExtendedLifetimeFeatureEnabled
Risks
Interoperability and Compatibility
We intend to specify that the lifetime timeout for these shared workers be extended in the same way as service workers. Because the exact timeout of service workers is left implementation-defined, it's possible that code using this new feature could be non-interoperable. However, this has so far not proved to be a major problem in practice for service workers.
Gecko: No signal (
https://github.com/mozilla/standards-positions/issues/1227) Some unofficial tentative positive signals and engagement in the proposal issue.
WebKit: No signal (
https://github.com/WebKit/standards-positions/issues/492) Some unofficial tentative negative signals in the proposal issue.
Web developers: Positive The problem of wanting to perform asynchronous work during unload is well-known, with the service worker workaround currently deployed, including by Google properties.
Other signals:
WebView application risks
Does this intent deprecate or change behavior of existing APIs,
such that it has potentially high risk for Android WebView-based
applications?
None
Goals for experimentation
Reason this experiment is being extended
Developer participation in the Origin Trial has increased significantly, with most of the growth occurring since mid-September. As this momentum is recent, an extension is needed to allow developers sufficient time to conduct thorough experiments and to provide us with more comprehensive usage data and insights.
To aid developers in their experimentation, we have also improved debuggability. The chrome://inspect/#workers page now indicates when a SharedWorker is using the extendedLifetime option.
Separately, the standardization process is progressing well. The corresponding pull request to the WHATWG HTML specification (
https://github.com/whatwg/html/pull/11600) is under review and has received positive signals, including an LGTM from Mozilla. Extending the trial will allow this real-world testing to continue while the specification solidifies.
Ongoing technical constraints
None
Debuggability
The chrome://inspect/#workers page indicates when a SharedWorker is using the extendedLifetime option.
Will this feature be supported on all six Blink platforms
(Windows, Mac, Linux, ChromeOS, Android, and Android WebView)?
NoShared workers are not yet supported on Android and Android WebView. However, we are concurrently working on enabling them there, and when we do, this feature will also be supported.
Yes
https://wpt.fyi/results/workers/tentative/SharedWorker-extendedLifetime.html
Flag name on about://flags
None
Finch feature name
SharedWorkerExtendedLifetime
Requires code in //chrome?
False
Tracking bug
https://issues.chromium.org/issues/400473072
Estimated milestones
Origin trial desktop first | 139 |
Origin trial desktop last | 142 |
Origin trial extension 1 end milestone | 145 |
Anticipated spec changes
Open questions about a feature may be a source of future web compat or
interop issues. Please list open issues (e.g. links to known github
issues in the project for the feature specification) whose resolution
may introduce web compat/interop risk (e.g., changing to naming or
structure of the API in a non-backward-compatible way).
We are currently discussing some details in preparation for specification. The exact nature of how the lifetime extension works with regard to non-window clients, particularly, has only recently reached a tentative conclusion.
Link to entry on the Chrome Platform Status
https://chromestatus.com/feature/5138641357373440?gate=5106410035740672
Links to previous Intent discussions
Intent to Experiment:
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/6862683f.170a0220.16d1bf.0122.GAE%40google.com