But I'm not sure about this GenSX thing. I looked at the docs briefly, but wasn't able to figure out what using JSX syntax adds over just using plain old function calls. Convenient named parameters? But you can already effectively get that in TS just by passing an object and treating its fields as parameters. There does seem to be some automatic stream handling, which might be handy.
(I suppose you could make the same criticism of React, but I think the answer is clearer there: You're gonna wind up with HTML, and JSX gives you convenient HTML syntax for making the parts.)