Intent to Ship: Declarative shadow DOM: shadowrootslotassignment attribute

23 views
Skip to first unread message

Chromestatus

unread,
8:34 AM (10 hours ago) 8:34 AM
to blin...@chromium.org, dba...@chromium.org, mas...@chromium.org, felip...@igalia.com
Contact emails
felip...@igalia.com

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=310090https://github.com/WebKit/standards-positions/issues/631

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

Other signalshttps://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 desktop151
Shipping on Android151
Shipping on WebView151


Anticipated spec changes

Open questions about a feature may be a source of future web compat or interop issues. Please list open issues (e.g. links to known github issues in the project for the feature specification) whose resolution may introduce web compat/interop risk (e.g., 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.
Reply all
Reply to author
Forward
0 new messages