What if the internal state of the web component has changed?
Wouldn't an HTMX update stomp over it and reset the component to its initial state?
Not when using morphdom or the new moveBefore method. Although you would have to give your element a stable id.
Even when using shadow DOM?
What about internal JS state that isn't reflected in the DOM?
If it is new to the DOM it will get added. If it is present in the DOM (based on id and other attributes when the id is not present) it will not get recreated. It may be left alone or it may have its attributes merged. There are a ton of edge cases though, which is why there is no native DOM diffing yet.