Redux is a state management library for JavaScript apps. When your app grows past a few components, state starts living everywhere — in props, in local variables, in three different places at once — and bugs become hard to find. Redux fixes that by putting all your app's state in one store, and changing it only through clearly defined actions. It is strict, and that strictness is the point.
The core idea has three parts: the store holds the state, actions describe what happened, and reducers decide how the state changes. Here is a tiny counter example:
// Action const increment = () => ({ type: 'counter/increment' }); // Reducer function counterReducer(state = { value: 0 }, action) { switch (action.type) { case 'counter/increment': return { value: state.value + 1 }; default: return state; } } // Store import { createStore } from 'redux'; const store = createStore(counterReducer); store.dispatch(increment()); console.log(store.getState()); // { value: 1 } Every change goes through the same path: dispatch an action, the reducer returns new state, the UI updates. Nothing changes state secretly, so when something goes wrong you can trace exactly which action caused it.
Redux is worth learning because it teaches you a discipline that outlasts the library itself. Even if you later use Zustand, Context, or a framework's built-in store, the Redux pattern — one source of truth, explicit changes, pure functions — is the mental model those tools are built on. And Redux Toolkit, the modern way to write Redux, removes most of the boilerplate people used to complain about.
How to start: in a React project, install @reduxjs/toolkit and react-redux, then build the counter example as a real app with a button that dispatches increment. Then build something real: a todo list where adding, toggling, and deleting todos are all actions. When you can follow a bug from a button click to the action to the reducer, you understand Redux.
Who is it for? React developers building apps with shared state — shopping carts, dashboards, multi-step forms, anything where three or more components need the same data. If your app is small, plain React state is enough — Redux pays off when state starts getting complicated.
The limits are honest: Redux adds boilerplate and concepts that small apps do not need, and learning it takes a weekend. Do not add it to a simple app just because it is popular — add it when you feel the pain of state living in too many places.
Your first step today: build the counter with Redux Toolkit and a button. Click it five times, watch the store update, and open Redux DevTools to see every action in a list. You have just made your app's state visible — and that visibility is the whole point.