Rendering and reconciliation
Know why a component renders, how React compares trees and why stable keys preserve the right state. Separate render work from browser painting and avoid describing every render as a DOM update.
- ✓Render triggers
- ✓Element identity and keys
- ✓State preservation and reset
- ✓Pure rendering
State ownership and data flow
Keep state near the components that own it and lift it only when coordination requires it. Treat remote data, form state, URL state and application state as different problems.
- ✓Single source of truth
- ✓Derived versus stored state
- ✓Context boundaries
- ✓Server-state caching
Effects and external systems
Effects are for synchronising with systems outside React, such as subscriptions or browser APIs. Explain cleanup, dependency correctness and race prevention without suppressing warnings by default.
- ✓When an effect is unnecessary
- ✓Cleanup and subscriptions
- ✓Stale closures
- ✓Network cancellation
Performance with evidence
Use the profiler and user measurements to locate expensive work. Memoisation has a maintenance cost, so apply it where stable inputs and avoided work produce a meaningful benefit.
- ✓Profiler-led diagnosis
- ✓Memoisation trade-offs
- ✓List virtualisation
- ✓Code splitting and streaming
Component and application architecture
Prefer explicit contracts, composition and accessible primitives. For larger systems, explain feature boundaries, data access, error handling, testing and how teams can evolve the code safely.
- ✓Composition over excessive configuration
- ✓Accessible interaction patterns
- ✓Error and loading boundaries
- ✓Testing behaviour over implementation