> Application state as a single, immutable data structure.<p>react-cursor gives this pattern in javascript, immutability and all, but with regular old javascript objects. It also comes with all the same caveats as in this article. (I don't speak for the creator of Om, I speak for myself as the author of this library which was inspired by Om and Clojure)<p><a href="https://github.com/dustingetz/react-cursor/" rel="nofollow">https://github.com/dustingetz/react-cursor/</a><p>The beautiy of the state-at-root pattern with cursors, is that each little component, each subtree of the view, can stand alone as its own little stateful app, and they naturally nest/compose recursively into larger apps. This fiddle is meant to demonstrate this: <a href="https://jsfiddle.net/dustingetz/n9kfc17x/" rel="nofollow">https://jsfiddle.net/dustingetz/n9kfc17x/</a><p>> The tree is really a graph.<p>Solving this impedance mismatch is the main UI research problem of 2015/2016. Om Next, GraphQL, Falcor etc. It's still a research problem, IMO. The solution will also solve the object/relational impedance mismatch, i think, which is a highly related problem, maybe the same problem.