Contact emails
[email protected], [email protected]

Specification
https://html.spec.whatwg.org/multipage/workers.html#shared-workers-and-the-sharedworker-interface


Summary
For a long time, SharedWorker has been disabled on Android due to concerns 
about its unpredictable process lifecycle. We believed that SharedWorker 
instances might terminate unexpectedly, without noticing to users or web 
developers, which we considered unacceptable. However, a recent discussion on 
GitHub (https://github.com/whatwg/html/issues/11205) suggests that the 
unpredictable nature of SharedWorker's process lifecycle might not be as 
significant an issue as we once thought. Based on this, we plan to re-enable 
SharedWorker on Android while simultaneously investigating this behavior to 
ensure a stable and reliable experience.


Blink component
Blink>Workers


Web Feature ID
shared-workers


Motivation
The long-standing demand for SharedWorker support on Android stems from several 
needs expressed by web developers: - Resource Sharing and Efficiency: 
Developers aim to share a single WebSocket or Server-Sent Events (SSE) 
connection across multiple tabs, thereby conserving resources. - Persistent 
Resource Management: There's a strong desire to share and persist resources 
across tabs, particularly for technologies like WASM-based SQLite. - Closing a 
Feature Gap: It has been noted that other major mobile browsers, including 
Safari on iOS and Firefox on Android, already support SharedWorker, making 
Chrome on Android the last major browser to address this gap.


Initial public proposal
No information provided


TAG review
No information provided


TAG review status
Not applicable


Origin Trial Name
SharedWorker on Android


Goals for experimentation
The goal is to evaluate the real-world impact of Android's process lifecycle on 
SharedWorker stability. Unlike on desktop, SharedWorker instances on Android 
can be terminated unexpectedly by the operating system due to memory pressure. 
This trial allows us to release the feature to developers who understand this 
risk and can provide crucial feedback. Specifically, we aim to measure: 1. The 
frequency of unexpected SharedWorker terminations in real-world scenarios. 2. 
Whether the current API is sufficient for developers to handle such 
terminations gracefully. 3. The necessity of potential spec-level 
countermeasures, as discussed in https://github.com/whatwg/html/issues/11205, 
to bridge this behavioral gap between mobile and desktop platforms and ensure a 
consistent developer experience. The insights from this experiment will be 
critical in determining the path to shipping SharedWorker on Android, informing 
whether it can be enabled by default or if further mitigation work is required.


Chromium Trial Name
SharedWorkerOnAndroid


Origin Trial documentation link
https://developer.mozilla.org/en-US/docs/Web/API/SharedWorker


WebFeature UseCounter name
kSharedWorkerStartOnAndroid


Risks




Interoperability and Compatibility
While Chrome has been the sole major browser not to offer SharedWorker, this 
change aims to close that gap. However, unlike on desktop, Android's 
unpredictable process lifecycle presents a unique risk. SharedWorker instances 
might terminate unexpectedly, for example, when a Chrome app is moved to the 
background and then foregrounded. This inherent uncertainty in the Android 
environment is a key risk when running SharedWorker.

Gecko: Shipped/Shipping

WebKit: Shipped/Shipping

Web developers: Positive As you can see in http://crbug.com/40290702, 
SharedWorker support on Android has been a long-awaited feature by web 
developers. This demonstrates a clear and sustained demand from the developer 
community for this capability.

Other signals:


Ergonomics
n/a


Activation
n/a


Security
This feature is already shipped on desktop, and no new security risks are 
introduced with the Android implementation.


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
This feature is already shipped on desktop, and no new debuggability issues 
should be introduced with the Android implementation.


Will this feature be supported on all six Blink platforms (Windows, Mac, Linux, 
ChromeOS, Android, and Android WebView)?
No
This aims to make SharedWorker supported on Android and Android WebView. 
SharedWorker has been supported other than them.


Is this feature fully tested by web-platform-tests?
Yes
SharedWorker tests under https://wpt.fyi/results/workers. eg 
https://wpt.fyi/results/workers/SharedWorker-simple.html Note that since 
wpt.fyi runs tests on Linux not Android for Chromium.


DevTrial instructions
https://developer.mozilla.org/en-US/docs/Web/API/SharedWorker/SharedWorker


Flag name on about://flags
No information provided


Finch feature name
SharedWorker


Rollout plan
Will ship enabled for all users


Requires code in //chrome?
False


Tracking bug
https://crbug.com/40290702


Measurement
https://chromestatus.com/metrics/feature/timeline/popularity/5626 
Content.SharedWorker.Host.DestructionSource to understand how SharedWorkers 
finish (worker.close(), no clients, or worker gone (possibly crash)).


Estimated milestones


Origin trial desktop first 140

Origin trial desktop last 144

Origin trial extension 1 end milestone 147

Shipping on Android 148

Origin trial Android first 140

Origin trial Android last 144

DevTrial on Android 140

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).
No information provided


Link to entry on the Chrome Platform Status
https://chromestatus.com/feature/6265472244514816?gate=5084552061779968


Links to previous Intent discussions
Intent to Experiment: 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/6879be98.2b0a0220.72055.015d.GAE%40google.com
Intent to Extend Experiment 1: 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAPNB-6VPRn%2BLp%2B61oJOc2e3fnY3F1LaZ2f2g_LTsA%3DXv49FzgQ%40mail.gmail.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/69c49b14.050a0220.2ec94.0888.GAE%40google.com.

Reply via email to