If you use Typescript you can get most of the benefits of React from this little library: https://github.com/wisercoder/uibuilder

It doesn't support fine-grained screen update but you get support for Web Components (Polymer) which React doesn't support.

Facebook is being arrogant by not supporting the Web Components W3 standard.

For me the best asset of React is not having to manipulate the DOM directly with jQuery, which in my experience leads to code that injects DOM elements from everywhere making it very difficult to maintain.

This is certainly not a replacement.

You can divide your page into multiple components, then to update the screen replace the components that contain stale data. You do not have to deal with elements--you only have to deal with components.

Regardless of which library you use there is nothing preventing you from injecting DOM elements from everywhere. Only discipline can prevent that.

I guess I fail to see the value of this. If you don't want the component lifecycle, event system, or DOM diffing that React gives you, you might as well just write your own declarative wrapper around `document.createElement(...)` and be done with it. You can achieve this for templating alone in < 10 lines of code, and if you want to add some event delegating on top of it you can include that for another ~30.

Right - DOM diffing is the key selling point of React. But the fine-grained screen updates possible via DOM diffing is not super important for most applications.

Event system is already supported by DOM. React doesn't add anything there. Component lifecycle is also not compelling.

That's kind of what I'm saying. If you don't value those things, why introduce a library at all? What you're describing can be implemented in < 10 lines.

More like 200 lines, so it is useful to have a library. BTW it is rare to hear component lifecycle and event system described as key selling points of React. Most people would say DOM diffing and perf are the key selling points.

The point of React is to make it practical to structure view logic as a function (projection) of the application state. Virtual DOM is just an implementation detail.

By the way, for the most minimal diffing implementation see https://github.com/patrick-steele-idem/morphdom.