I found this article talking about using web components as progressive enhancement: https://cloudfour.com/thinks/web-components-as-progressive-enhancement/
This is exactly how I'm trying to make Felte work with web components! It feels like the best way to share behaviour with vanilla JS while being friendly toward SSR sites. I do hope to eventually see an improvement on SSR support for custom elements using shadow DOM (declarative shadow DOM seems to be the way forward here?)