РАЗРАБОТКА

Node.js 26 включил Temporal по умолчанию и зачистил legacy API

Node.js 26 вышел с Temporal по умолчанию, V8 14.6 и Undici 8.0.2. Для команд важны удалённые legacy API и миграция native add-ons.

✍️ Редакция iTech News | 08.07.2026 | ⏱ 5 мин | Источник: InfoQ

Node.js 26 вышел с Temporal API, включенным по умолчанию, обновлением движка до V8 14.6 и новой версией встроенного HTTP-клиента Undici 8.0.2. Для тех, кто живет не в презентациях, а в проде, это означает две вещи: работа с датами в JavaScript становится менее болезненной, а апгрейд потребует проверить native add-ons и старые API, которые проект наконец начал выносить без сантиментов.

О релизе Node.js 26 сообщает InfoQ. Формально это очередной Current-релиз на шесть месяцев, но по набору изменений он выглядит как аккуратная уборка в давно обжитом доме: платформа подтягивает современный JavaScript, убирает исторические хвосты и одновременно напоминает, что совместимость не бывает бесплатной. Для русскоязычных команд это особенно практичная история: если у вас серверы, CLI-инструменты, SSR или внутренние сервисы на Node, то вопрос уже не в том, интересен ли релиз, а в том, когда и как вы его будете примерять на staging.

Главная новость здесь не в том, что в Node снова обновили V8, а в том, что Temporal API теперь работает без экспериментального флага. Для JavaScript это почти терапевтический момент. Старый объект Date слишком давно служил универсальным источником мелких аварий: часовые пояса, смещения, арифметика дат, сериализация, переходы на летнее время, календарные нюансы. Temporal задуман как нормальная современная альтернатива с отдельными сущностями для instants, durations, time zones и calendars. Иными словами, платформа наконец предлагает встроенный инструмент для работы со временем без обязательной коллекции самодельных хелперов, патчей и тихой ненависти к часовым поясам. Реакция сообщества, если судить по обсуждениям, ожидаемо теплая: разработчики давно хотели увидеть Temporal не как лабораторную опцию, а как часть базовой поставки runtime.

Вторая важная часть релиза связана с движком. Node.js 26 получил V8 версии 14.6.202.33 из Chromium 146. Для прикладного разработчика это не повод немедленно переписывать половину проекта, но вполне веский аргумент держать в голове новые возможности языка и потенциальные выигрыши по производительности. InfoQ отмечает появление helper-методов Map.prototype.getOrInsert() и getOrInsertComputed(), а также Iterator.concat() для последовательного объединения итераторов. На бумаге это выглядит как маленькие удобства, но именно из таких «мелочей» обычно и складывается снижение объема обвязочного кода. Плюс к этому идут улучшения JIT-компиляции и сборки мусора. И тут, как обычно с V8, не стоит ждать магии по умолчанию на каждом сервисе, но повод прогнать профиль нагрузки после обновления вполне реальный.

Третий заметный блок изменений касается сетевого стека. Встроенный HTTP-клиент Undici обновили до 8.0.2, а значит, встроенный fetch() в Node тоже становится свежее без изменения пользовательского API. Это хороший пример зрелого улучшения без лишнего шума: никто не просит команды переписывать код, зато базовый инструментарий становится современнее и стабильнее. В параллельных мирах Deno и Bun такие вещи давно используют как часть конкурентного давления на Node: скорость, встроенные веб-API, меньше компромиссов между серверным JavaScript и браузерной моделью. На этом фоне Node.js 26 не пытается изображать внезапный стартап, а делает более разумную вещь: медленно, но методично подтягивает платформу туда, где разработчики уже ожидают ее увидеть.

Но самая приземленная часть релиза для многих команд будет не в новых API, а в удалениях. Node.js 26 избавляется от набора давно помеченных устаревших возможностей. Полностью убран http.Server.prototype.writeHeader() в пользу writeHead(), удалены legacy-модули семейства _stream_*, module.register() переведен в runtime-deprecated, а флаг --experimental-transform-types убран совсем. Такие изменения редко попадают в заголовки внутренних рассылок, но именно они ломают старые сборки в пятницу вечером, если обновление делали по принципу «ну это же минорный runtime upgrade, что там может пойти не так». Не меньше внимания требует и изменение NODE_MODULE_VERSION: теперь это 147. Практический перевод на язык эксплуатации простой: любые предсобранные native add-ons придется пересобрать перед переходом. Для компаний с зависимостями на нативные пакеты, внутренние расширения, старые обертки над C/C++-библиотеками или экзотические модули это уже не рекомендация, а чек-лист перед миграцией.

С точки зрения жизненного цикла релиз тоже важен. Node.js 26 останется веткой Current шесть месяцев, а в октябре 2026 года должен перейти в long-term support, работая параллельно с актуальной LTS-веткой Node.js 24. Это значит, что спешить на него в production в день выхода обязаны немногие, но начинать оценку совместимости стоит уже сейчас. Особенно если инфраструктура у вас крупная, а обновления runtime проходят через длинную цепочку CI, тестирования, контейнерных образов, security-проверок и согласований с несколькими командами. Отдельный нюанс: Node.js 26 называют последним релизом в старом odd/even-цикле перед переходом проекта на ежегодную модель релизов. Для рынка это хороший сигнал о большей предсказуемости. Для разработчиков и платформенных инженеров тоже: планирование обновлений становится скучнее, а скука в инфраструктуре обычно полезнее героизма.

На уровне отрасли этот релиз вряд ли войдет в историю как драматический поворот, и сообщество это, похоже, понимает. В обсуждениях Node.js 26 описывают скорее как большой набор небольших правок и минорных депрекейшенов, чем как демонстрацию новой философии платформы. Но именно такие релизы потом и меняют повседневную разработку сильнее громких анонсов. Если Temporal действительно начнет вытеснять самодельные date-utils, если команды начнут активнее полагаться на встроенный fetch(), а зачистка legacy API заставит наконец снять слой технического долга, то эффект окажется заметнее, чем кажется в день публикации релиз-ноутов. Вопрос теперь не в том, достаточно ли громким получился Node.js 26, а в том, насколько быстро экосистема перестанет держаться за исторические костыли и примет более современную, но менее снисходительную версию платформы.

Поделиться: Telegram X LinkedIn