@supernathaniel/runtime-react
v0.1.0
Published
React 16.14/18 Profiler instrumentation for @fp runtimes
Readme
@supernathaniel/runtime-react
React 渲染采集与离线分析:把每次 commit 耗时变成事件,把事件变成可读的渲染诊断。
提供什么
PerformanceProfiler:用React.Profiler包裹根节点,每次 commit 发出react:commit事件(actualDuration / baseDuration 等)。生产构建的 React 不触发 Profiler 回调,透明传递。useRenderProbe:组件级渲染探针(只在 passive effect 发事件,props 引用比较过滤挂载/重放噪声)。analyzeRenderEvents(events):离线分析react:commit事件流,产出RenderAnalysis——CommitGroup/ComponentStat/RenderFinding(FindingLevel 分级),viewer 与 playground 共用。- 辅助:
probeDevtoolsHook()(React DevTools hook 能力探测)、diffProps()、toCommitEvent()(commit → 事件的纯函数映射,可无渲染器测试)。
兼容性
- React 16.14 与 React 18 双一等公民:类型按
@types/react@16(最小公分母),只用两版共有的公共 API; react永远是 peer 依赖(宿主单例);Fiber 私有 API 只允许出现在明确标记的适配层,不进公共契约;- commit 事件同步发出(在 commit 阶段):trace 保真优先。监听方若在 commit 阶段直接 setState 会造成无限循环——消费方需轮询缓冲或节流(范式见 playground
App.tsx),并 memoize profiler 子树避免被动重渲染自产事件。
谁依赖它
umi-plugin(rootContainer 注入)、viewer / playground(渲染分析)。
