Next.js 15 не меняет сам App Router, но обновляет несколько важных поведений по умолчанию. При обновлении старого проекта эти изменения в первые дни могут приводить к ошибкам и неожиданным результатам. Разберём самое важное.
Асинхронные request API
Раньше cookies(), headers(), а также params и searchParams страницы читались синхронно. В Next.js 15 они возвращают Promise, поэтому их нужно читать через await.
type Props = { params: Promise<{ id: string }> }; export default async function Page({ params }: Props) { const { id } = await params; return <Video id={id} />; }
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 и явно пропиши кеширование там, где оно нужно.
