#lightdom
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
By watching the lightDOM tree in the observer and doing the slot assignments in an animation frame *after* the render, you get the best of both worlds in a single pass and halve the layout thrashing.
July 29, 2026 at 3:16 AM
Searching on Google for manual slot tricks is scant, not even a second page. After a deep search, I have found exactly one similar implementation: github.com/sl-design-sy... But I suspect that with a WeakMap & MutationObserver to watch your lightDOM, you could build structural templates dynamically.
github.com
July 29, 2026 at 3:16 AM
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
I have taken the approach that web components and the shadow DOM are for application-specific logic and for deciding where and when parts of the template should be shown, but the content within the template should be slotted and in the lightDOM. It takes a bit of discipline to split the CSS, but...
May 14, 2026 at 7:21 PM
Most devs use import or whack on type="module" or defer on their scripts. Which makes the customElement.define execute after all DOM is parsed, thus the connectedCallback (firing on the opening tag of <my-tag>) actually has content in lightDOM.
...most don't know what is happening, let alone discuss
March 29, 2026 at 1:24 PM
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
LightDOM elements are still children of the component, just in a different tree. Their events still bubble past the component's position on the tree, so can be intercepted and managed without variation.

This is definitely "cutting the baby in half": Layout and behavior inside, visuals outside.
February 27, 2026 at 11:35 PM
This is either smart or a disaster; a LitElement directive that allows a web component to define in-line HTML elements in its template that are magically portaled out to the component's lightDOM and a `` for it injected where the element was defined:

github.com/goauthentik/...
github.com
February 27, 2026 at 11:35 PM
> that's why i loaded it as a module script

No issue here becuase the <pre> is part of your UI

In cases where lightDOM is replaced with something else

Scripts loaded with defer/module will cause a FOUC
February 14, 2026 at 2:53 PM
But the connectedCallback fires on the opening tag, so when this Web Component is defined *before* DOM is parsed e.g. in the head and not (late) jQuey or Framework/Module/defer style *after* all DOM is parsed; then any lightDOM is NOT available, and querySelector("pre") returns null
February 14, 2026 at 2:02 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
For most, the LightDOM way should be enough, right? Like, we can still compose HTML on a server and call it a button.

I’ve gone as far as to put an inert <swap-to-spinner> wc inside a <button>. Mainly because making a <custom-button> seems… well, non-trivial.
February 12, 2026 at 9:22 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
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
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
Or in lightDOM, and NOT :not(:defined) Nuking other elements

<a-element>
<style>
a-element:not(:defined) {
background:lightcoral;
animation:--f 1s;
}
@keyframes --f{
from{opacity:0}
to{opacity:1}
}
</style>
HELLO!
</a-element>
February 1, 2026 at 9:01 AM
- Autoslotting: detecting the "shape" of the lightDOM content and giving elements slot names to match, so developers don't have to know the slot names to use.

If they don't have to know the names, why use names at all?
Why not use manual slotassigment?
January 27, 2026 at 8:00 PM
- Generative slotting: when your component renders its own lightDOM content so that it's exposed to the parent context, useful for `<input>` where you want to decorate with meaning.
January 27, 2026 at 7:35 PM
- Autoslotting: detecting the "shape" of the lightDOM content and giving elements slot names to match, so developers don't have to know the slot names to use.
- Autoslotting collections: special case where the shape is a list or tree, and you create the slot names on the fly as needed for all of it.
January 27, 2026 at 7:35 PM
The connectedCallback fires on the *opening* tag; that is why everyone whacks defer or import on their scripts; to execute *after* all DOM is parsed

If the Web Component is defined *before* DOM is parsed (renderblocking in the head) lightDOM is empty; you have to wait for it

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
January 9, 2026 at 7:39 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
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