LabscoMCP early access ↗
vola-treblaMCP SERVER

React Render Profiler

Turn a React DevTools Profiler export into a ranked list of wasted renders and cascade traces — and, for a component that clears the ROI bar, have the file rewritten.

by vola-trebla ↗Runtime Debugging & Crash AnalysisCommunity

LABSCO SUMMARY

`remediate_component` mutates the file on disk — its own description says so — which puts it in a different risk class from the tools that only read an export.

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.

What it is

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.

What you get

  • 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.

Requirements

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.

Setup effort

One command — npx -y react-render-profile-mcp