I'm a huge fan of ReactJS, however it isn't a perfect or optimal implementation of it's concepts. Having a purely functional frontend, with immutability is key. ReactJS is leaky in it's mix of imperative and declarative code. FluxJS also suffers from this same issue.
ReactJS is the gateway drug to frontend nirvana. For more info:
I can't speak to the others, but Immutable is not in any way sufficient to replace native immutable data structures. The fact that you don't get native notation for initialization or destructuring is a huge deal in practice. Nobody wants to write 'foo.get("a").get("b").get("c")' where "foo.a.b.c" would do. (Likewise for assignment/creation.)
ReactJS is the gateway drug to frontend nirvana. For more info:
http://computationallyendowed.com/blog/2014/07/20/reactive-m... (MVC in a Reactive World) http://elm-lang.org (ELM Language) https://github.com/swannodette/om (Om/Clojurescript)
These will be _the_ technologies and approaches in 2015. ReactJS/FluxJS are great, but imperfect implementations!