Node.js 26: Temporal API по умолчанию, V8 14.6 и удаление устаревших API — что нужно знать разработчику

Node.js 26 привносит долгожданные изменения: Temporal API теперь работает без флага, движок V8 обновлён до версии 14.6, а HTTP-клиент Undici — до 8.0. Кроме того, из кодовой базы удалены давно устаревшие API, а версия модуля Node изменилась. Эти обновления затрагивают практически всех разработчиков,

Node.js 26: Temporal API по умолчанию, V8 14.6 и удаление устаревших API — что нужно знать разработчику

Node.js 26 привносит долгожданные изменения: Temporal API теперь работает без флага, движок V8 обновлён до версии 14.6, а HTTP-клиент Undici — до 8.0. Кроме того, из кодовой базы удалены давно устаревшие API, а версия модуля Node изменилась. Эти обновления затрагивают практически всех разработчиков, от тех, кто работает с датами, до авторов нативных модулей. Давайте разберёмся, что конкретно изменилось и как подготовиться к миграции.

Temporal API: новый стандарт работы с датами и временем

Самое заметное нововведение — Temporal API стал доступен по умолчанию. Ранее он был экспериментальным и требовал флага --experimental-temporal. Теперь любой разработчик может использовать его без дополнительных настроек. Temporal API решает давние проблемы объекта Date: он предлагает неизменяемые объекты, поддержку часовых поясов, календарей и точность до наносекунд. Это упрощает обработку дат и времени, особенно в приложениях с международной аудиторией. Разработчики могут сразу начать миграцию с устаревшего Date на Temporal, что повысит надёжность и читаемость кода.

Какие преимущества Temporal API даёт разработчикам?

Temporal API включает несколько типов объектов: Temporal.Instant для моментальных меток, Temporal.ZonedDateTime для дат с часовым поясом, Temporal.PlainDate для дат без времени и другие. Например, получить текущее время в UTC можно так: Temporal.Now.instant(). А для работы с конкретным часовым поясом: Temporal.Now.zonedDateTimeISO('Europe/Moscow'). Это избавляет от ручных расчётов смещений и ошибок, связанных с летним временем. Библиотеки вроде moment.js или date-fns теперь можно заменять на встроенное решение, что снижает размер бандла и зависимостей. Для разработчиков, которые уже использовали Temporal с флагом, переход будет безболезненным — достаточно убрать флаг из конфигурации.

V8 14.6: производительность и новые возможности JavaScript

Движок V8 обновлён до версии 14.6, что приносит оптимизации компилятора и новые возможности языка. В этой версии улучшена производительность при работе с большими объектами и массивами, оптимизирована сборка мусора. Для разработчиков это означает более быстрый запуск приложений и меньший расход памяти. Кроме того, V8 14.6 включает поддержку новых методов JavaScript, таких как Array.fromAsync и улучшения в работе с Promises. Это позволяет писать более чистый и эффективный код без полифиллов. Обновление V8 также затрагивает безопасность: исправлены уязвимости, что делает Node.js 26 более защищённым.

Undici 8.0: улучшенный HTTP-клиент

HTTP-клиент Undici, используемый по умолчанию в Node.js, обновлён до версии 8.0. Это приносит улучшенную обработку HTTP-запросов, включая более эффективное управление соединениями и поддержку новых заголовков. Undici 8.0 также включает исправления ошибок, связанных с тайм-аутами и повторными попытками. Для разработчиков, которые используют fetch или http.request, это означает более стабильную работу сетевых запросов. Рекомендуется проверить код на совместимость с новой версией, особенно если используются кастомные настройки агента.

Удаление устаревших API и изменение версии модуля Node

В рамках очистки кодовой базы из Node.js 26 удалены некоторые давно устаревшие API. Точный список доступен в официальных примечаниях к релизу, но известно, что удалены API, помеченные как deprecated в предыдущих версиях. Например, могли быть удалены старые методы работы с буферами или устаревшие функции из модуля util. Разработчикам рекомендуется проверить свои проекты на использование deprecated API с помощью флага --pending-deprecation и заменить их на современные альтернативы. Кроме того, изменён NODEMODULEVERSION, что означает, что все нативные модули (написанные на C++) должны быть пересобраны для совместимости с Node.js 26. Если вы используете такие модули, обязательно обновите их до версий, поддерживающих новую версию Node.

Кого затронут изменения в Node.js 26

Изменения затронут широкий круг разработчиков. Разработчики, работающие с датами и временем, смогут сразу перейти на Temporal API, что упростит код и повысит точность. Авторы библиотек и фреймворков должны обновить свои зависимости и проверить совместимость с новыми версиями V8 и Undici. Разработчики нативных модулей обязаны пересобрать модули из-за изменения версии модуля Node. Для веб-разработчиков, использующих Node.js на сервере, обновление улучшит производительность и безопасность. Рекомендуется протестировать приложения на Node.js 26 в staging-окружении перед развёртыванием в production.

Что пока неизвестно и дальнейшие планы

На данный момент не опубликован полный список удалённых устаревших API — он будет доступен в официальных примечаниях к релизу. Также не уточнены точные сроки перехода Node.js 26 в статус LTS (ожидается примерно через шесть месяцев). Разработчикам стоит следить за официальным блогом Node.js и репозиторием на GitHub, чтобы быть в курсе изменений. Рекомендуется начать миграцию уже сейчас, чтобы к моменту выхода LTS ваше приложение было готово.