React
Components that render twice, and effects that run when you did not mean them to.
Reading is a separate door: a whole small codebase, graded on what you can say about it.
fundamentals
State and Events
State that batches, and the handler that closed over the value from two renders ago.
Lifecycle and Effects
Effects that fetch, effects that subscribe, and the cleanup that has to run or the subscription leaks.
Advanced Hooks
Context that re-renders every consumer, and the memo that does not earn its keep.
Routing and Navigation
Routes, params, and the nested outlet that is the page, not a wrapper around it.
Performance and Patterns
Split the bundle, memoize only what is slow, and the compound component that is an API rather than a nest of props.
beyond the blanks
Challenges
No blanks. The suite is the spec.
Code Review
Code that already looks finished, and is wrong. Find the defect before you submit — the tests it came with all pass.
Build the Tool
Stop doing the check by hand. These exercises are about writing the thing that does it for you, forever — the highest-leverage move available and the one nobody teaches, because it looks hard to grade. It is not: a tool either processes its cases or it does not.
Pin It Down
A vague request produces coherent code that solves a slightly different problem. These exercises give you the prose and ask for the cases that make it unambiguous — graded by whether they reject the implementations that are subtly wrong.
Give It What It Needs
A model with the wrong context invents confidently. A model with too much gets worse and costs more. You are given a question it cannot answer alone and a menu of things you could show it, each with a price — being right is the floor, being right cheaply is the exercise.
Three Messages
Anyone can steer a model with unlimited turns. The skill shows up when you have three: what you say first, what you check, and when you stop steering and read the code yourself. The tests you are graded against stay hidden until you finish.