Contact emails
[email protected]

Specification
https://html.spec.whatwg.org/#attr-template-shadowrootslotassignment


Summary
Adds the shadowrootslotassignment attribute to the <template> element, allowing 
declarative shadow roots to use manual slot assignment. Until now this option 
was only available imperatively, via attachShadow({slotAssignment: "manual"}), 
so components that rely on manual assignment could not create their shadow 
roots declaratively. The attribute accepts "named" (the default, preserving 
current behavior) and "manual", and is reflected by the 
shadowRootSlotAssignment property on HTMLTemplateElement.


Blink component
Blink>DOM>ShadowDOM


Web Feature ID
declarative-shadow-dom


Motivation
slotAssignment is fixed at shadow root creation, so components using manual 
slot assignment could not adopt declarative shadow DOM. The gap was raised in 
https://github.com/WICG/webcomponents/issues/967 and specified in the HTML 
Standard via https://github.com/whatwg/html/pull/12267 . Both Gecko and WebKit 
have implemented the attribute, so shipping in Chromium completes cross-engine 
support. This feature is opt-in and the default ("named") is unchanged.


Initial public proposal
No information provided


Search tags
shadow, DOM, slot


TAG review
No information provided


TAG review status
Not applicable


Goals for experimentation
None


Risks




Interoperability and Compatibility
Low risk. The new behavior is opt-in: it only applies when a page explicitly 
sets shadowrootslotassignment="manual", and the default ("named") matches 
current behavior, so existing content is unaffected. The attribute is specified 
in the HTML Standard (merged via https://github.com/whatwg/html/pull/12267, 
originally raised in https://github.com/WICG/webcomponents/issues/967) and both 
Gecko and WebKit have already implemented it, so shipping in Chromium completes 
cross-engine support. The change is guarded by the ShadowRootSlotAssignment 
feature flag: currently experimental, aiming to enable it by default from M151 
and then retained as a kill switch (expected to be removed around M153).

Gecko: Shipped/Shipping (https://bugzilla.mozilla.org/show_bug.cgi?id=2023824)

WebKit: Shipped/Shipping (https://bugs.webkit.org/show_bug.cgi?id=310090) 
https://github.com/WebKit/standards-positions/issues/631

Web developers: Positive (https://github.com/WICG/webcomponents/issues/967)

Other signals: 
https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/shadowRootSlotAssignment


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?
The new behavior is opt-in, the default behavior remains unchanged, and pages 
that do not use the attribute are unaffected.



Debuggability
No new DevTools work required. The attribute is visible in the Elements panel 
like the other shadowroot* attributes, and the resulting shadow root's mode is 
already exposed via ShadowRoot.slotAssignment.


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?
Yes
https://wpt.fyi/results/shadow-dom/declarative/declarative-shadow-dom-repeats-slot-assignment.html
 
https://wpt.fyi/results/shadow-dom/declarative/declarative-shadow-dom-slot-assignment.html
 
https://wpt.fyi/results/shadow-dom/declarative/declarative-shadow-dom-slot-assignment-serialization.html


Flag name on about://flags
No information provided


Finch feature name
ShadowRootSlotAssignment


Rollout plan
Will ship enabled for all users


Requires code in //chrome?
False


Tracking bug
https://issues.chromium.org/issues/493315747


Estimated milestones


Shipping on desktop 151

Shipping on Android 151

Shipping on WebView 151




Anticipated spec changes

Open questions about a feature may be a source of future web compat or interop 
issues. Please list open issues (eg links to known github issues in the project 
for the feature specification) whose resolution may introduce web 
compat/interop risk (eg, changing to naming or structure of the API in a 
non-backward-compatible way).
No information provided


Link to entry on the Chrome Platform Status
https://chromestatus.com/feature/5178682139344896?gate=6073478714359808


This intent message was generated by Chrome Platform Status.

-- 
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 [email protected].
To view this discussion visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/6a3e71b6.cff415cc.dde5e.00b1.GAE%40google.com.

Reply via email to