#lightdom
I’m so into this. You could make reusable behaviors (like focusgroup), template directives (like Vue or HTMX), or handle what people are doing with “LightDOM web components” without custom elements. A predictable API with setup and tear down lifecycle methods would a net win for authoring.
We have Custom Elements, but do we also need Custom Attributes?

This was discussed at TPAC. Is it something you'd like on the platform?

https://github.com/WICG/webcomponents/issues/1029
December 1, 2025 at 3:13 PM
Babes, I've been naughty.
Forgetting to update my availability. Here today until 4 ish. Come in and I'll make it up to you 😘😘😘@cconfidential.bsky.social
#melbournebrothel #matureescort #australianescort #bustybrunette #gfe #frenchkiss #lovergirl #lightdom #erotica
September 14, 2026 at 2:29 AM
ppl believing/being sold the ShadowDOM as a default when the web is lightdom by default is the problem. SD is useful in very narrow use cases and a massive burden of tradeoffs if yagni.
March 13, 2026 at 6:27 PM
Not necessarily, easiest to avoid using lightdom rendered before they hit the client. Probably also avoidable w DSD.
February 1, 2026 at 9:24 PM
I opt for the latter and keep to the lightdom for progressive enhancement and so forms continue to work as expected even without clientside enhancement). Feels like the best set of tradeoffs to me until we can extend buildins declaratively. Hopefully that happens someday.
March 16, 2025 at 4:18 PM
If you want to access lightDOM, you have to wait till that lightDOM exists:

dev.to/dannyengelma...
Web Component developers do not connect with the connectedCallback (yet)
Disclaimer: This blog post suggests using setTimeout This post was originally written as...
dev.to
December 26, 2024 at 9:59 AM
I am really disappointed in Patternfly web components right now. Their slotController component's documentation is a bag of LIES. "hasSlotted() returns true if any of the names provided exist in the lightDOM" is a LIE. It returns that it exists in the lightDOM AND has a corresponding shadow slot.
August 23, 2025 at 3:33 PM
Cant argue against that. No need to stream, defaulting to lightdom, and supporting slots everywhere there is exactly what we did w enhance. No client js required from any backed even.
February 2, 2026 at 5:19 AM
real forms is such a huge one. nesting a form in a lightdom custom element is fiiiiine but would be nice to have something more first class.
May 21, 2025 at 4:38 PM
lightdom! if this is what i think it is…they took a similar approach to enhance.dev which does open up SSR (even across different backend runtimes other than node.js if you are comfortable getting wasm involved)
May 21, 2025 at 5:14 PM
Ah they did it pretty smartly and really broke it down into small primitives that you still style with tailwind classes and slot lightdom children into. So technically headless. Looks good from the examples provided
July 25, 2025 at 11:51 PM
imo lightdom has been an excellent default and if I really need that untrusted isolation then it's cool to have sd available...just haven't had that use case yet personally
November 28, 2025 at 5:35 PM
The idea is that, like other composite components like select/option, or details/summary, you shouldn't have to provide slot attributes when the meaning of the lightDOM content is conformant and contextually clear.
November 1, 2025 at 4:50 AM
The connectedCallback fires on the *opening* tag.
When you define your Web Component *before* DOM is parsed, there won't be any lightDOM!

Calling the script at the bottom is the same as IMPORT or putting "defer" on it; it will execute *after* DOM is parsed. Thus you get more FOUC and layout shifts
December 27, 2024 at 9:51 AM
You probably need to follow the APG's "combobox autocomplete list" pattern to complete the ARIA story. But to achieve that you'd need to wire up `aria-activedecendent` which requires Cross-Root. The quick fix would be to inject the `
Editable Combobox With Both List and Inline Autocomplete Example
Accessibility resources free online from the international standards organization: W3C Web Accessibility Initiative (WAI).
www.w3.org
November 11, 2025 at 4:11 PM
Nice, super needed tool for making shadow dom useful.

Still leaning towards being a lightdom person but glad to see.
June 23, 2026 at 11:43 PM
Another lever of control you have with WCs is using more LightDOM and progressively enhancing server sent HTML.

Instead of sending…

`<my-button label=foo></my-button>`

You do…

`<my-button>
<button>foo</button>
</my-button>`

and the element’s job is more about styling and behavior. 3/…
February 12, 2026 at 7:04 PM
What is a combobox if not a popover, a text input to filter checkboxes/radios? Move the input, add in some arrow navigation and a programmatic click() and you got yourself a A+ LightDOM web component.

The progressive enhancement is that it’s just a popover with some radios/checkboxes.
February 13, 2026 at 12:38 PM
const children = [...node.childNodes];
children.forEach((child) => {
fragment.appendChild(child);
});

or

fragment.append(...node.childNodes)

Note your code only works when the Web Component is defined *after* lightDOM was parsed
Defined in the <head> to prevent FOUCs, node.childNodes is empty
January 9, 2026 at 9:13 AM
That's excellent stuff. I've often thought about being aggressive about slots, and about analyzing the lightDOM before creating slots, or forcibly slotting elements no matter what the client code says. Yours is a really helpful demo.
October 7, 2025 at 8:17 PM
I find "what styling slots inherit from the web component vs the lightDOM context" confusing, so I wrote a little CodePen showing different degrees of specificity and how they do or do not affect the inheritable styles. #webcomponents

codepen.io/elfsternberg...
Untitled
...
codepen.io
October 7, 2025 at 6:49 PM