1. It&#x27;s not HTML, it&#x27;s JSX, a vaguely XML-ish DSL that is compiled to JS.  You can (and some people do) write the underlying JS code directly.  But, obviously, writing a DSL that compiles to &#x27;React.CreateElement.Div()&#x27; is the same (at least as far as seperation of concerns) as writing &#x27;React.CreateEleemnt.Div()&#x27; directly.<p>2) Best practices focused on separation of concerns, and in particular, on avoiding embedding logic into your static HTML.  The canonical example to avoid historically was to put JS directly into a links href attribute, but some have suggested Angular is guilty of something equivalent with its ng-* attributes.<p>3) Conversely, React advocates agree 100% on separation of concerns, but feel the &quot;nothing that looks like HTML can be in the same file as something that looks like JS&quot; injunction is actually an example of separation of <i>technologies</i>.