LGTM2

On 3/31/26 6:46 a.m., Yoshisato Yanagisawa wrote:

Let me share the summary of origin trials as Yoav asked:

Currently, 35 sites, including large and medium-scale origins, participated in the origin trials. Usage metrics can be found at https://chromestatus.com/metrics/feature/timeline/popularity/5550.

Developers expressed strong interest in using this feature to maintain a SharedWorker's lifetime across same-origin navigations within a single tab. While there were requests for seamless migration from non-extended to extended lifetime workers, we identified a potential "footgun" regarding WebLocks where a long-lived worker could hold a lock indefinitely. To ensure safety, we decided to enforce strict separation between the two lifetime modes.

Feedback also showed that the feature effectively handles asynchronous tasks after a page unloads in most scenarios. However, some sites with strict Content Security Policies (CSP) encountered issues when using the feature with blob: URLs.

Notably, extended lifetime shared workers were successfully integrated into the HTML standard during the OT period, with positive signals from other browser vendors. Additionally, as we are working on enabling SharedWorker on Android (as discussed in a separate thread), this feature will also be available on Android following that rollout. To improve observability, chrome://inspect/#workers was updated to indicate whether a SharedWorker is running with the extendedLifetime flag.

Please let me know if you have any questions.


2026年3月31日(火) 18:22 Yoav Weiss (@Shopify) <[email protected]>:

    LGTM1

    On Tue, Mar 31, 2026 at 8:09 AM Chromestatus
    <[email protected]> wrote:

        *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


    https://github.com/whatwg/html/pull/11600 is a slightly more
    convenient link.



        *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
        
<https://issues.chromium.org/issues?q=customfield1222907:%22Blink%3EWorkers%22>

        *Web Feature ID*
        shared-workers <https://webstatus.dev/features/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 (e.g., 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.


    It'd be good to update that thread with OT results, as discussed.


        /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
        
<https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md>?*
        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 (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=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
        <https://chromestatus.com>.
-- 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
        
<https://groups.google.com/a/chromium.org/d/msgid/blink-dev/69cb650f.050a0220.201b21.039e.GAE%40google.com?utm_medium=email&utm_source=footer>.

--
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/CAPNB-6U57Q-itgKk9fO5EuS4G2tiWCuYSE6nN%2B0Buyrq8R0B_w%40mail.gmail.com <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAPNB-6U57Q-itgKk9fO5EuS4G2tiWCuYSE6nN%2B0Buyrq8R0B_w%40mail.gmail.com?utm_medium=email&utm_source=footer>.

--
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/292cb41a-b558-42fa-ad0f-dc137f516063%40chromium.org.

Reply via email to