Google Groups

Intent to Ship: Shadow DOM


Kenji Baheux Feb 3, 2014 12:07 PM
Posted in group: blink-dev

Primary eng (and PM) emails

hayato@chromium.org  (kenji...@chromium.org)


Spec

http://w3c.github.io/webcomponents/spec/shadow/


Summary

Shadow DOM lets developers establish and maintain functional boundaries between DOM trees and how these trees interact with each other within a document, thus enabling better functional encapsulation within the DOM.


Link to “Intent to Implement” blink-dev discussion

N/A (the implementation started before blink).

Motivation

Shadow DOM is one of the four Web Components API. Web Components make it possible to build widgets which can be reused reliably and makes worrying about adverse effect of internal implementation details changes an irrelevant issue.


Shadow DOM solves the third aspect mentioned above, namely the DOM tree encapsulation problem. In other words, Shadow DOM makes development of complex web apps sane by allowing developers reason about the parts of the app separately while at the same time maintaining the whole of the app.


We put a lot of effort into designing this specification in W3C WebApps Working Group, we built polyfills and invested a ton more of effort into real-life usefulness of Shadow DOM (by building Polymer on top of it).



Is this feature supported on all five Blink platforms (Windows, Mac, Linux, Chrome OS and Android)?

Yes.


Demo link

Shadow DOM 101

Shadow DOM 201

Shadow DOM 301

and Polymer apps.


Compatibility Risk

Shadow DOM is a bucket 4 item: “The specification for the feature has been accepted by the appropriate standards working group (e.g., a First Public Working Draft in the W3C) and we’ve received positive feedback from other browser engines about the feature’s feasibility and value.” Concretely, Mozilla is actively implementing Shadow DOM.


Note: we shipped a prefixed implementation of Shadow DOM in Chrome 25 which was before Blink times. This implementation is now obsolete in significant terms. This very situation is bad for compatibility. We learned a lot in the process and we believe that we are in a much more stable situation on both spec and implementation aspects. We will simultaneously unship the prefixed implementation of Shadow DOM.



OWP launch tracking bug?

http://crbug.com/336121


Link to entry on the feature dashboard

http://www.chromestatus.com/features/4507242028072960