The failure it exists to catch
Under Cache Components, removing a cache directive deep in a utility silently shrinks the static shell. No build error. No bundle growth. Nothing surfaces it.Under the older
experimental_ppr model a dynamic API outside a Suspense boundary threw a build
error, so you found out immediately. Cache Components inverts the default: absence of caching is
what postpones, and it fails quietly.What it does
Analyze
Route table, first-load JS, server/client boundaries, and why each route is dynamic.
Diff
Per-route deltas naming the module responsible, not just the route that grew.
Shell engine
Predicted versus actual static shell, and the call site that broke it.
CI
Budgets on bundle size and shell ratio, with a PR comment that updates in place.
Why not the tools you already have
Route-level regression blame and shell composition, together, is the gap.