react-render-profile-mcp v0.3.1: четыре новых MCP-инструмента для React Compiler, гидратации, Zustand и каскадов состояния

В v0.3.1 расширен MCP-сервер react-render-profile-mcp: он опирается на экспорты React DevTools Profiler и даёт ИИ-агентам структурированную опору для диагностики производительности рендера вместо работы с сырыми fiber ID. В релиз добавлены четыре новых инструмента под сценарии React Compiler и гидратации с Suspense, внешних сторов и глубоких каскадов обновления состояния.
Материал vola-trebla на Dev.to датирован 22 мая 2026 г., 12:14 UTC; в шапке публикации указано время чтения порядка 3 минут.
MCP-сервер, профиль React и задача для ИИ-агента
Смысл связки в том, что агент получает структурированный слой поверх низкоуровневого следа профилировщика: сервер читает сохранённый профиль и отвечает на вызовы инструментов MCP. В том же тексте есть отсылка к более раннему посту на Dev.to про связку ИИ-агента и регрессии производительности React — URL вынесен в блок «Источники».
Типичный сценарий начинается с экспорта: React DevTools → Profiler → Record → Save, затем путь к файлу .json передаётся как profile_path в вызовы инструментов.
Пять инструментов v0.1 и пробелы, которые закрывает v0.3.1
В v0.1 у сервера пять MCP-инструментов:
| Инструмент | Кратко |
|---|---|
get_render_summary |
сводка: число коммитов, время рендера, топ компонентов, флаги аномалий жизненного цикла |
find_spurious_renders |
компоненты с лишними рендерами без фактического изменения props/state |
get_hottest_components |
ранжирование по CPU self-time |
trace_render_cascade |
что инициировало commit и что перерисовалось вследствие |
suggest_memoization |
рекомендации по React.memo с формулировкой про «ROI-scored» оценку |
Далее автор перечисляет типичные вопросы, на которые этому набору не хватало ответа: почему React Compiler не убрал лишние рендеры, где именно «ломается» гидратация, какой селектор Zustand зациклился и насколько глубоко контекст разнёс обновление по дереву. Эти классы проблем закрывает блок из четырёх новых инструментов в v0.3.1.
Четыре новых MCP-инструмента в v0.3.1
Ниже — сжатое изложение по тексту поста на Dev.to; иллюстративные JSON-примеры на странице не выдаются за замеры с реального продакшена.
analyze_compiler_efficacy
Типичные причины, по которым React Compiler (React 19) и ручной React.memo не снимают лишние рендеры: среди примеров — inline object allocations и нестабильные ссылки родителя. Для оценки «формальной vs фактической» мемоизации вводится Invalidation Index на компонент:
I = (spurious_count / total_count) × wasted_ms
В иллюстративном JSON встречаются поля вроде severity, component_name, ineffective_render_count, wasted_ms, trigger_cause, recommendation.
diagnose_hydration_and_suspense
Инструмент объединяет два класса сигналов: несовпадения гидратации (включая паттерн «долгий initial mount и всплеск unmount сразу после») и Suspense waterfalls, когда вложенные границы тянут данные последовательно, а не параллельно.
Для waterfall назван измеряемый зазор между последовательными resolve границ Suspense и порог waterfall_threshold_ms со значением по умолчанию 100 ms.
Для гидратации фигурирует флаг HYDRATION_MISMATCH_RECOVERY в связке с затронутыми границами Suspense и длительностью блокировки.
В иллюстрации для waterfall встречается "anomaly_type": "NESTED_MOUNT_FETCH_WATERFALL" и поля вроде severity, root_component, blocking_duration_ms, recommendation.
evaluate_external_store_performance
Явно названы Zustand и Redux в связке с useSyncExternalStore. Два режима отказа: нестабильное выделение объекта селектором (новая ссылка на каждый вызов и быстрые последовательные рендеры) и sync concurrency bypass, когда тяжёлое синхронное обновление стора попадает в высокоприоритетную lane; среди рекомендаций — startTransition.
trace_state_cascade_footprint
Вход — индекс commit; далее — реконструкция виртуального дерева и измерение глубины распространения обновления. В отчёт попадают: какой компонент инициировал обновление, шло ли оно через context provider или подписчика стора, глубина каскада и число перерисовавшихся consumer-компонентов.
Вывод: четыре новинки дают агенту отдельные режимы расспроса профиля там, где исходные пять инструментов оставляли пробел в интерпретации компилятора, гидратации, внешнего стора и широкого каскада состояния.
Классификация ложных рендеров, семишаговый сценарий и установка
Для find_spurious_renders в v0.3.1 добавлена классификация причины лишнего рендера. Строковые литералы триггеров: UNSTABLE_PARENT_REF, CONTEXT_UPDATE, INTENTIONAL_CONCURRENT_YIELD; отдельно поясняется, что React.memo перекрывает первый случай, но не второй.
Рекомендуемый порядок вызовов для агента — семь пронумерованных шагов от get_render_summary до suggest_memoization.
В блоке Setup приведён фрагмент конфигурации mcpServers с ключом react-render-profile, командой npx и аргументами -y и react-render-profile-mcp; полную разметку см. на странице первоисточника. Смысловой минимум запуска:
npx -y react-render-profile-mcp
Источники
- vola-trebla — react-render-profile-mcp v0.3.1 - 4 new diagnostic tools for React Compiler, hydration, Zustand, and state cascades (Dev.to). URL: Dev.to — дата доступа: 2026-05-22, UTC 21:45.
- Тот же пост — ссылка на более ранний материал: https://dev.to/vola-trebla/your-ai-agent-just-broke-your-react-performance-it-has-no-idea-4ghn — дата доступа: 2026-05-22, UTC 21:45 (полный текст по ссылке в этом материале не разбирался).
- Тот же пост — ссылка на пакет npm: https://www.npmjs.com/package/react-render-profile-mcp — дата доступа: 2026-05-22, UTC 21:45 (метаданные npm вне текста поста не использовались).
- Тот же пост — ссылка на репозиторий GitHub: https://github.com/vola-trebla/react-render-profile-mcp — дата доступа: 2026-05-22, UTC 21:45.