In this talk, I’d like to reflect on the performance changes React went through in the past years – and hypothesize about where we’re going. Key points:
React reached maturity and can now push frontend forward without reinventing the same primitives (like how all frameworks were stuck reinventing vdom for the past 10 years)
Performance (past): consistent performance push you didn’t even notice (componentDidMount → useEffect and how that avoids layout thrashing; React 18 update batching). Some stuff didn’t really work out (Prepack)
Performance (current): features that are available, but we need to change our habits to adopt them: startTransition (needs a habit to separate interactions into urgent and non-urgent), RSC + Server Actions (needs new patterns and approaches to data loading etc)
Performance (future): React Offscreen API, React Forget
Performance (further future, subjective opinion) – where React and other frameworks are moving: intelligent progressive enhancement, with zero JS on the client unless necessary
What didn’t work out:
Why we can’t put frameworks into workers (answer: latency, data copying, etc.)
Why react didn’t go the svelte route (inlining js instead of a single bundle)
Why react didn’t go the aggressive-code-splitting-and-chunks-on-demand route