Contact emailsmas...@chromium.org

ExplainerNone

Specificationhttps://w3c.github.io/uievents/#legacy-event-types

Summary

Synchronous 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 be migrated to Mutation Observer.


Blink componentBlink>DOM
<https://bugs.chromium.org/p/chromium/issues/list?q=component:Blink%3EDOM>

Motivation

Mutation Events have been deprecated for over a decade, with the
replacement (Mutation Observer) available also for over a decade. The fact
that these events are still supported in browsers makes the addition of new
features much more difficult, prohibitively so in some cases. For example,
these feature requests and projects are all negatively impacted by the
existence of Mutation Events: - iFrame reparenting:
https://github.com/whatwg/html/issues/5484 and
https://github.com/whatwg/dom/issues/891 - Child reordering:
https://github.com/whatwg/dom/issues/586 - DOM Parts and batch DOM updates:
https://github.com/WICG/webcomponents/blob/gh-pages/proposals/DOM-Parts.md
Given that the feature has been spec-deprecated for a decade, it makes
sense to officially deprecate these APIs in Chrome, and work toward
removing them.


Initial public proposalNone

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

Risks


Interoperability and Compatibility

There are technically 9 Mutation Events, but Chromium only implements 6 of
them. Their use counters vary significantly: - DOMNodeInsertedIntoDocument:
0.006% - DOMNodeRemovedFromDocument: 0.012% - DOMCharacterDataModified:
0.016% - DOMNodeRemoved: 0.77% - DOMSubtreeModified: 0.81% -
DOMNodeInserted: 1.58% The first three could likely be fairly easily
removed after some time. The last three have quite significant usage, and
more study and outreach will be required to bring this usage down below
safe removal limits, which will take significant time. Tentatively, we're
aiming for M126 as the last version of Chrome that supports the events
above, ending July 30, 2024.


*Gecko*: No signal (
https://github.com/whatwg/dom/issues/305#issuecomment-241686139) Old
comments indicate support, but no official position yet.

*WebKit*: No signal

*Web developers*: No signals

*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?

None


Debuggability



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

Requires code in //chrome?False

Tracking bughttps://crbug.com/1446498

Estimated milestones
Shipping on desktop 127
Shipping on Android 127
Shipping on WebView 127

Link to entry on the Chrome Platform Status
https://chromestatus.com/feature/5083947249172480

Links to previous Intent discussions

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%3DNeDgP1mWEoDABHmKfCXSSFO9ZyQDQ5p7h_TtN51ZnyvxSSg%40mail.gmail.com.

Reply via email to