Most parts of the Shadow DOM specification have already been upstream-ed to the following Web Standards, including, but not limited to:
- DOM Standard: 3 Events, 4.2.2 Shadow tree, 4.2.3 Mutation Algorithms, 4.2.5 Mixin DocumentOrShadowRoot, 4.2.9 Mixin Slotable, and so on
- HTML Standard: 4.12.4 The slot element, and others.
- CSS Scoping: 3 Shadow Encapsulation (Shadow DOM and Selectors, Shadow Tree and the Cascade, Flattening the DOM into an Element Tree and so on)
Upstreaming is on going.
Link to “Intent to Implement” blink-dev discussion
Is this feature supported on all six Blink platforms (Windows, Mac, Linux, Chrome OS, Android, and Android WebView)?
DevTools shows a shadow root v1, as well as v0, including its mode (open/closed).
For a better interoperability, I have started upstreaming Blink's Shadow DOM Tests to W3C Web Platform Tests. Apple had shared their tests too.
As of now, Blink passes 169 tests out of 171 tests. The two failing tests are well-known issues, which have also been failing on v0, tracked in here.
Blink's initial implementation will not ship "Slots in a flat tree" feature (w3c/webcomponents#308
). This feature depends on "display: content", which Blink will implement after LayoutNG is completed. That will not happen soon.
The followings are remaining specification issues with v1. We are working on addressing them with the cooperation with other browser vendors. They would not be a blocking issue to ship v1.
This is NOT an "Intent to deprecate: Shadow DOM v0". I will not deprecate Shadow DOM v0 at the timing of shipping v1.
I did the best efforts to make Shadow DOM v1 live together with Shadow DOM v0 within one document without any breakage. They can co-exist in Blink.
Deprecation plan for v0: Shadow DOM v0 will be deprecated separately. I will send an "Intent to deprecate: Shadow DOM v0" when I can feel it is ready to deprecate. As of now, we do not have a clear ETA. Shipping v1 is the most effective way to decrease the usage counter of Shadow DOM v0, I think.
For reference, here is the summary of the relevant use counters:
- The followings will be deprecated after shipping v1:
- The followings are already deprecated, but not removed from Blink yet:
OWP launch tracking bug
Entry on the feature dashboard