One other question: I notice in your modal dialog example you use slot . Is there ever a situation where it makes sense to use part instead of slot ? Without a shadow DOM both of those won't do anything functionally but can be used for style selectors. I feel that slot makes sense for a lot of cases where you want to treat the inner content as optional or something that an author wants to place as a child of your custom element, but part makes sense if you have a nested element that is a "required" child element that isn't really considered as content being placed in the component. I guess the downside is that styling would be confusing as you would do [part="something"] instead of ::part(something) like you would do with a real shadow DOM. I wonder if shadow DOM will be more widespread now that it can be declarative, albeit without shared templates yet.