Also not a fan of JSX. VUE’s component definitions are slightly better - at least it’s using actually HRML tags and <template>s. Personally, my favorite is Lit’s approach, writing HTML in tagged template literals. It’s still mixing your HTML with your JavaScript, but it feels much cleaner, closer to the vanilla experience of marking up content.