Перейти к содержимому
Фёдор Башинский

Оптимизация производительности в Next.js

2 min read
Обложка статьи «Оптимизация производительности в Next.js»

Производительность напрямую влияет на конверсию и позиции в поиске — Google учитывает Core Web Vitals как фактор ранжирования. Разберём основные рычаги оптимизации в Next.js.

Изображения

Компонент next/image автоматически:

  • подбирает нужный размер под устройство;
  • конвертирует изображения в современные форматы (WebP/AVIF);
  • лениво загружает картинки за пределами первого экрана;
  • предотвращает layout shift за счёт заранее заданных width/height.
<Image src="/cover.jpg" alt="Обложка статьи" width={1200} height={630} />

Шрифты

next/font загружает шрифты локально во время сборки и убирает лишние сетевые запросы к Google Fonts, а также автоматически применяет font-display: swap.

Code splitting и динамический импорт

Next.js по умолчанию делит код по страницам. Для тяжёлых компонентов ниже первого экрана (модалки, графики, редакторы) стоит использовать next/dynamic:

const Chart = dynamic(() => import("./Chart"), { ssr: false });

Кеширование

На Vercel статические ресурсы и SSG-страницы кешируются на CDN автоматически. Для API-роутов и динамических данных полезно настраивать revalidate в fetch или generateStaticParams с ISR (Incremental Static Regeneration).

Измерение результата

Прежде чем оптимизировать — измерьте. Lighthouse, PageSpeed Insights и встроенный Next.js Speed Insights показывают, где реально теряется время: LCP, CLS, INP.

Итог

Большая часть оптимизаций в Next.js включена по умолчанию. Остаётся аккуратно использовать next/image, next/font, code splitting и кеширование — и приложение будет быстрым без ручной микрооптимизации.