Перейти к содержимому
Разработка

App Router в Next.js 15: что изменилось и как перейти

Асинхронные request API, новые правила кеширования и поддержка React 19 — что нужно знать перед обновлением проекта.

Команда HTMLLAB · 8 мин чтения

Next.js 15 не меняет сам App Router, но обновляет несколько важных поведений по умолчанию. При обновлении старого проекта эти изменения в первые дни могут приводить к ошибкам и неожиданным результатам. Разберём самое важное.

Асинхронные request API

Раньше cookies(), headers(), а также params и searchParams страницы читались синхронно. В Next.js 15 они возвращают Promise, поэтому их нужно читать через await.

app/video/[id]/page.tsx
type Props = { params: Promise<{ id: string }> };

export default async function Page({ params }: Props) {
  const { id } = await params;
  return <Video id={id} />;
}
Заметка
Для обновления есть официальный codemod: npx @next/codemod@canary upgrade latest. Он автоматически меняет большую часть кода, но результат обязательно проверь.

Кеширование больше не включено по умолчанию

В Next.js 14 запросы fetch и GET route handler-ы кешировались по умолчанию. В 15-й версии это изменилось: если нужен кеш, его надо указать явно.

  • Запросы fetch по умолчанию не кешируются
  • GET route handler-ы по умолчанию тоже динамические
  • Клиентский кеш роутера по умолчанию не хранит компоненты страниц

React 19 и Turbopack

App Router теперь работает на React 19. В режиме разработки Turbopack считается стабильным — с next dev --turbo обновление в больших проектах заметно быстрее.

Итог

Обновление несложное, но план нужен заранее: запусти codemod, проверь асинхронные API и явно пропиши кеширование там, где оно нужно.

#nextjs#react#app-router

Читай также