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).
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)?
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.