It does indeed go against years of advice, but only if you look at it from too far out:<p>(Note: I&#x27;ve minimal Angular experience so I won&#x27;t comment on that.  I&#x27;ve spent the last year on React)<p>The real problem is mixing business logic and presentation, not mixing HTML and JS.  React is purely presentation &amp; presentational logic (or should be, you can of course implement it poorly)<p>For Presentation, the HTML and JS are always coupled, whether you have them in separate files or not.  So in that sense, all React is doing is admitting a truth.<p>While embracing the coupling of that mix, React is ALSO pulling out a lot of logic: React encourages one source of truth (the state is in one spot, and drives the markup, but you never consult the markup to determine the state).  An error that is commonly seen in, for example, jQuery apps, is that some state is hanging around in application variables, while other times it&#x27;s in the current markup state, and the app will consult the markup to see what&#x27;s happening.  That&#x27;s not a built in jQuery problem, it&#x27;s just a common problem of implementation.<p>I&#x27;m not sold entirely on the React boat, but it does seem to directly address problems that I&#x27;ve encountered in other systems, and I expect whatever comes next will build from React principles rather than reject them.