Redux Toolkit is the standard way to write Redux. The official Tutorials Overview tells you which tutorial to read for which goal: Quick Start to wire an app, Essentials to build something real, Fundamentals to understand why the patterns exist.
In simpler words
Do not learn RTK by memorizing every API. Follow the Redux team’s order: get a counter working, then build a feature, then peek under the hood.
This course lesson mirrors https://redux-toolkit.js.org/tutorials/overview and the Quick Start steps, then maps them onto this monorepo (Next + TypeScript + Nest).
The RTK Tutorials Overview page says the deep tutorials live on redux.js.org, and RTK docs point there instead of duplicating everything.
Quick Start — fastest way to add RTK + React-Redux and use the main APIs. Start here if you just need it running.
TypeScript Quick Start — same wiring with RootState / AppDispatch patterns.
Next.js tutorial — how Provider fits an App Router app (client boundary).
Redux Essentials — “how do I use this to build something useful?” Real-world style app. Best if you are new to Redux.
Redux Fundamentals — bottom-up: write Redux by hand, then see why RTK wraps it. Best when you want the “why”.
Usage Guide + API Reference — look up each API when you need details. Usage with TypeScript for TS patterns. RTK Query Quick Start when you need Redux-powered fetching.
Pick your path
Need it working tonight → Quick Start (this lesson §1–§4)
New to Redux → Essentials on redux.js.org
Want the “why” → Fundamentals on redux.js.org
Using Next + TS (here) → §5 below + our AppProviders
Need server cache in RTK → RTK Query Quick Start (later topic)
Migrating old Redux → “Modern Redux with RTK” in Fundamentals
Click → dispatch → reducer → new state → re-render.
Typed hooks (TypeScript Quick Start)
import { useDispatch, useSelector, type TypedUseSelectorHook } from "react-redux";
import type { RootState, AppDispatch } from "./store";
export const useAppDispatch: () => AppDispatch = useDispatch;
export const useAppSelector: TypedUseSelectorHook<RootState> = useSelector;
// then: useAppSelector(s => s.counter.value)
Export the same typed hooks from your feature store module.
5. Next.js + this monorepo
Tutorials Overview links a Next.js-specific RTK setup. In the App Router, Provider must live in a Client Component.
Here: apps/web/src/components/providers/app-providers.tsx currently wraps QueryClientProvider. Add a Redux Provider the same way when a feature needs a client draft store (Week 4 Notes projects).
Do not put the store in a Server Component. Do not create a new store on every render without care — use useState(() => makeStore()).
AppProviders sketch (when you add RTK)
"use client";
import { Provider as ReduxProvider } from "react-redux";
import { makeStore } from "@/features/notes/notesDraftStore";
export function AppProviders({ children }) {
const [store] = useState(() => makeStore());
return <ReduxProvider store={store}>{children}</ReduxProvider>;
}
Matches the Next guidance: client Provider around the tree.
6. After Quick Start — Essentials, Fundamentals, Usage Guide
Essentials (redux.js.org): build a realistic feature flow with RTK as the default. The next topic (client drafts) plus Week 4 Notes projects are the course’s Essentials-style practice.
Fundamentals (redux.js.org): hand-written actions/reducers first, then see how createSlice / configureStore replace the boilerplate. Read this when “why Immer / why one store?” still feels fuzzy.
Usage Guide: per-API patterns. API Reference: exact signatures. Writing Reducers with Immer: deep dive on draft state.
RTK Query Quick Start: when you need fetching inside Redux — covered in the RTK Query vs TanStack topic (this repo prefers TanStack for Nest).
Course mapping
Official Quick Start → this topic §§1–4
Official Essentials → rtk-client-drafts + Week 4 Notes projects
Official Fundamentals → optional homework on redux.js.org
Official RTK Query QS → rtk-vs-query topic
Official Usage Guide → when you need createAsyncThunk / entityAdapter details
Stay on the official rails; this lesson is the on-ramp.