Next.js 15
October 21, 2024
Next.js 15 официально представлен и готов к использованию в продакшене. Этот релиз основан на обновлениях из RC1 и RC2 и сфокусирован на стабильности, дополненной рядом новых возможностей. Рекомендуется попробовать Next.js 15 уже сегодня:
# Используйте новый инструмент автоматического обновления CLI npx @next/codemod@canary upgrade latest # ...или обновитесь вручную npm install next@latest react@rc react-dom@rc
Основные нововведения в Next.js 15:
- @next/codemod CLI: Легко обновляйтесь до последних версий Next.js и React.
- Асинхронные Request API (Breaking Change): Шаг к упрощённой модели рендеринга и кэширования.
- Семантика Кэширования (Breaking Change): Запросы fetch, обработчики маршрутов GET и клиентская навигация больше не кэшируются по умолчанию.
- Поддержка React 19: Совместимость с React 19, экспериментальный React Compiler и улучшения ошибок гидратации.
- Turbopack Dev (Стабильный): Улучшения производительности и стабильности.
- Индикатор Статических Маршрутов: Новый визуальный индикатор показывает статические маршруты во время разработки.
- unstable_after API (Экспериментальный): Выполнение кода после завершения стриминга ответа.
- instrumentation.js API (Стабильный): Новый API для наблюдаемости жизненного цикла сервера.
- Улучшенные Формы (next/form): Расширение HTML-форм с клиентской навигацией.
- Поддержка next.config.ts: Поддержка TypeScript в файлах next.config.ts.
- Улучшения для Самостоятельного Хостинга: Больше контроля над заголовками Cache-Control.
- Безопасность Server Actions: Непредсказуемые конечные точки и удаление неиспользуемых действий.
- Оптимизация Бандлинга Внешних Пакетов (Стабильный): Новые параметры конфигурации для App и Pages Router.
- Поддержка ESLint 9
- Улучшения Производительности Разработки и Сборки
Плавное Обновление с помощью @next/codemod CLI
Мы включили codemod (автоматизированные преобразования кода) в каждый основной релиз Next.js для облегчения обновления. Новый улучшенный CLI позволяет легко обновиться до последних версий:
npx @next/codemod@canary upgrade latest
Асинхронные Request API (Breaking Change)
Чтобы подготовиться к дальнейшим оптимизациям, API, которые зависят от данных запроса (cookies, headers, params, searchParams), переводятся в асинхронный режим:
import { cookies } from 'next/headers'; export async function AdminPanel() { const cookieStore = await cookies(); const token = cookieStore.get('token'); // ... }
Это является ломающим изменением. Для упрощения миграции доступен codemod:
npx @next/codemod@canary next-async-request-api .
Семантика Кэширования (Breaking Change)
В Next.js 15 поведение кэширования по умолчанию было изменено:
- GET Обработчики Маршрутов: Больше не кэшируются по умолчанию.
- Кэш Клиентского Роутера: Компоненты страниц перестали кэшироваться по умолчанию при навигации.
При необходимости кэширование можно включить с помощью опций конфигурации.
Поддержка React 19
В текущем релизе Next.js 15 активирована поддержка React 19 RC, включая экспериментальный React Compiler и улучшенную гидратацию. Для Pages Router сохранена совместимость с React 18, что обеспечивает плавный переход.
Turbopack Dev (Стабильный)
Также объявлено, что next dev --turbo теперь доступен в стабильном виде и значительно ускоряет процесс разработки. Он успешно применялся при работе над крупными проектами (например, vercel.com и nextjs.org) и показал высокую эффективность.
Другие Улучшения
- Индикатор Статических Маршрутов: Помогает определить, какие маршруты являются статическими или динамическими во время разработки.
- unstable_after API (Экспериментальный): Предоставляет возможность выполнения кода после окончания стриминга ответа без блокировки основного потока.
- instrumentation.js API (Стабильный): Даёт возможность отслеживать жизненный цикл сервера в целях мониторинга и отладки.
- Компонент <Form>: Расширяет традиционные HTML-формы за счёт предзагрузки, клиентской навигации и прогрессивного улучшения.
- Поддержка next.config.ts: Предусмотрена типизация и автодополнение для настроек конфигурации Next.js.
- Улучшения для Самостоятельного Хостинга: Позволяют более детально управлять заголовками Cache-Control и использовать оптимизацию изображений без установки sharp.
- Безопасность Server Actions: Реализованы безопасные непредсказуемые идентификаторы действий и механизм удаления неиспользуемых действий.
- Оптимизация Бандлинга Внешних Пакетов: Предоставлены опции serverExternalPackages и bundlePagesRouterDependencies для App и Pages Router.
- Поддержка ESLint 9: Обеспечена обратная совместимость с ESLint 8.
- Улучшения Производительности: Ускорена сборка, повышена эффективность Fast Refresh и оптимизирована статическая генерация.
Подробности и инструкции по обновлению доступны в официальной документации Next.js 15.
Автор оригинального поста: Delba de Oliveira, Jimmy Lai, Rich Haines