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.
