Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

+1 512новых вакансий за сутки·54 396вакансий открыто сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании5 565
РезюмеAIПодготовкаСтатьи
BoostТарифыBoost
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 395 кандидатов открыты к предложениям

Разместить вакансию

Популярные направления

Все подборки
  • Python8 752
  • Облачные технологии6 631
  • QA вакансии2 183
  • Android1 322
  • Инженер данных860
  • Продакт-менеджер316

Разработка

  • iOS1 238
  • Backend вакансии1 196
  • AI вакансии549
  • Fullstack вакансии500
  • Frontend вакансии426
  • Mobile вакансии28

По стеку

  • Go5 209
  • Java3 131
  • Kotlin1 113
  • Node.js1 008
  • Rust833
  • .NET656
  • PHP322
  • C++270
  • C#207

DevOps и инфраструктура

  • Kubernetes3 882
  • Linux-инфраструктура2 817
  • DevOps вакансии2 655
  • Terraform / IaC2 191
  • Мониторинг и Observability1 071
  • CI/CD919
  • SRE308
  • Кибербезопасность38

Аналитика и данные

  • Аналитик данных522
  • Data Scientist435
  • Бизнес-аналитик397
  • Системный аналитик67

Другие направления

  • Проджект-менеджер109
  • UI/UX дизайн67
  • Ручное тестирование14

По регионам

  • Вакансии в США25 642
  • Вакансии в Европе10 259
  • Работа в России3 639
  • Вакансии в Канаде2 255

По формату

  • Удалённые вакансии42 339
  • Релокация в США25 642
  • Гибридная работа5 706
  • Офисная работа4 402

По уровню

  • Senior вакансии22 510
  • Middle вакансии11 429
  • Junior вакансии3 877

Сейчас нанимают

Все компании
  • Wise192 вакансии
  • Rakuten189 вакансий
  • ASML163 вакансии
  • Grab134 вакансии
  • Celonis42 вакансии
  • Spotify37 вакансий
  • Adyen28 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace17 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К теме ReactВсе вопросы
ReactSeniorТеория

Что такое React Compiler (стабилен в React 19) и как он меняет ручную мемоизацию?

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

React Compiler — статический AOT-плагин (Babel/SWC), который анализирует компоненты и хуки, выводит зависимости и автоматически вставляет мемоизацию. В типичном проекте useMemo/useCallback/React.memo становятся почти не нужны: компилятор делает это точнее и не хуже разработчика вручную.

Пример

// До: разработчик вручную контролирует зависимости
const items    = useMemo(() => list.filter(byQuery(q)), [list, q]);
const onSelect = useCallback((id: string) => setSelected(id), []);

// После React Compiler: идиоматический JS без ручной мемоизации
// Компилятор сам определит, что items зависит от list и q,
// а onSelect — стабильная функция
const items = list.filter(byQuery(q));
function onSelect(id: string) {
  setSelected(id);
}

Разбор

React Compiler — это AOT-плагин (Babel/SWC), поставляемый как babel-plugin-react-compiler и стабилизированный в React 19. Он читает функциональные компоненты и кастомные хуки, строит control-flow граф, выводит зависимости каждого выражения и переписывает код так, чтобы значения с неизменившимися зависимостями повторно использовались между рендерами. Это устраняет главную причину, по которой команды раньше засыпали код useMemo/useCallback.

Что компилятор делает внутри

Для каждого компонента компилятор:

  1. Строит SSA-форму (Static Single Assignment) для отслеживания зависимостей.
  2. Определяет «реактивные» значения — те, что зависят от props, state или контекста.
  3. Оборачивает стабильные вычисления в эквивалент useMemo с автоматически выведенными зависимостями.
  4. Стабилизирует колбэки — эквивалент useCallback без ручного списка зависимостей.
  5. Применяет аналог React.memo к дочерним JSX-элементам, чтобы стабильные ссылки реально пропускали рендер потомков.

Если компилятор не уверен в чистоте функции — он просто не оптимизирует её. Отказ безопасен: код работает как раньше, только без кэширования.

Интеграция

# Next.js (встроено в 15+)
# next.config.ts
experimental: { reactCompiler: true }

# Vite
npm install babel-plugin-react-compiler
# vite.config.ts → plugins: [react({ babel: { plugins: ['babel-plugin-react-compiler'] } })]

# ESLint-плагин для диагностики нарушений React Rules
npm install eslint-plugin-react-compiler

ESLint-плагин eslint-plugin-react-compiler подсвечивает участки, мешающие оптимизации: мутации входных массивов, нарушения правил хуков, условные вызовы хуков.

Подводные камни

  • Скрытые мутации ломают компилятор. Если компонент мутирует props или внешний объект во время рендера, компилятор либо откажется от оптимизации, либо закэширует неправильный результат. Перед включением прогоните eslint-plugin-react-compiler.
  • Компилятор не ускоряет DOM, сеть и layout-эффекты. Он оптимизирует только render-фазу. Медленные useEffect и тяжёлые layout-вычисления остаются вашей ответственностью.
  • Не удаляйте React.memo и useMemo скопом. На участках, где компилятор отказался оптимизировать (нарушение React Rules), ручная мемоизация остаётся единственной защитой. Удаление без проверки профайлером создаст регрессии.
  • Классовые компоненты не поддерживаются. Компилятор работает только с функциональными компонентами. Наличие в кодовой базе классовых компонентов не сломает сборку, но они не получат оптимизации.
  • Постепенное включение безопаснее. Включайте по директиве 'use memo' на файл или директорию, наблюдайте Performance Profiler в production, потом расширяйте охват. Резкое включение на весь монорепо с legacy-кодом рискованно.
  • Не путайте с RSC. React Compiler и React Server Components — независимые механизмы с разными задачами. Компилятор оптимизирует render-фазу клиентских компонентов; RSC устраняет их клиентский JS полностью. Они хорошо работают вместе.
  • Отладка становится сложнее. Сгенерированный код читается труднее оригинального. В DevTools Profiler можно видеть «memoized» компоненты, но понять, почему конкретная функция не закэширована, без знания правил компилятора сложно.
  • Версия React строго 19+. Если в монорепо есть пакеты с peer dependency react: "^18", компилятор может конфликтовать с ними до обновления зависимостей.

Частые вопросы на собеседовании

  • Что такое хук useEffect и как работает его массив зависимостей?
  • Объясните хук useState. Какие типичные ошибки возникают при обновлении состояния?
  • Объясните правила хуков. Почему хуки нельзя вызывать условно?
  • В каких типах frontend-проектов React даёт реальный выигрыш, а где будет избыточен или неудачен?

Типичные ошибки

  • Считать, что компилятор всё исправит, и не править нарушения правил React.
  • Удалять useMemo/useCallback без прогонки тестов и профилировщика.
  • Игнорировать eslint-plugin-react-compiler-предупреждения.

Что проверяет интервьюер

  • Может ли описать, какие правила должен соблюдать код.
  • Знает ли, что компилятор может отказаться оптимизировать модуль.
  • Понимает ли, что RSC и компилятор — разные вещи.

Как вы знаете этот вопрос?

Проверить себя по теме React →

Источники

  • https://react.dev/learn/react-compiler
  • https://react.dev/reference/react-compiler

Связанные темы

Reactbuild-pipelinereact-internals

Вакансии с этим навыком

React вакансии
  • Fullstack-разработчик (Node.js/React)
  • HMI D&E Software- Delivery Line Manager - Hsinchu
  • QA Fullstack (C#)
  • Senior Full Stack Mobile Developer (#5704)
  • Lead Fullstack Engineer (React+Next.js) (#5392)