Redux
Store, reducers and selectors, Redux Toolkit, RTK Query and handling side effects.
Why an application needs a centralised store, the three Redux principles, the one-way data flow, the role of actions and pure reducers, and why state is never mutated in place but replaced with a new copy.
Wiring the store up with Provider, reading state with useSelector and dispatching actions with useDispatch, and when React's built-in Context API is enough instead of Redux.
Reading and deriving data from the store, memoising it with reselect and createSelector, and preventing unnecessary component re-renders.
How middleware intercepts actions on their way to the reducer, and how Thunk and Saga handle side effects and network requests.
The modern way to write Redux: configureStore, createSlice, createAsyncThunk and Immer instead of boilerplate.
Fetching server data, caching it, invalidating by tags, and using the automatically generated query hooks.