A predictable, centralized state container built on a strict one-way data flow.
Redux's entire model is a strict, unidirectional flow: components dispatch plain object actions, a pure reducer function computes the next state from the current state and that action, and the single store holds the resulting state as the one source of truth for the app. That strictness — state is read-only and can only change via dispatched actions through pure reducers — is exactly what makes state changes traceable, testable, and replayable, which is Redux's core selling point over more ad hoc state management.
Redux Toolkit is now the standard way to write Redux, and it exists specifically to remove the boilerplate the original API required — hand-written action types, action creators, combineReducers, and manual immutable update logic. createSlice generates most of that automatically, and uses Immer internally, which is why reducer code inside a slice can look like it's directly mutating state (state.value += 1) while Immer safely translates that into a real immutable update behind the scenes.
What you'll walk away knowing