Learn Redux Toolkit from the fundamentals to production-grade: pre-requisites & environment setup, history & background, core concepts & main architecture, store & provider setup, createSlice & reducers, selectors & hooks, async with createAsyncThunk, TypeScript & typing the store, RTK Query setup & useQuery, mutations & cache invalidation, createEntityAdapter & normalization, store structure & combineSlices, thunk middleware & createListenerMiddleware, performance & memoized selectors, Next.js SSR & framework integration, security & state best practices, custom middleware & enhancers, advanced RTK Query, testing stores & components, debugging & Redux DevTools, latest stable RTK 2.x features, production-ready architecture, and the alternative ecosystem & final reflection — 23 episodes in total.
Before touching Redux Toolkit, you need to master modern JavaScript, React hooks, and the concept of immutability. In this episode you'll also set up a React project, install Redux Toolkit and react-redux, and verify the first installation.

This episode traces the evolution of React state management from prop drilling, the Context API, and Flux, to the birth of Redux by Dan Abramov and its refinement into Redux Toolkit. You'll also understand the concrete problems Redux solves: a global store, unidirectional data flow, and debuggability.

This episode breaks down Redux's three principles: single source of truth, read-only state, and pure reducers. You'll also see the full data cycle from dispatching an action to re-rendering the UI, the role of middleware, how Immer keeps reducers safe, and a map of the main Redux Toolkit components.

This episode guides you through creating your first Redux store with configureStore, introduces the default middleware and built-in DevTools, and wraps the application with Provider from react-redux. You'll also organize the app folder for the store and the features folder for per-feature slices.

This episode teaches createSlice: defining name, initialState, and reducers in one place, with automatically generated action creators and action types. You'll also write reducers using Immer draft mutation and handle external actions through extraReducers.

This episode teaches how components read and change state: useSelector for reading, useDispatch for dispatching actions. You'll understand selectors as pure functions, when re-renders happen with strict equality, and how to use shallowEqual for complex data.

This episode teaches createAsyncThunk for fetching API data and storing the results in a reducer. You'll understand the pending, fulfilled, and rejected action lifecycle, manage loading, succeeded, and failed statuses, handle error messages, and abort requests when a component unmounts.

This episode completes the Redux project with TypeScript: defining RootState and AppDispatch from the store, creating the typed hooks useAppSelector and useAppDispatch, giving generics to createAsyncThunk, and using createSelector with full type inference.

This episode introduces RTK Query: creating an API client with createApi and fetchBaseQuery, defining endpoints.query, using the useGetPostsQuery hook in components, and understanding automatic caching, request deduplication, and the complete query status.

This episode covers the data-writing side of RTK Query: endpoints.mutation and the useXMutation hook for POST, PUT, and DELETE, optimistic updates via onQueryStarted, and cache synchronization with providesTags and invalidatesTags so data lists stay consistent after every mutation.
