docs(gates): the compiler burn-down after E32 S3, and the two idioms that keep it

react-hooks/refs 245 -> 31 hits and 93 -> 29 skipped functions in the register and the eslint
comment. The canonical-patterns table gets the latest-value row (useEffectEvent; a handler or timer:
useLatest / useStableCallback, never a render-phase ref write) and the popover / scroll-fade row
(destructure the ref setter).
This commit is contained in:
2026-10-03 23:18:33 +02:00
parent 76358a0d77
commit a486c7521a
3 changed files with 40 additions and 36 deletions
+6 -3
View File
@@ -575,9 +575,12 @@ export default tseslint.config(
// and the other ~64 real render-phase `someRef.current = x` writes. The E32 audit showed the
// triage was wrong: the rule and the React Compiler share one analysis, so every one of those
// "false positives" is a component the compiler SKIPS — 21 popover components among them, and
// Channels' 0.9 s row menu was the bill. It stays off only because 245 hits (measured E32 S1) cannot be fixed in
// one sprint; until they are, compilerCoverage.contract.test.ts pins every skipped function
// (none may be added), and E32 S3+ burns them down to turn this back on.
// Channels' 0.9 s row menu was the bill. It stays off only because 245 hits (measured E32 S1)
// could not be fixed in one sprint. E32 S3 took them to 31: the popover engine is read through
// destructuring (`const { setReference } = pop.refs`), every render-phase write moved to
// `useEffectEvent` / `useLatest`. The rest sit in PlexPlayer and PlayerModal, behind the
// try/finally and suppression skips; until they are gone, compilerCoverage.contract.test.ts pins
// every skipped function (none may be added), and this comes back on.
"react-hooks/refs": "off",
"local/jsx-comment-text": "error",
"local/focus-safe-disabled": "error",