Перейти к основному контенту
Tech Path Finder
КурсыИнтервьюКод-ревьюБлог
Tech Path Finder

Персонализированный путеводитель в IT. Квизы, мок-интервью, код ревью и аналитика прогресса.

@potapov_me

Платформа

  • Курсы
  • Прогресс
  • Мок-интервью
  • Код ревью
  • Тренажёр переговоров
  • Закладки

Контент

  • Блог
  • Главная
  • Обратная связь

Компания

  • О проекте
  • Тарифы
  • Условия использования
  • Конфиденциальность
  • Согласие на обработку данных
  • Cookie
  • Реквизиты

Аккаунт

  • Войти
  • Зарегистрироваться
  • Профиль

© 2026 Tech Path Finder. Все права защищены.

·ИП Потапов К.С.·Политика конфиденциальности·
Сделано с ❤️ в России
  1. Производительность и React Compiler
performance_compiler

Производительность и React Compiler

Profiler, React Compiler 1.0, memoization, virtualization, code splitting, Web Vitals и доказуемая оптимизация.

Открыть лабораториюv0.1.0Запускается локально из публичного репозитория

Производительность и React Compiler

Оптимизация начинается с пользовательской метрики и воспроизводимого trace, а заканчивается повторным измерением.

#Результат урока

Вы найдёте bottleneck, отличите render от commit/network/layout, включите Compiler и докажете улучшение без регрессии.

До начала достаточно render model, Compiler toolchain, Suspense и browser loading. В конце должен появиться не конспект, а performance report до/после для тяжёлого dashboard с budget и regression test.

#1. Baseline и целевая метрика

Зафиксируйте устройство, build, dataset и действие. Метрика должна отражать UX: LCP, INP, CLS, route transition, typing latency. Среднее скрывает хвосты; смотрите distribution/p75 и lab trace вместе с field data.

Рабочая проверка. Запишите baseline p75 и сценарий.

Типичная поломка. Оптимизировать по одному случайному console.time.

#2. Profiler: причина, duration, commit

React DevTools Profiler показывает commits, components и причины updates. <Profiler> даёт programmatic callback. Development overhead отличается production, поэтому используйте profiling build/реальные traces. Сначала найдите дорогую ветвь и частоту, затем ownership/props.

Рабочая проверка. Найдите unstable Provider value.

Типичная поломка. Судить по render count без duration.

#3. Compiler и чистый код

Compiler автоматически мемоизирует на build-time, если код соблюдает Rules of React. Он не лечит network waterfall, огромный DOM или layout thrashing. Compiler diagnostics помогают найти мутации/нечистоту. Версию лучше pin при rollout и обновлять с E2E.

Рабочая проверка. Сравните output/trace compiled subtree.

Типичная поломка. Считать Compiler универсальным performance fix.

#4. Ручная memoization как escape hatch

memo пропускает render при равных props, useMemo кэширует вычисление, useCallback function identity. Кэш не делает вычисление корректным и имеет стоимость. Нужна стабильность при дорогом child/external dependency, а не чтобы удовлетворить случайный lint suppression.

Рабочая проверка. Измерьте memo child до/после стабилизации props.

Типичная поломка. Новый object prop делает memo бесполезным.

#5. Виртуализация большого списка

Если тысячи DOM rows создают render/layout/paint cost, windowing оставляет видимую область и overscan. Нужно сохранить keys, scroll anchoring, keyboard/focus, dynamic heights и screen-reader strategy. Pagination может быть продуктово лучше бесконечной виртуализации.

Рабочая проверка. Измерьте DOM nodes и scroll behavior 10k rows.

Типичная поломка. Виртуализировать список из 20 строк.

#6. Bundle, chunks и preload

Измеряйте compressed transferred bytes, parse/execute и waterfall. Route/feature splitting уменьшает initial JavaScript, но чрезмерные chunks добавляют requests. Preload только действительно скорого критичного ресурса; prefetch — вероятного будущего. Tree shaking зависит от ESM/sideEffects.

Рабочая проверка. Проанализируйте bundle и lazy chart.

Типичная поломка. Импорт whole utility library ради одной функции.

#7. Layout, paint и CLS

React render может быть быстрым, а layout дорогим из-за DOM/CSS. Reserve image/media dimensions, избегайте forced synchronous layout read-write loops, animate transform/opacity осознанно. CLS измеряет unexpected shifts, не transitions по пользовательскому действию одинаково.

Рабочая проверка. Уберите shift у card images.

Типичная поломка. Изображение без width/height/aspect-ratio.

#8. Budgets и regression gate

Performance budget задаёт пороги bundle, route latency/Web Vitals и критического interaction в контролируемой среде. CI lab metric шумна, используйте допуски и trend; field monitoring ловит реальные devices. Не блокируйте merge по одному нестабильному запуску без повторов.

Рабочая проверка. Добавьте bundle budget и trace artifact.

Типичная поломка. Ручной аудит один раз перед запуском.

#Лаборатория

Профилируйте dashboard: медленный selector, unstable context, 10k rows, chart chunk и layout shift. Включите Compiler, исправьте ownership, виртуализируйте список, lazy-load chart и измерьте interaction/Web Vitals.

Критерий завершения: есть baseline, trace, гипотеза, изменение и повторное измерение; тесты подтверждают семантику. Сначала зафиксируйте наблюдаемое поведение тестом или измерением, затем меняйте реализацию.

#Источники для сверки

  • React Compiler v1.0
  • React Profiler
  • web.dev Web Vitals

Устранение неисправностей

Проверьте свои знания

Вопросы ещё не добавлены

Вопросы для этой подтемы ещё не добавлены.

Далее: Безопасность React-приложений