On Wed, 8 Nov 2023 at 21:07, Fergal Daly <fer...@google.com> wrote: > > > On Thu, 26 Oct 2023 at 01:11, Kevin D. <kevin.deyoungs...@gmail.com> > wrote: > >> Understood. >> >> >> 1. *Is there any action required from us until general rollout (when >> `unload` isn’t fired anymore)?* >> >> No. > >> >> 1. *Is there a list of this restricted set domains with which you’re >> experimenting?* Want to know if ours are included >> >> The ls not ready yet, we'll update this thread before going ahead. >
The origins come from this list top 50 websites https://en.wikipedia.org/w/index.php?title=List_of_most-visited_websites&oldid=1198053805 > > >> 1. *We should have `pagehide` replacement by Dec, is that too late?* >> - Or would we have to join the dep trial to avoid our current >> workflows being messed up? If so, how do we join? >> >> The earliest version this will be enabled in is M120 which released in > Jan. So that should be safe > > https://chromiumdash.appspot.com/schedule > This is actually going to arrive in M122 and will be visible to canary/dev users right around now, F > > > F > > > >> >> On Wednesday, October 25, 2023 at 4:31:38 AM UTC-7 Fergal Daly wrote: >> >>> On Wed, 25 Oct 2023 at 05:28, Kevin D. <kevin.de...@gmail.com> wrote: >>> >>>> Thanks F >>>> >>>> I see origin trial [1] starts soon with 119 and I need clarification: >>>> >>> >>> That origin trial is a little confusing. It ended up not being >>> implemented in 119 and may not even make it into 120. However we not roll >>> this out generally for any version that doesn't have the OT, so hopefully >>> that means you don't need to worry. >>> >>> >>> >>>> >>>> 1. *Does this mean starting Chrome 119, `unload` won't be fired?* >>>> >>> >>> We will experiment with a small fraction of traffic on a restricted set >>> of domains. 119 is the earlier version that supports disabling it but we >>> won't do it in any version that has known issue (e.g. like below). >>> >>> >>>> 2. The Permissions Policy alternative does not work with sourceless >>>> iframes (iframes using `srcdoc`). You filed a bug [2] earlier for that >>>> after I raised it, any* updates?* >>>> >>> >>> It will also be fixed before any general roll out, but no update yet. >>> >>> >>>> 3. My team is experimenting with `pagehide` as an alternative solution, >>>> but would like to know the timelines for us to plan and ship accordingly. >>>> *Will >>>> `unload` still fire during the dep. trial?* >>>> >>> >>> Joining the dep trial will cause unload to continue to fire as before, >>> >>> F >>> >>> >>> >>>> >>>> >>>> [1] >>>> https://developer.chrome.com/origintrials/#/view_trial/4070128163236085761 >>>> [2] https://bugs.chromium.org/p/chromium/issues/detail?id=1491597 >>>> >>>> On Tuesday, October 10, 2023 at 6:02:41 PM UTC-7 Kevin D. wrote: >>>> >>>>> *Does the Permissions-Policy: unload API >>>>> <https://chromestatus.com/feature/5760325231050752> not support sourceless >>>>> subframes?* (i.e. iframes without *src* attributes and with content >>>>> set inline in *srcdoc*) >>>>> >>>>> My team uses sourceless iframes, and hooks to the *unload* event for >>>>> cleaning up resources and such (to avoid potential memory leaks, etc.). >>>>> >>>>> We’ve tried replicating your demo >>>>> <https://dyn.fergaldaly.com/~fergal/html/pp-unload/enabled/> showing >>>>> how subframes can still use the unload event with Permissions-Policy even >>>>> after the deprecation, but our repro confirms it does not work for >>>>> sourceless iframes case. >>>>> >>>>> *Secondly, does the pagehide event serve as an exact replacement for >>>>> our case? *(sourceless iframes needing to clear resources). According >>>>> to Back/forward cache >>>>> <https://web.dev/articles/bfcache#only-add-beforeunload-listeners-conditionally:~:text=Instead%20of%20using%20the%20unload%20event,%20use%20the%20pagehide%20event.%20The%20pagehide%20event%20fires%20in%20all%20cases%20where%20the%20unload%20event%20currently%20fires,%20and%20it%20also%20fires%20when%20a%20page%20is%20put%20in%20the%20bfcache.>, >>>>> *pagehide *events should be a superset of *unload*. >>>>> >>>>> Thanks >>>>> Kevin >>>>> On Wednesday, March 29, 2023 at 11:23:16 PM UTC-7 Fergal Daly wrote: >>>>> >>>>>> [+sm...@mozilla.com] >>>>>> >>>>>> I'm relaying a piece of feedback from Mozilla in this github issue >>>>>> <https://github.com/mozilla/standards-positions/issues/691#issuecomment-1484997320> >>>>>> . >>>>>> >>>>>> It's possible that pages are depending on `unload` handlers in >>>>>> subframes for functionality even without any main frame navigation. E.g a >>>>>> page creates a subframe with an unload handler, when the subframe is >>>>>> destroyed or navigates to somewhere else, that unload handler does >>>>>> something interesting, e.g. notifies the outer frame that this has >>>>>> happened. >>>>>> >>>>>> This is definitely possible. It's also pretty easy to switch to >>>>>> pagehide for this case but we should try to understand how common this is >>>>>> before breaking it. It should be possible to measure how often subframe >>>>>> unloads fire when the mainframe is not navigating. This will give us an >>>>>> upper bound on the size of the problem, >>>>>> >>>>>> F >>>>>> >>>>>> >>>>>> On Fri, 24 Mar 2023 at 10:16, Kenji Baheux <kenji...@chromium.org> >>>>>> wrote: >>>>>> >>>>>>> Tl;dr: the presence of unload event listeners is a primary blocker >>>>>>> for back/forward cache on Chromium based browsers and for Firefox on >>>>>>> desktop platforms. On the other hand, for mobile platforms, almost all >>>>>>> browsers prioritize the bfcache by not firing unload events in most >>>>>>> cases. To improve the situation, we’ve been working with lots of >>>>>>> partners >>>>>>> and successfully reduced the use of unload event listeners over the >>>>>>> last few years. To further accelerate this migration, we propose to have >>>>>>> Chrome for desktop gradually skip unload events. If this call for >>>>>>> feedback doesn’t unearth critical showstoppers and if the proposal >>>>>>> makes it >>>>>>> through the blink process, the behavior change could be starting from >>>>>>> M114 >>>>>>> at the earliest (note: beforeunload will remain unchanged). We’d >>>>>>> like feedback on this plan, in particular use cases that don’t yet have >>>>>>> a >>>>>>> viable alternative. >>>>>>> >>>>>>> >>>>>>> >>>>>>> Hi, >>>>>>> >>>>>>> >>>>>>> This is a call for feedback about a tentative plan regarding unload >>>>>>> events. Our goal is to identify use cases for which there isn’t any good >>>>>>> alternative to unload events, and would therefore prevent this plan >>>>>>> from moving forward. >>>>>>> >>>>>>> >>>>>>> The unload event is extremely unreliable. It is ignored in most >>>>>>> cases by all mobile browsers with the exception of Firefox on Android. >>>>>>> Furthermore, in Safari, the unload event is ignored on both desktop >>>>>>> & mobile platforms. In addition to being unreliable, the presence of >>>>>>> unload event listeners on a page is a major back/forward cache >>>>>>> blocker on desktop for Chromium browsers and Firefox. Based on Chrome >>>>>>> stats, we believe that unload event listeners reduce bfcache’s >>>>>>> ability to deliver instant back/forward navigation by ~18 percentage >>>>>>> points >>>>>>> (hit-rate). >>>>>>> >>>>>>> >>>>>>> Over the course of 2021~2022, we ran a large collaborative effort to >>>>>>> reduce the usage of unload event listeners, in particular across >>>>>>> popular third parties. We’ve seen great progress with many sites and >>>>>>> third >>>>>>> parties having already completed their migration. >>>>>>> >>>>>>> >>>>>>> Given how unreliable unload events are, the potential user >>>>>>> experience upsides, and the great progress achieved by the ecosystem on >>>>>>> switching away from unload, we’d like to help accelerate the >>>>>>> migration by gradually skipping unload events on Chrome for >>>>>>> desktop. >>>>>>> >>>>>>> >>>>>>> 👉 Please note that beforeunload will remain unchanged as this >>>>>>> event doesn’t have reliability issues and doesn’t block BFCache. 👈 >>>>>>> >>>>>>> >>>>>>> We are interested in hearing your feedback about this plan. In >>>>>>> particular, please let us know if you are aware of unload event >>>>>>> listener use cases that lack a viable alternative. Your feedback will >>>>>>> inform the proposal (e.g. behavior and timeline). >>>>>>> >>>>>>> >>>>>>> If this call for feedback doesn’t unearth any critical showstoppers, >>>>>>> and if the proposal makes it through the blink process, we’d start the >>>>>>> plan >>>>>>> from M114 at the earliest by having a small likelihood of ignoring >>>>>>> unload >>>>>>> events while providing access to fine-tuning control (e.g. >>>>>>> Permission-Policy: >>>>>>> unload API <https://chromestatus.com/feature/5760325231050752>) and >>>>>>> Enterprise/Edu carve outs. From there, we’ll continue to monitor the >>>>>>> community’s feedback and gradually increase the likelihood over time. We >>>>>>> are hoping to make significant progress by the end of this year, and >>>>>>> hope >>>>>>> to reach a satisfying state sometime in 2024. >>>>>>> >>>>>>> >>>>>>> See the sections below for more context, our guidance for a >>>>>>> post-unload web, an API to exert control over unload event >>>>>>> listeners, and our approach to ease-in enterprise/edu products into this >>>>>>> change. >>>>>>> >>>>>>> >>>>>>> >>>>>>> Background about bfcache >>>>>>> >>>>>>> Back/forward cache <https://web.dev/bfcache/> is a browser >>>>>>> optimization that enables instant back and forward navigation. It’s an >>>>>>> in-memory cache that stores a complete snapshot of a page (including the >>>>>>> JavaScript heap) as the user is navigating away. With the entire page in >>>>>>> memory, the browser can quickly and easily restore it >>>>>>> <https://www.youtube.com/watch?v=cuPsdRckkF0> if the user decides >>>>>>> to return. >>>>>>> >>>>>>> >>>>>>> The multiple behaviors of bfcache with unload events >>>>>>> >>>>>>> Unfortunately, not all pages can be stored in bfcache. For instance, >>>>>>> using certain APIs prevent pages from entering the bfcache. In >>>>>>> particular, >>>>>>> the presence of unload listeners on a page is the most common bfcache >>>>>>> blocker. >>>>>>> >>>>>>> >>>>>>> The use of unload listeners is highly discouraged because it’s a >>>>>>> fundamentally unreliable event: >>>>>>> >>>>>>> - >>>>>>> >>>>>>> On desktop, Chrome and Firefox are currently firing unload >>>>>>> events at the cost of the user experience, while Safari will attempt >>>>>>> to >>>>>>> cache some pages with an unload event listener (skipping the >>>>>>> event in doing so). >>>>>>> - >>>>>>> >>>>>>> On mobile, Chrome and Safari will attempt to cache pages with an >>>>>>> unload event listener. On the other hand, Firefox treats pages >>>>>>> that use unload event listeners as ineligible for the bfcache, >>>>>>> except on iOS, which requires all browsers to use the WebKit >>>>>>> rendering >>>>>>> engine (i.e. all browsers inherently behave like Safari on this >>>>>>> platform). >>>>>>> >>>>>>> >>>>>>> Alternatives to unload event listener >>>>>>> >>>>>>> The recommended alternatives to unload event listeners are to: >>>>>>> >>>>>>> - >>>>>>> >>>>>>> Use the pagehide event listener >>>>>>> >>>>>>> <https://web.dev/bfcache/#only-add-beforeunload-listeners-conditionally:~:text=Instead%20of%20using%20the%20unload%20event%2C%20use%20the%20pagehide%20event.%20The%20pagehide%20event%20fires%20in%20all%20cases%20where%20the%20unload%20event%20currently%20fires%2C%20and%20it%20also%20fires%20when%20a%20page%20is%20put%20in%20the%20bfcache.> >>>>>>> (note: despite the name, this serves a different purpose than the >>>>>>> page >>>>>>> visibility API). >>>>>>> - >>>>>>> >>>>>>> For the cases where user interaction would be useful, conditionally >>>>>>> use the beforeunload event listener >>>>>>> >>>>>>> <https://web.dev/bfcache/#only-add-beforeunload-listeners-conditionally> >>>>>>> . >>>>>>> - >>>>>>> >>>>>>> Use sendBeacon >>>>>>> >>>>>>> <https://developer.mozilla.org/en-US/docs/Web/API/Navigator/sendBeacon> >>>>>>> or fetch keepalive >>>>>>> >>>>>>> <https://developer.mozilla.org/en-US/docs/Web/API/fetch#:~:text=keepalive,Navigator.sendBeacon()%20API.> >>>>>>> to send analytics data. >>>>>>> >>>>>>> >>>>>>> In addition, you may be interested in the origin trial >>>>>>> <https://developer.chrome.com/origintrials/#/view_trial/1581889369113886721> >>>>>>> for the Pending Beacon API >>>>>>> <https://chromestatus.com/feature/5690553554436096>. This >>>>>>> bfcache-friendly API allows sending a bundle of data to a backend >>>>>>> server, >>>>>>> ideally at the ‘end’ of a user’s visit to a page. From our >>>>>>> observations, we >>>>>>> believe this is the most common use case for unload event >>>>>>> listeners. Compared to the methods highlighted above, this API has >>>>>>> better >>>>>>> ergonomics. >>>>>>> >>>>>>> >>>>>>> Test driving a web free of unload event listeners! >>>>>>> >>>>>>> To understand how the plan might play out, please consider joining >>>>>>> the origin trial >>>>>>> <https://developer.chrome.com/origintrials/#/view_trial/1012184016251518977> >>>>>>> for the Permissions-Policy: unload API >>>>>>> <https://chromestatus.com/feature/5760325231050752>. This API >>>>>>> allows any site to: >>>>>>> >>>>>>> - >>>>>>> >>>>>>> Exert control over unload event listeners (e.g. completely >>>>>>> disallow them, or selectively allow them for specific origins). >>>>>>> - >>>>>>> >>>>>>> Report the use of unload event listeners to an endpoint for >>>>>>> assessment purposes. >>>>>>> >>>>>>> >>>>>>> Chrome for Enterprise & Education >>>>>>> >>>>>>> We also acknowledge that providers of enterprise & education >>>>>>> solutions may not always have the flexibility to quickly update existing >>>>>>> deployments. To minimize concerns, we’ll offer a group policy to keep >>>>>>> the >>>>>>> current behavior for unload events. This policy will also be >>>>>>> enabled by default if Chrome detects that it is in an enterprise / >>>>>>> education environment, as hinted by the presence of one or more existing >>>>>>> group policies. For unmanaged Enterprise/Edu environments, a simple >>>>>>> Chrome >>>>>>> extension could inject the relevant calls to the >>>>>>> Permission-Policy:unload >>>>>>> API for temporarily opting-out the relevant origin(s). >>>>>>> >>>>>> -- 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 blink-dev+unsubscr...@chromium.org. To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAAozHLmySXTWGuDy%3D75Csa2F1npx8XuCSu%2Bt9KRmYmMrVEt9UQ%40mail.gmail.com.