React is one of several implementations following this logic:

  • when a large and sufficiently complex UI is rendered client-side, it gets hard and fragile to coordinate the needed details using something like jQuery
  • it’s both simpler and more readable to express the UI as a function from app state to DOM
  • but just rebuilding the whole DOM every render cycle is too slow
  • so let’s rebuild a virtual dom, diff, and then update only the bits that actually changed on the actual DOM.

It’s not terribly new at this point, and it’s thin enough that you could write a working but less performant version yourself in not much time.

It gets overused for things that don’t fit the assumptions of that logic - people love their golden hammers - but that’s humans. ??‍♀

/