React Compiler доехал до GA. Год бета-тестов на одном из наших проектов закончился: компилятор включён по умолчанию во всех новых клиентских репозиториях. Что меняется в повседневной разработке - ниже.
Главное: useMemo и useCallback можно убирать
Компилятор сам мемоизирует вычисления и колбэки. На наших боевых проектах после удаления ручной мемоизации bundle сжался на 3–6% (не катастрофически, но приятно), а количество багов от устаревших замыканий снизилось до нуля.
Чего НЕ делать
- Не удалять React.memo - он всё ещё имеет смысл для дорогих корневых компонентов.
- Не убирать key из списков - компилятор не телепат.
- Не отключать ESLint react-hooks - правила про exhaustive deps всё ещё актуальны.
- Не пытаться оптимизировать «как раньше» - сначала проверьте, что компилятор уже сделал.
Где компилятор промахивается
Есть класс случаев, когда мутации внешнего стора (Zustand, Valtio) ломают reactivity. Компилятор предполагает иммутабельность пропсов и стейта. На двух проектах пришлось аккуратно завернуть проблемные участки в `// react-compiler-disable`. Это редко, но бывает.
Стоит ли включать на старом проекте
У нас 4 из 6 активных React-проектов уже на компиляторе. На двух оставшихся ждём миграции на React 19. Если вы на React 19 - включайте, риск минимальный, выигрыш есть.