Redux(リーダックス)は、アプリケーションの状態管理のためのオープンソースのJavaScriptライブラリである。ユーザーインターフェイスを構築するために、ReactやAngularなどのライブラリで最もよく使用される。FacebookのFluxアーキテクチャの影響を受けて、Dan AbramovとAndrew Clarkによって作成された。
Reduxは、アプリケーションの状態を予測できるコンテナになるように設計された、シンプルで限定的なAPIを備えた小さなライブラリである。関数型プログラミングの概念であるreduce関数と同様に動作する。
関数型プログラミング言語Elmの影響を受けている[3]。
Reduxは、2015年にDan AbramovとAndrew Clarkによって作成された。Abramovは、React Europe[4]でのホットリロードに関するカンファレンストーク[5]の用意をしながら、最初のReduxの実装を開始した。Abramovは、「私はロジックが変更できるFluxのコンセプトを証明しようとした。そして、それは私にタイムトラベルをさせる。そして、それは私にコードの変更に対する未来のアクションを再適用することを可能にするだろう」と発言している[6]。
Abramovは、reduce関数とFluxパターンの類似性に感銘を受けた。「私はFluxを時間の経過に伴うreduce操作と考えていた... ストアは、これらの行動に反応して状態を蓄積する。これをさらに進めることを考えていた。Fluxストアがストアではなく、reduce関数だった場合はどうなるか?」[7]
Abramovは、Andrew Clark(Fluxの実装であるFlummoxの作者)に協力者として接触した。特に、彼はツールのReduxエコシステムを可能にし、ミドルウェアやストアエンハンサーなどの拡張ポイントを実装する一貫したAPIの作成を支援したことで、Clarkの功績を認めている[7]。
2019年2月、useReducerは16.8リリースでReactフックとして導入された。Reduxと一貫性のあるAPIを提供し、開発者がコンポーネントの状態にローカルなReduxのようなストアを作成できるようにする[8]。