Toolchain Setup

Everything this track needs runs on a laptop with Node and a Chromium-based browser. There is no native build step — the experiments drive a real browser over the DevTools Protocol.


Required

ToolWhy
Node.js (LTS)the experiment harnesses in each module's src/
Chrome / Chromiumevery measurement; the experiments launch it over CDP
Playwright (installed per module)CDP driver used by the harnesses
mdBookbuilding this book locally
cd fe-01-execution-model-scheduling/src
npm install
npm run all        # regenerates every table in that module's measured-results.md

DevTools settings worth changing once

  • CPU throttling 4×/6×. Unthrottled desktop numbers are not evidence about your users, and every measurement in this book is taken throttled unless stated otherwise.
  • Rendering panel: paint flashing, layer borders, scroll-performance issues, frame rendering stats.
  • Performance panel: enable Screenshots and Memory.
  • Network throttling for anything touching loading.

Measurement discipline

Three rules the modules assume:

  1. Predict in writing before you measure. A prediction made after observation is worth nothing.
  2. Report medians of repeated runs, not a single run — and say how many.
  3. State what the number does not prove. Every measured table in this book carries that line, because a measurement without its limits is an advertisement.

Building the book

bash build.sh                            # writes ./book and ./dist/book
mdbook serve                             # live reload on :3000
python3 ../tools/gen-summary.py frontend # regenerate SUMMARY.md

The sibling project

../browser-framework-internals/ needs a much larger toolchain — a Chromium checkout, depot_tools, GN, and a working native build for its later phases. Its TOOLS.md documents the disk budget and the toolchain floor. Nothing in this project requires any of it.