Contact emails
[email protected], [email protected]

Explainer
https://gist.github.com/domenic/c5bd38339f33b49120ae11b3b4af5b9b#file-1-explainer-md


Specification
https://github.com/whatwg/html/commit/9c009049e4fa9dba638ef68ca502b781082bbb68


Summary
This update 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


Motivation
Many sites want to perform some work during document unloading. This usually 
includes writing to storage, or sending information to severs. Currently, if 
this work is done asynchronously (eg, writing to IndexedDB instead of 
localStorage, or using CompressionStream to compress the body before sending a 
fetch()) the only way to do this is to use a service worker. However, requiring 
a service worker for this simple case of work-after-unload is heavyweight: the 
disk space, memory consumption, and developer experience of managing the 
service worker registration and lifecycle makes this hard to deploy. By using 
shared workers, all of these downsides are avoided.


Initial public proposal
https://github.com/whatwg/html/issues/10997


TAG review
https://github.com/w3ctag/design-reviews/issues/1089


TAG review status
Pending


Origin Trial Name
Extended lifetime shared workers


Goals for experimentation
None


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: Positive (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?
No information provided



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)?
No
Shared 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.


Is this feature fully tested by web-platform-tests?
Yes
https://wpt.fyi/results/workers/tentative/SharedWorker-extendedLifetime.html


Flag name on about://flags
No information provided


Finch feature name
SharedWorkerExtendedLifetime


Rollout plan
Will ship enabled for all users


Requires code in //chrome?
False


Tracking bug
https://issues.chromium.org/issues/400473072


Estimated milestones


Shipping on desktop 148

Origin trial desktop first 139

Origin trial desktop last 142

Origin trial extension 1 end milestone 145

Origin trial extension 2 end milestone 148

Shipping on Android 148

Shipping on WebView 148




Anticipated spec changes

Open questions about a feature may be a source of future web compat or interop 
issues. Please list open issues (eg links to known github issues in the project 
for the feature specification) whose resolution may introduce web 
compat/interop risk (eg, 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=4686145547665408


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
Intent to Extend Experiment 1: 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/68de2b1f.050a0220.58465.05c2.GAE%40google.com
Intent to Extend Experiment 2: 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/69704662.2b0a0220.2c228a.0283.GAE%40google.com



This intent message was generated by Chrome Platform Status.

-- 
You received this message because you are subscribed to the Google Groups 
"blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/69cb650f.050a0220.201b21.039e.GAE%40google.com.

Reply via email to