Meta встроила React Compiler на Rust в основной репозиторий React и заявляет о заметном выигрыше по скорости: в реальных сценариях компиляция может ускориться на 20-50%, а в отдельных тестах сам трансформер работает в разы быстрее прежней версии на TypeScript. Для русскоязычных команд это не просто очередной инфраструктурный апдейт: фронтенд-стек все плотнее смещается в сторону Rust-инструментов, и теперь эта логика добралась до одного из самых чувствительных мест в React-сборке.
О переносе сообщает InfoQ. Речь идет о компиляторе, который раньше многие знали как React Forget: он автоматически мемоизирует компоненты и хуки, чтобы разработчикам реже приходилось вручную раскладывать код по useMemo и useCallback. Новый порт пока помечен как experimental, work-in-progress, но его уже вмержили в главный репозиторий React. Важно, что публичный API оставили без изменений: для команд это означает не новый раунд переписывания конфигов, а скорее попытку заменить двигатель, не меняя приборную панель.
По цифрам история выглядит вполне предметно. Как drop-in Babel-плагин Rust-версия, по данным из исходного материала, работает примерно в три раза быстрее TypeScript-варианта. Если смотреть на изолированную логику трансформации, ускорение местами доходит до 10x, хотя в реальной жизни часть этого выигрыша съедает сериализация. Отдельно приводится техническая деталь, важная для тех, кто уже видел немало красивых бенчмарков с сомнительным послевкусием: все 1725 тестовых фикстур проходят, а промежуточные состояния почти побайтно совпадают с прежней реализацией. Добиться этого, как пишет источник, помогли arena allocation и структуры данных с индексами вместо более тяжелых абстракций.
Самая интересная часть начинается там, где компилятор перестает быть просто Babel-плагином. Пока React Compiler жил в этой форме, сборщики каждый раз платили за промежуточный слой. При прямой интеграции Rust-версии в Turbopack, Rust-бандлер Vercel, этот оверхед исчезает. Инженер Vercel Эндрю Имм сообщил, что на крупном внутреннем приложении v0 это дало больше 40% ускорения компиляции. Причина не только в языке как таковом, а в архитектуре пути выполнения: прежний вариант через SWC-плагин упирался в долгий cold start WebAssembly. Официальный аккаунт Next.js назвал более широкий диапазон: в тестовых приложениях компиляция роутов стала быстрее на 20-50%, а экспериментальная поддержка ожидается в Next.js 16.3.
Для экосистемы это выглядит как продолжение большого и уже не слишком спорного тренда. Rust давно перестал быть экзотикой для фронтенд-инструментов: SWC мигрировал на официальный компилятор Rust, Oxc упаковывает его как готовые crates, Rspack 2.1 уже поставляется с нативной поддержкой. Теперь в этот ряд встраивается и сам React Compiler. Если смотреть прагматично, рынок голосует не за «модный язык», а за более короткий feedback loop. Когда проект большой, а команда не из трех человек, 20-40% ускорения на маршрутах и пересборках ощущаются не как приятная косметика, а как вполне измеримая экономия времени и нервов.
При этом история не выглядит безоблачно, и именно здесь она становится особенно интересной для технических лидов. Порт активно делали с помощью больших языковых моделей: по словам команды, LLM использовали для механической части работы, а люди оставались на архитектуре и ревью. В обсуждениях это вызвало привычный, но пока не закрытый спор. Одни приветствуют уход критически важного инструмента из TypeScript в компилируемый язык. Другие резонно спрашивают, не придется ли будущей команде сопровождения расплачиваться за такой рывок «когнитивным долгом», если код получился формально рабочим, но плохо объяснимым. Звучал и более колкий тезис: код на Rust еще не автоматически «хороший Rust», особенно если модель ради победы над borrow checker тянется к решениям, которые потом переносят проблемы на рантайм.
Для прикладной разработки новость важна не только скоростью. Meta старается сделать переход максимально безболезненным: внешний API сохраняется, а существующие пользователи должны получить обновление в формате drop-in замены. Для новых команд тоже оставили мягкий путь входа: несоответствующие участки кода можно исключать и внедрять компилятор постепенно, а не устраивать фронтенд-субботник на весь монорепозиторий. Это особенно важно для компаний, где React-код копился годами, а инженерные стандарты менялись чаще, чем дизайн-система.
Есть, впрочем, и обратный сигнал: не у всех интеграция Rust-версии проходит гладко. В материале упоминается, что команда Rolldown убрала свою интеграцию React Compiler для Rolldown и Vite, чтобы сначала «de-slopify» реализацию, хотя ранние результаты показывали ускорение до 2x. И это, пожалуй, лучший антидот против избыточного восторга. Переписать компилятор мало; нужно еще сделать так, чтобы его было удобно встраивать, отлаживать и сопровождать в разных toolchain-сценариях, а не только в лабораторно удачной конфигурации.
React Compiler на Rust в этой истории важен как симптом: фронтенд окончательно перестает быть миром, где все держится на JavaScript и терпении разработчика. Следующий вопрос уже не в том, придут ли Rust-компоненты в сборку массово, а в том, кто лучше справится с новым балансом между скоростью, совместимостью и поддерживаемостью кода, который все чаще пишут не только люди.