recount
Enables users to ask about render performance in React and React Native apps via natural language, exposing tools for listing render hotspots and explaining component re-renders.
README
Recount
Your app re-renders too much, and nothing explains why in plain English. Recount does, for both React (web) and React Native, because it's built on the same fiber-level change-tracking data both platforms already share through React DevTools.
Instead of a flame graph or a console.log of raw prop diffs, Recount gives you a sentence:
ProductCardre-rendered 42 times this session (avg 2.1ms, 88.4ms total). ProponSelectchanged on every render. Scheduled byProductList.
Status
Early scaffold. @recount/core (the analysis engine) is implemented and
tested against a realistic fixture. The web and React Native connectors are
stubs — see SPIKE.md for exactly what's verified versus what
still needs a hands-on spike before they're real. Nothing here is faked or
guessed at: where something is uncertain, it's marked as uncertain rather
than papered over.
Packages
| Package | What it does |
|---|---|
@recount/core |
Platform-agnostic analysis engine. Takes normalized RenderCommit[] data, returns ranked, narrated Finding[]. No AI call — deterministic templates over real numbers. |
@recount/cli |
recount analyze <file> — run the engine against a JSON export or the bundled demo fixture and print findings to the terminal. |
@recount/mcp |
MCP server exposing list_render_hotspots and explain_component so Claude Code, Cursor, etc. can ask "why is this slow" directly. |
@recount/web |
Connector stub for browser React apps, built on react-devtools-inline. |
@recount/native |
Connector stub for React Native apps, built on react-devtools-core (the same package RN's own standalone DevTools uses). |
Why this is possible for both platforms
React Native's DevTools and the browser extension aren't two separate
tools — both are frontends for the same react-devtools-shared backend
agent embedded in the running app. They differ in transport (RN connects
over a WebSocket via react-devtools-core; web can attach via
react-devtools-inline's message-channel API), but the data shape —
which fiber committed, which props/state/hooks changed, who scheduled the
update — is identical. @recount/core only ever consumes that normalized
shape, so one analysis engine covers both.
Quick start (core + CLI, works today)
npm install
npm run build
node packages/cli/dist/index.js analyze --demo
This runs the bundled fixture (a ProductList / ProductCard scenario)
through the engine and prints the findings — no live app or DevTools
connection required yet.
Roadmap
- v1 (this scaffold): decode-and-rank engine, CLI, MCP server, demo fixture. No source-level root-cause analysis yet.
- v2: static-analysis heuristics layer — use
SerializedElement.stack/InspectedElement.sourceto point at the file/line responsible, and flag common causes (inline literals, unstable context values, missing memoization). Suppress noise for components already compiled by the React Compiler (compiledWithForget). - v3: real
@recount/weband@recount/nativeconnectors once the spikes in SPIKE.md are resolved, so Recount can attach to a running app instead of requiring a pre-exported JSON file.
Contributing
See CODE_OF_CONDUCT.md. Issues and PRs welcome once this is pushed to a public repo.
License
MIT
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.