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

+1 128новых вакансий за сутки·93 813вакансий открыто сейчас·Новое:Talanto осенью: фильтры с числами, отклик по шагам и каталог компаний

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

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

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

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

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

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

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

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

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

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

Все подборки
  • Python17 196
  • Облачные технологии14 160
  • QA вакансии3 451
  • Backend вакансии2 107
  • Инженер данных1 800
  • Продакт-менеджер1 247

Разработка

  • Android1 855
  • iOS1 695
  • Fullstack вакансии995
  • AI вакансии952
  • Frontend вакансии751
  • Mobile вакансии43

По стеку

  • Go8 754
  • Java6 595
  • Node.js2 038
  • .NET1 738
  • Kotlin1 617
  • Rust1 473
  • C#718
  • PHP692
  • C++582

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

  • Kubernetes7 778
  • DevOps вакансии6 088
  • Linux-инфраструктура5 502
  • Terraform / IaC4 276
  • CI/CD3 275
  • Мониторинг и Observability1 793
  • SRE563
  • Кибербезопасность453

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

  • Data Scientist1 141
  • Бизнес-аналитик921
  • Аналитик данных860
  • Системный аналитик154

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

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

По регионам

  • Вакансии в США44 164
  • Вакансии в Европе24 016
  • Вакансии в Канаде4 533
  • Работа в России3 837

По формату

  • Удалённые вакансии75 134
  • Релокация в США44 163
  • Гибридная работа12 456
  • Офисная работа7 066

По уровню

  • Senior вакансии42 633
  • Middle вакансии20 971
  • Junior вакансии6 706

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

Все компании
  • Rakuten189 вакансий
  • Wise189 вакансий
  • ASML166 вакансий
  • Grab137 вакансий
  • Celonis38 вакансий
  • 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 вакансии
  • 206648 - Product Owner (Técnico)
  • Senior Software Engineer - Fullstack with Rust
  • Senior Technical Architect
  • Sr. Full Stack Engineer, Launch Software
  • Senior Software Engineer, Services - VALORANT, Player Dynamics