Вчера вышел Next 16.4

Команда Next.js теперь официально рекомендует Cache Components для всех Next.js-приложений. В новых проектах через create-next-app они уже включены по умолчанию, а в Next.js 17 эта модель вообще станет дефолтной.

Если кто следил за App Router с самого начала, тот знает, что отношения Next.js с кешированием были, мягко говоря, непростыми: что кешируется автоматически, что не кешируется, почему страница вдруг стала статической или динамической 🤪

С Cache Components идея становится более явной: нужную часть приложения можно пометить ‘use cache’ и самому определить, что имеет смысл кешировать.

При этом на одной странице можно смешивать закешированный UI и данные с тем, что должно рендериться непосредственно во время запроса.

В 16.4 также добавили ensureStatic - маркер, помечающий что страница должна оставаться статической. Если его поставить на страничку, а кто-нибудь потом добавит туда динамический контент, Next.js не молча поменяет поведение, а завалит build. Особенно актуально для больших проектов, где производительность страницы иначе начинает зависеть от того, помнит ли каждый разработчик все нюансы её рендеринга.

Ещё стало интереснее с prefetch: допустим, у нас страница сообщения с большим тредом. Можно заранее префетчить основную часть страницы, а загрузку самого треда через новый navigation() отложить до момента, когда пользователь действительно перейдёт по ссылке. То есть не выбирать между «загрузить заранее вообще всё» и «ничего не загружать», а контролировать, какая именно часть страницы нужна на каждом этапе навигации.

Из менее заметного, но приятного: disk cache Turbopack стал занимать на 20–25% меньше места, server HMR делает меньше ненужной работы, production bundles стали компактнее.

Плюс Next.js 16.4 приехал с React 19.3 — со стабильными View Transitions и Fragment Refs.

Для тех, кому не хватило ИИ в новости: появился upgrade flow для агентов. Next.js может подготовить инструкции по миграции, нужные codemods и проверки, а агент — провести проект через обновление. Есть даже экспериментальный agent feedback: агент может собрать проблемы, с которыми столкнулся при работе с Next.js, подготовить отчёт, а разработчик уже решает, отправлять его команде или нет.

Подробнее об этом тут: https://nextjs.org/blog/next-16-4