JSConf JP

React Fiber Unplugged: How the Internal Scheduler Shapes React

SessionTrack AEnglish

Underneath every React render is a scheduler making constant decisions: what to work on next, what to interrupt, what to discard, and what to prioritize. Those decisions — not your component code — are usually the reason an app feels fast or janky under load. Yet most developers still reason about React's performance using a mental model from before Fiber existed. This talk goes inside Fiber and its scheduler: how work is broken into units, how priority lanes decide what runs first, how time-slicing lets React yield to the browser mid-render, and why some pre-Fiber optimizations now work against you. We'll trace one real, janky component through the scheduler step by step — what triggers the re-render, how React decides whether to interrupt it, and exactly what changes when you introduce useTransition or useDeferredValue. Everything is source-verified against React's internals, drawn from my 9-part "How React Works" series. You'll leave with a working mental model of the scheduler that explains why certain performance fixes work and others don't — instead of a list of tips applied blindly.