Its gate is the `roi_score`, and that arrives as an argument rather than being derived from the profile, so whoever calls the tool decides what clears 1.5. The analysis tools have an order baked into them: `get_render_summary` reports total commits, and `trace_render_cascade` needs a 0-based `commit_index` inside that range, so calling the summary first is a precondition rather than a suggestion. Reach extends past render counting — `profile_rsc_stream` reads a Flight stream log instead of a profile export, and `correlate_chrome_trace` needs a Chrome trace alongside the profile before it can say anything about INP or CLS.
An analysis server over React DevTools Profiler exports: it reads a `profile_path` and reports commit cost, spurious renders, cascade shape and memoization candidates, with `remediate_component` editing component source on disk.
- An orientation pass from `get_render_summary`: total commits, total render time, the top 5 slowest components by self time, and the total spurious render count.
- `find_spurious_renders` names components that re-rendered with no meaningful prop, state, context or hook change, returning render count, spurious count and wasted milliseconds above a `min_render_count` floor.
- `get_hottest_components` ranks by self CPU time excluding children, with total self ms, average per render and share of total profile time, sized by `top_n`.
- Cascade work on a single commit: `trace_render_cascade` takes a 0-based `commit_index` and lists what triggered the commit and everything that re-rendered as a result, sorted by actual duration; `trace_state_cascade_footprint` measures that cascade's depth and consumer count through the virtual owner tree.
- Memoization advice with the threshold in your hands: `suggest_memoization` takes `min_wasted_ms`, and `analyze_compiler_efficacy` computes an Invalidation Index per component under `invalid_threshold`.
- Diagnosis for slowness that is not plain re-rendering: `diagnose_hydration_and_suspense` finds server-client hydration mismatches and sequential nested Suspense waterfalls against `waterfall_threshold_ms`, and `evaluate_external_store_performance` finds useSyncExternalStore selector instability and store updates that block past `max_blocking_task_ms`.
- Source-level action: `remediate_component` hoists static declarations, wraps unstable callbacks and objects in useCallback/useMemo and applies React.memo when the ROI score is above 1.5, while `audit_compiler_rules` checks a file against compiler memoization safety guidelines such as Date.now(), Math.random() and useRef mutations in render.
- Inputs beyond the profile export: `profile_rsc_stream` reads an RSC Flight stream log for chunks over 50KB, waterfall bottlenecks and constructor-traversal hazards, and `correlate_chrome_trace` aligns commits with a Chrome performance trace to attribute INP and CLS.
No credentials are configured. What the tools need is already on disk: a React DevTools Profiler export at `profile_path`, the component source at `file_path` for `remediate_component` and `audit_compiler_rules`, a Chrome performance trace at `trace_path` for `correlate_chrome_trace`, and the Flight stream text handed to `profile_rsc_stream` as `stream_payload`.
One command — npx -y react-render-profile-mcp
