&gt; it works with W3C standards instead of going off on a tangent and hacking the DOM entirely<p>While this sounds good on the surface (standards!) I think it is missing part the bigger picture. React, and more generally, the whole ecosystem of related libraries&#x2F;frameworks it has spawned, is most importantly defined by a move to describing components using pure functions. The virtual DOM diffing is, in my view, just an implementation detail; a means towards achieving the end goal of a simpler program design via pure functions.<p>On a different but closely related note: Angular and Polymer both use template systems which have to reinvent control structures (looping, filtering, conditionals, ...) embedded into HTML via tag attributes (eg, `&lt;li repeat=&quot;{{todoItems}}&quot;&gt;`). Contrast this with React (and especially ClojureScript&#x27;s Om or Reagent), where any such logic is implemented directly using the languages normal mechanisms for it (map&#x2F;filter, loops and if statements, etc.). Using HTML template languages is realy just raising up HTML and treating it as some special class of data, whereas React-style libraries recognize that it&#x27;s all just trees (AKA lists of lists), and programming languages are already very good at building them up and manipulating them. Programming languages are designed for manipulating data; HTML isn&#x27;t.