Simple & Elegant Flux

Singular application state

All application state is stored in one Immutable Map, similar to Om.

Stores declaratively register pure functions to handle state changes, massively simplifying testing and debugging state changes.

Powerful functional dataflow

Compose and transform your data together statelessly and efficiently using a functional lens concept called Getters.

This allows your views to receive exactly the data they need in a way that is fully decoupled from stores. Best of all, this pattern eliminates the confusing store.waitsFor method found in other Flux implementations.

Reactive

Any Getter can be observed by a view to be notified whenever its derived value changes.

NuclearJS includes tools to integrate with libraries such as React and VueJS out of the box.

Efficient

Thanks to immutable data, change detection can be efficiently performed at any level of granularity by a constant time reference equality (===) check.

Since Getters use pure functions, NuclearJS utilizes memoization to only recompute parts of the dataflow that might change.