Frontend · interactive
Memoisation: memo, useMemo, useCallback
Typing in a search box re-renders its parent, and by default every child too, including a chart that takes 45 ms to render. Typing “lamps” shows where the time goes.
function Page() {
const [q, setQ] = useState("");
return <>
<input value={q} onChange={e => setQ(e.target.value)} />
<Chart data={data} onSelect={(p) => open(p)} />
</>;
}- “l”47 ms
- “a”47 ms
- “m”47 ms
- “p”47 ms
- “s”47 ms
Green: input. Red: chart re-render. Over 16 ms per keystroke feels laggy.
235 ms of rendering for 5 keystrokes
Every keystroke re-renders the chart even though its data didn't change.
Optimisation
Step 1 of 4 · read left to right
In production
Tools and technologies
React apps memoise to skip expensive re-renders.
Not tied to one language — use these names when you search docs or design a system.