On Wed, May 15, 2024 at 9:03 PM Mason Freed <mas...@chromium.org> wrote:
> Contact emailsmas...@chromium.org > > ExplainerNone > > Specificationhttps://w3c.github.io/uievents/#legacy-event-types > > Summary > > Mutation Events, including `DOMSubtreeModified`, `DOMNodeInserted`, > `DOMNodeRemoved`, `DOMNodeRemovedFromDocument`, > `DOMNodeInsertedIntoDocument`, and `DOMCharacterDataModified`, are quite > bad for page performance, and also significantly increase the complexity of > adding new features to the Web. These APIs were deprecated from the spec ( > https://w3c.github.io/uievents/#legacy-event-types) in 2011, and were > replaced (in 2012) by the much better-behaved Mutation Observer API. Usage > of the obsolete Mutation Events must now be migrated to Mutation Observer. > Mutation event support will be disabled by default starting in Chrome 127, > around July 30, 2024. Code should be migrated before that date to avoid > site breakage. If more time is needed, there are a few options: - The > Mutation Events Deprecation Trial ( > https://developer.chrome.com/origintrials/#/view_trial/919297273937002497) > can be used to re-enable the feature for a limited time on a given site. > This can be used through Chrome 134, ending March 25, 2025. - A > MutationEventsEnabled enterprise policy ( > https://chromeenterprise.google/policies/#MutationEventsEnabled) can also > be used for the same purpose, also through Chrome 134. Please see this blog > post for more detail: > https://developer.chrome.com/blog/mutation-events-deprecation Report bugs > here: https://issues.chromium.org/new?component=1456718&template=1948649 > > > Blink componentBlink>DOM > <https://bugs.chromium.org/p/chromium/issues/list?q=component:Blink%3EDOM> > > Search tagsMutationEvent > <https://chromestatus.com/features#tags:MutationEvent>, DOMSubtreeModified > <https://chromestatus.com/features#tags:DOMSubtreeModified>, > DOMNodeInserted <https://chromestatus.com/features#tags:DOMNodeInserted>, > DOMNodeRemoved <https://chromestatus.com/features#tags:DOMNodeRemoved>, > DOMNodeRemovedFromDocument > <https://chromestatus.com/features#tags:DOMNodeRemovedFromDocument>, > DOMNodeInsertedIntoDocument > <https://chromestatus.com/features#tags:DOMNodeInsertedIntoDocument>, > DOMCharacterDataModified > <https://chromestatus.com/features#tags:DOMCharacterDataModified> > > TAG reviewNone > > TAG review statusNot applicable > > Chromium Trial NameMutationEvents > > Origin Trial documentation link > https://developer.chrome.com/blog/mutation-events-deprecation > > WebFeature UseCounter namekDOMNodeRemovedEvent > > Risks > > > Interoperability and Compatibility > > There are technically 9 Mutation Events, but Chromium only implements 6 of > them. Their use counters vary significantly: - DOMNodeInsertedIntoDocument: > 0.008% - DOMNodeRemovedFromDocument: 0.009% - DOMCharacterDataModified: > 0.011% - DOMNodeRemoved: 0.73% - DOMSubtreeModified: 0.68% - > DOMNodeInserted: 1.086% > 1% is a *lot*. Did UKM reveal anything interesting about this usage? Do we know if all of it is driven by site content, vs e.g. extensions? > Chrome has shipped an experiment since M124 that disables all Mutation > Events for 99% of users of Canary, Dev, and Beta versions of Chrome. Very > few bugs have been filed in the intervening months, and all that were filed > have been resolved quickly via the site owner making changes to not rely on > the deprecated events. > This gives me significant confidence that removing the events will not be > as big of a deal as the use counters would suggest. Still, due to the > still-high numbers, extreme care will be taken in the removal process. I > plan to disable the events via Finch only, so that if issues are > encountered, Finch will be a safe way to re-enable the events. > Additionally, there are the deprecation trial and enterprise policies to > offer an easy relief valve for affected sites. > > > *Gecko*: Positive ( > https://github.com/mozilla/standards-positions/issues/807) "very strong > positive position" > > *WebKit*: No signal ( > https://github.com/WebKit/standards-positions/issues/192) > > *Web developers*: No signals > > *Other signals*: > > Activation > > This npm package attempts to polyfill Mutation Events using Mutation > Observer: https://www.npmjs.com/package/mutation-events. > > > 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? > > None > > > Debuggability > > > > Will this feature be supported on all six Blink platforms (Windows, Mac, > Linux, ChromeOS, Android, and Android WebView)?Yes > > Is this feature fully tested by web-platform-tests > <https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md> > ?No > > Flag name on chrome://flagsmutation-events > > Finch feature nameMutationEvents > > Requires code in //chrome?False > > Tracking bughttps://crbug.com/1446498 > > Estimated milestones > Shipping on desktop 127 > Origin trial desktop first 124 > Origin trial desktop last 134 > Shipping on Android 127 > OriginTrial Android last 134 > OriginTrial Android first 124 > Shipping on WebView 127 > OriginTrial webView last 134 > OriginTrial webView first 124 > > 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). > None > > Link to entry on the Chrome Platform Status > https://chromestatus.com/feature/5083947249172480?gate=5111010140094464 > > Links to previous Intent discussionsIntent to Deprecate: > https://groups.google.com/a/chromium.org/g/blink-dev/c/qDsKRU-cQ_4/m/isA1mZ_aAAAJ > Intent to Experiment: > https://groups.google.com/a/chromium.org/g/blink-dev/c/z-VIfSOco4k/m/KDz9c_goAAAJ > > 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 blink-dev+unsubscr...@chromium.org. > To view this discussion on the web visit > https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAM%3DNeDjonGju3YX1WkXtEJrMGLo4bH9AqtwV0QoqvopdGNioAg%40mail.gmail.com > <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAM%3DNeDjonGju3YX1WkXtEJrMGLo4bH9AqtwV0QoqvopdGNioAg%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 blink-dev+unsubscr...@chromium.org. To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAOmohSJzmUKZo5K0TwixDRx0J5JfcNzugO3C%2BPVac-sB-3M-0g%40mail.gmail.com.