Vercel выпустила Next.js 16.3, переведя Turbopack и Partial Prerendering из раздела экспериментальных функций в режим, готовый к использованию в продакшене. Обновление обещает ускорение сборки в два-пять раз для приложений среднего размера и сокращение времени до интерактивности (Time to Interactive) на 40–60 % — прирост, который заметит любая команда, стремящаяся быстрее выпускать фичи.

Почему это важно именно сейчас

Next.js долгое время полагался на Webpack — JavaScript-бандлер, написанный на JavaScript, — как для разработки, так и для продакшн-сборок. За последний год команда Vercel отполировала Turbopack — замену на базе Rust, которая снижает потребление памяти и ускоряет сборку. Одновременно с этим они тестировали Partial Prerendering (PPR) как способ сочетания статического HTML с динамическим контентом «на лету», но разработчикам приходилось использовать его как «экспериментальную опцию». Переводя оба инструмента в статус стабильных, Vercel предоставляет продакшн-командам готовое решение для повышения производительности без привычного метода проб и ошибок.

Turbopack становится стабильным

  • Скорость: Продакшн-сборки в репозиториях среднего размера теперь проходят в два-пять раз быстрее.
  • Память: Снижается нагрузка на память в крупных кодовых базах.
  • Активация: Просто добавьте turbo: true в next.config.js, и всё готово.

Обратной стороной является более строгая среда. Turbopack требует Node 18.17 или выше, а любые кастомные плагины Webpack, от которых зависят проекты, не будут работать под Turbopack. Командам с разветвленными конвейерами плагинов придется провести аудит или переписать эти расширения перед переключением.

Server Actions работают еще плавнее

Server Actions — функции, которые выполняются на сервере, но вызываются с клиента — теперь получили более тесную интеграцию с TypeScript. Компилятор автоматически выводит типы, поэтому разработчикам больше не нужно прописывать аннотации типов вручную. Он также понимает вложенные объекты и схемы Zod на всем пути передачи данных, уменьшая риск несоответствий во время выполнения. Новые соглашения файловой системы делают разрешение экшенов явным, помогая разработчикам избегать трудноуловимых багов, вызванных неоднозначными импортами.

Partial Prerendering (PPR) готов к продакшену

PPR позволяет одной странице отдавать статический HTML для частей, которые никогда не меняются, при этом отдельно гидрируя динамические секции. Статическая разметка отрисовывается мгновенно, а фоновое получение данных (fetch) затем «оживляет» интерактивные элементы. Этот подход улучшает показатель Time to Interactive (TTI) на 40–60 %.

Внедрить PPR просто: пометьте статические части существующим API статической генерации, а динамические элементы оставьте для клиентского рендеринга. Поскольку статический HTML передается как полноценный документ, браузер может начать отрисовку еще до запуска любого JavaScript, что повышает воспринимаемую производительность в медленных сетях.

Другие заметные изменения

  • Оптимизация изображений: Теперь для изображений LCP (Largest Contentful Paint) можно задавать fetchPriority, гарантируя, что браузер первым делом загрузит главный (hero) элемент.
  • Работа со шрифтами: next/font автоматически выполняет подмножество символов (subsetting), уменьшая размер полезной нагрузки без дополнительной настройки.
  • Middleware: Движок сопоставления маршрутов был переписан на Rust, что обеспечило более быструю проверку путей. Middleware также может возвращать полные HTML-ответы, открывая возможности для страниц, рендерируемых на edge-серверах.

Первые шаги для команд

  1. Включите Turbopack в режиме разработки; в продакшене он работает так же, как только будет установлен флаг turbo.
  2. Обновите Node до версии 20 или выше.
  3. Проверьте Server Actions на предмет преимуществ вывода типов; удалите все ручные аннотации, которые теперь избыточны.
  4. Запустите пилотный проект Partial Prerendering на одном высоконагруженном маршруте, чтобы измерить улучшение TTI перед внедрением на всем сайте.

Предостережения и нюансы

Прирост производительности зависит от соблюдения новых требований к среде выполнения. Проекты, застрявшие на старых версиях Node или сильно зависящие от кастомных плагинов Webpack, столкнутся с трудностями.

Итог: Next.js 16.3 предоставляет разработчикам готовый к продакшену бандлер на базе Rust и проверенный метод сочетания статического и динамического контента. Внедряйте новые стандарты по умолчанию, устраняйте проблемы с совместимостью, и вы увидите, что сборки завершаются быстрее, а страницы становятся заметно отзывчивее для конечных пользователей.