recount

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.

Category
Visit Server

README

Recount

CI License: MIT

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:

ProductCard re-rendered 42 times this session (avg 2.1ms, 88.4ms total). Prop onSelect changed on every render. Scheduled by ProductList.

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

  1. v1 (this scaffold): decode-and-rank engine, CLI, MCP server, demo fixture. No source-level root-cause analysis yet.
  2. v2: static-analysis heuristics layer — use SerializedElement.stack / InspectedElement.source to 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).
  3. v3: real @recount/web and @recount/native connectors 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

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.

Official
Featured
TypeScript
Magic Component Platform (MCP)

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.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

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.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

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.

Official
Featured
TypeScript
Kagi MCP Server

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.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

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.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured