Workflows
Effects
Find repeatedly scheduled effects and the hook that owns them.
Measure one flow
Use the browser setup in Explain a render and hot effect.
npx @genie-react/cli call react_clear_renders '{}'
agent-browser --session docs-case-vite click 'button.counter'
agent-browser --session docs-case-vite get text 'button.counter'
npx @genie-react/cli call react_effect_timeline \
'{"component":"HotEffectProbe","limit":20}' --jsonExample event:
{
"componentName": "HotEffectProbe",
"effectIndex": 1,
"phase": "update",
"event": "scheduled",
"evidence": "exact",
"changedDependencySlots": [0],
"execution": { "status": "unobserved", "reason": "not-yet-observed" }
}Audit repeated schedules
agent-browser --session docs-case-vite click 'button.counter'
agent-browser --session docs-case-vite click 'button.counter'
agent-browser --session docs-case-vite click 'button.counter'
agent-browser --session docs-case-vite click 'button.counter'
npx @genie-react/cli call react_effect_audit \
'{"component":"HotEffectProbe","onlyHot":true,"minUpdates":5,"minScheduleRate":0.8}' --jsonThe audit reports the effect source, ownership, dependency mode, changed slots, schedules, update count, and hotness sample range.
Inspect one dependency package:
npx @genie-react/cli call react_effect_audit \
'{"packageName":"@tanstack/react-query","appOnly":false}' --jsonRead the limits
- Read
execution.statusto distinguish a schedule from observed execution. - Read cleanup execution evidence separately from the presence of a cleanup function.
- Attribute later requests or state writes only when the report explicitly observes that link.
- Collect more equivalent updates when the audit says
insufficient-data.
Finish with the hook callsite, changed dependency slot, schedule sample count, execution evidence, and ownership confidence. After editing, repeat the interaction and verify both the visible result and the new audit. A hot schedule is a lead; it does not by itself establish a bug.