Web/journal
Next.js 15 + React 19
Next.js 15 + React 19: опыт обновления на четырёх проектах
← ЖурналWeb7 мин чтения

Next.js 15 + React 19: опыт обновления на четырёх проектах

Команда nordiqdev
студия

Next.js 15 вышел в октябре, React 19 stable - в декабре. На двух наших проектах мы провели обновление сразу после релиза, на двух - подождали месяц. Делимся, что изменилось и где надо быть аккуратным.

Главное изменение в Next 15: кэш по умолчанию выключен

В Next 14 fetch по умолчанию кэшировался, GET-route handlers тоже. В 15 - нет. Это правильное решение (предыдущее поведение ловило команды на сюрпризы), но при апгрейде существующих проектов часть данных, которую вы считали закэшированной, перестаёт ею быть.

Что делаем: проходим по всем fetch-вызовам, явно проставляем cache: force-cache или next: revalidate там, где кэш реально нужен. Это занимает день на средний проект.

Async request APIs

cookies(), headers(), params, searchParams теперь возвращают Promise. Изменение брейкинговое, но codemod от команды Next покрывает 90% случаев. Оставшиеся 10% - кастомные обёртки, где компилятор подсветит сам.

React 19: что приятно

  • ref как обычный prop, без forwardRef. Минус один HOC из каждой библиотеки.
  • useOptimistic - стандартный способ показать промежуточное состояние при мутации.
  • useFormStatus и useActionState - формы стали ощутимо чище.
  • Использование document metadata прямо из компонента - простые SEO-апдейты без next/head.
  • use(promise) внутри компонента - приятно для подгрузки в Suspense-боундари.

React 19: что неприятно

  • PropTypes удалён окончательно. Если в проекте остался legacy на JS с PropTypes - придётся убрать или переехать на TS.
  • Старые legacy context API убраны. Затрагивает старые библиотеки.
  • Strict Mode стал ещё строже к side effects в render - пара компонентов с грязным эффектом начала вести себя иначе.
  • Часть устаревших string refs, function components с createElement шаблонов больше не работают.

Turbopack: production-ready для dev

В 15 Turbopack для dev-сервера стал стабильным. На большом проекте время холодного старта dev упало с 18 до 4 секунд, hot reload - с 700 мс до 90 мс. Production-build пока ещё на webpack.

Стоит ли обновляться сейчас

  • Если проект на Pages Router - нет смысла торопиться, основные плюсы 15 - про App Router.
  • Проекты на App Router 14 - рекомендуем планировать апгрейд в Q1 2025, экосистема к этому времени окончательно подтянется.
  • Новые проекты - стартовать сразу на 15 + React 19, обратно никто переходить не будет.
Теги
#next.js#react 19#next.js 15#upgrade#web
Студия nordiqdev

Делаем мобильные приложения, веб-сервисы и AI на заказ

Если задача из текста выглядит знакомой и нужна команда, которая соберёт продукт - расскажите подробнее. Вернёмся в течение 24 часов с разбором.