Skip to content
Salil Overflow
Go back

Why Redux Won the Flux Wars (and Then Got Declared Dead, Annually)

Originally published in June 2019. Rewritten in October 2026, with more sarcasm and fewer exclamation marks.

Flux

The 30-Second Reality Check

Flux was a pattern, so everyone shipped their own library. Redux won by being small and boring. Then React added Context, Apollo showed up, and people kept holding Redux funerals. Redux went to all of them.

Explain With Pictures

flowchart LR
  subgraph Flux["Flux (2014): pick your flavour"]
    direction TB
    FA["Action"] --> FD["Dispatcher"]
    FD --> FS1["Store A"]
    FD --> FS2["Store B"]
    FS1 --> FV["View"]
    FS2 --> FV
    FV --> FA
  end

  subgraph Redux["Redux (2015): one of everything"]
    direction TB
    RA["Action"] --> RR["Reducer<br/>(pure function)"]
    RR --> RS["Single store"]
    RS --> RV["View"]
    RV --> RA
  end

  Flux ==> Redux

Redux removed the dispatcher, merged the stores into one and made state changes pure functions. Less to argue about, so the arguing stopped.

Redux

3 Hot Takes & Quotes

1. Boring won the war. It always does.

Redux won the war around 2015-2016 due to its simplicity and leadership of Dan Abramov and there was peace. Long live the King!! (me, 2019)

Redux’s whole idea fits on a napkin: state is a value, actions describe changes, a pure function applies them. Dan Abramov’s free Egghead course taught it in bite-sized videos. Every competing Flux library had more features. That was the problem.

Peace

2. “Redux is dead” is a genre, not a fact.

Since Redux had gained so much dominance it was an easy target for people to say it was finished. (me, 2019)

Being declared dead is what happens to anything popular enough to be boring. Meanwhile, huge production apps quietly keep running on it, because rewriting your state layer to follow a Twitter thread is not a business plan.

Pitchforks

3. Most apps never needed it in the first place.

Redux is a bit overkill for simple data management and UI needs which is the requirement for most of the projects. (me, 2019)

What actually hurt was wiring a global store, actions, reducers and middleware into a to-do app because a tutorial said “this is how React is done”. Architecture should arrive when the pain does, not before.

The Post-Mortem / Verdict

Today’s pattern will be different tomorrow. (me, 2019)

Still the best line I wrote in that post. My jQuery components from the AJAX era were cutting edge too. Build something people care about; they won’t ask which state library you used. If you succeed, you can refactor later. If you don’t, the state library was never the problem.


Share this post:

Previous Post
Docker in Containerland™ Is Still Just a Box
Next Post
Google Spanner "Breaks" the CAP Theorem (Terms and Conditions Apply)