Learn
Understand the production reason and the tradeoff behind the pattern.
2–4 minFocused lessons for the stacks developers use every day — each with a production reason, a copy-ready example, and notes for the platforms you actually deploy on.
Stacks
7
Field notes
80
Depth
Beginner to advanced
Local state avoids unnecessary parent renders and keeps component intent obvious.
function FilterPanel() { const [open, setOpen] = useState(false); return ( <section> <button type="button" onClick={() => setOpen((value) => !value)}> Filters </button> {open ? <FilterOptions /> : null} </section> );}React field notes
Component design, state, memoization, and client islands. Each note includes production context, copy-ready examples, and platform-specific advice.
Local state avoids unnecessary parent renders and keeps component intent obvious.
Use memoization for costly derived values, not as decoration around every expression.
Move the smallest interactive piece into a client component and keep the shell server-rendered.
Use children and small slots instead of pushing many props through unrelated layers.
Avoid duplicate state when a value can be calculated from props or existing state.
Use real IDs for list keys so inputs, animations, and focus do not jump between rows.
Every async component should say what is happening before, during, and after failure.
If a value can be calculated during render, do not put it in useEffect and setState.
Store timers, DOM nodes, and previous values in refs when changing them should not rerender.
Split context by responsibility so one tiny update does not rerender the whole app shell.
Use controlled inputs when live validation matters, and native form data when submit-time values are enough.
Assert what users can see and do instead of testing component state names or private helpers.
A repeatable workflow
Every field note follows the same short path, so you can understand it, use it, and verify the result without reading a long tutorial.
Understand the production reason and the tradeoff behind the pattern.
2–4 minCopy the focused example, adapt the values, and use it in your stack.
Copy-readyCheck the real result, keep what works, and move to the next bottleneck.
Measure it