This is genius. It's what I've been pining after for years. A conceptually simple evented architecture that can be used across an entire application. What the React Flux guys have given us here isn't just code. It's a conceptual framework that makes complex interactions easier to grasp and understand.
This is NOT NEW. This has never been invented by the React team and exists for years in different terminologies. - Google use MillWheel/Stream processing - Twitter use Storm/Lambda architecture - LinkedIn/Confluent use Kafka/Samza/Stream processing - C# (and sometimes Java) community use terms like CQRS / EventSourcing. These terms are also used on famous Martin Fowler blog posts - SOA design in big companies often rely on Enterprise Service Bus - Scala has "persistent actor systems" - databases are using for years "oplogs" to handle replication, materialized views and hot index creations - finance industry uses Complex Event Processing tools like Esper on historical market data - some file systems are working this way - some databases on the market are already designed to store immutable facts (Datomic, EventStore, Kafka...) However, it is definitively a good way to build scalable and maintenable complex systems.
In a way, Flux is the inappropriate, unnecessary use of CQRS in extremely simple client apps that don't require it and are easier to understand and maintain without it. "Full stack flux" is moving those ideas back where they were originally, under a new name.
Daniel Earwicker I agree, I'm just mocking the cycle: CQRS inspires Flux and now Flux inspires "Full-stack Flux/CQRS" Personally I like CQRS even in a simple client app, it helps decoupling and organization.
issam zoli Looking at the Flux example apps, it is just obscuring the truth with a lot of ceremony. Both examples would be clearer without action dispatching. Some more stuff about that here: medium.com/@Rickenhacker/if-facebook-s-flux-is-the-answer-what-was-the-question-24b26a1b0177
Daniel Earwicker I tend to disagree, I built many jQuery apps (in the dark ages), many angular apps (renaissance) and now with React/Flux, and I think my code is much cleaner now. Yes my skills got better but Flux really helped. I noticed the same thing when I switched to command bus architecture on the backend too. I tend to think CQRS should drive every app in the world, if you care about clean code and decoupled things, it's the best way I know.
Similar concepts explored in Nathan Marz' big data book manning.com/marz - having the fundamental facts (events) and then recomputing derived data for all views.