Next.js 16.2 - актуална версия
Защо производителността има значение през 2026 г.
Core Web Vitals са ранкиращ фактор за Google от 2021 г. и с всяка следваща година тежестта им расте. През 2026 г. разликата между бавен и бърз сайт се усеща директно в органичния трафик и конверсиите. Трите метрики, които Lighthouse измерва и Google следи:- Largest Contentful Paint (LCP) - колко бързо се зарежда основното съдържание. Цел: под 2.5 секунди.
- Interaction to Next Paint (INP) - колко бързо реагира страницата на потребителски взаимодействия. Цел: под 200ms. INP замени First Input Delay (FID) от март 2024 г.
- Cumulative Layout Shift (CLS) - колко се мести съдържанието по време на зареждане. Цел: под 0.1.
Оптимизация на изображения с next/image в Next.js 16
Изображенията са причина номер едно за лош Lighthouse score. В проекта, за който споменах, изображенията съставляваха над 70% от общото тегло на страниците. Всички бяха PNG файлове, сервирани в оригиналния си размер, без lazy loading, без оптимизация. Компонентът next/image решава повечето от тези проблеми автоматично - но в Next.js 16 има важни промени в API-то, за които трябва да знаеш.Breaking change: priority е deprecated, използвай preload
Едно от най-важните изменения в Next.js 16: prop-ът priority е deprecated в полза на по-ясния preload. Ако имаш съществуващ код с priority, той все още работи, но ще получаваш deprecation warning при build-а.Tsx
Breaking change: images.qualities е задължителен
От Next.js 16, конфигурационното поле images.qualities е задължително. Без него build-ът ще хвърли грешка. Причината: неограниченият достъп до quality параметъра позволяваше на злонамерени актьори да генерират безброй варианти на едно изображение.Javascript
Новият LRU disk cache за изображения
От версия 16.1.7 Next.js въведе LRU (Least Recently Used) disk cache за image optimization. Преди тази версия кешът на оптимизираните изображения можеше да расте неограничено - потенциална DoS уязвимост (CVE-2026-27980). Сега cache-ът автоматично изтрива най-рядко използваните записи когато се достигне лимитът. По подразбиране лимитът е 50% от наличното дисково пространство на сървъра.Javascript
Правилна употреба на next/image в Next.js 16
Tsx
Responsive изображения с fill и sizes
Tsx
Измерими резултати от image оптимизацията
Оптимизация на шрифтове с next/font
Google Fonts зареждани по класическия начин - <link> таг към fonts.googleapis.com - изискват допълнителни DNS lookup, TCP connection и HTTP заявки преди шрифтът да е наличен. Резултатът: FOUT (Flash of Unstyled Text) или FOIT (Flash of Invisible Text) и удар по LCP. next/font решава проблема изцяло: изтегля шрифтовете по време на build-а, хоства ги локално и елиминира всякакви external requests. В Next.js 16 поведението е непроменено, но конфигурацията сега се пише в next.config.ts (TypeScript по подразбиране с Turbopack).Google Fonts с next/font в Next.js 16
Tsx
Кирилица и subsets
Стратегия за font-display
- swap - показва fallback шрифт веднага, превключва към custom шрифта когато е готов. Може да причини FOUT, но е добър за LCP. Препоръчително за повечето проекти.
- optional - зарежда шрифта само ако е готов бързо (300ms), иначе използва fallback за цялата сесия. Най-добър за производителност, но потребителят може никога да не види custom шрифта при бавна мрежа.
- block - скрива текста докато шрифтът се зареди (FOIT). Избягвай за основни шрифтове.
Оптимизация на скриптове с next/script
JavaScript скриптовете на трети страни - Google Analytics, Facebook Pixel, chat widgets, A/B testing инструменти - са втората голяма причина за лош INP и TBT. Всеки от тях добавя latency и блокира main thread. next/script дава контрол върху кога и как се зарежда всеки скрипт. В Next.js 16 компонентът е непроменен, но контекстът около него се е променил: с Turbopack като default bundler и React Compiler, базовият JavaScript bundle вече е значително по-малък - което прави third-party скриптовете относително по-голям дял от общото натоварване.Четирите стратегии за зареждане
Tsx
Google Analytics 4 правилно в Next.js 16
Tsx
Забавено зареждане на chat widgets
За особено тежки скриптове комбинирай lazyOnload с условно зареждане след user interaction:Tsx
React Compiler - автоматична мемоизация
Едно от най-значимите нови неща в Next.js 16 е, че React Compiler е stable. React Compiler е инструмент, разработен от Meta, който автоматично мемоизира компонентите - елиминира ненужните ре-рендирания без ръчно useMemo, useCallback или React.memo.Typescript
React Compiler и ръчна мемоизация
use cache - новият подход към кеширането
В Next.js 15 и по-ранните версии кеширането беше имплицитно - fetch заявките се кешираха автоматично, освен ако изрично не ги изключеш. Това беше источник на объркване и неочаквани проблеми. В Next.js 16 кеширането е изцяло opt-in чрез директивата 'use cache'. По подразбиране всичко е динамично - изпълнява се при всяка заявка.Tsx
Вграден Bundle Analyzer в Next.js 16.1
От версия 16.1, Next.js има вграден Bundle Analyzer, работещ с Turbopack. Не е нужен отделен пакет @next/bundle-analyzer.Bash
Turbopack като default bundler
От Next.js 16, Turbopack е default bundler за всички проекти - не е нужна допълнителна конфигурация. В Next.js 16.2 dev server стартира ~400% по-бързо, а рендирането е ~50% по-бързо спрямо 16.1. За производителността на крайния потребител директният ефект е при build времето, а не при runtime. Но по-бързите builds означават по-бързи deploys, по-кратко CI/CD и по-малко чакане при итерации. Ако self-hostiш и имаш специфична Webpack конфигурация, провери дали е съвместима с Turbopack - повечето популярни плъгини вече са портирани, но все още има изключения.Пълен процес на оптимизация стъпка по стъпка
Чести грешки в Next.js 16
Грешка 1 - Все още използваш priority вместо preload. След upgrade към Next.js 16, priority показва deprecation warning при всеки build. Коди мигрирането е тривиално - просто смени prop наименованието. Грешка 2 - Липсващ images.qualities в next.config.ts. В Next.js 16 build-ът хвърля грешка ако images.qualities липсва. Добави го преди upgrade - qualities: [75, 85, 100] е добро начало за повечето проекти. Грешка 3 - preload на всички изображения. Виждал съм проекти, в които разработчикът е добавил preload на всяко next/image "за сигурност". Браузърът опитва да предзареди всичко паралелно, забавя LCP изображението и увеличава общото зареждане. Използвай preload само за изображения above the fold. Грешка 4 - Имплицитно кеширане от Next.js 15 в Next.js 16 проект. Ако мигрираш от Next.js 15, старите fetch заявки без cache опция вече не се кешират автоматично - всичко е dynamic по подразбиране. Провери кои данни трябва да се кешират и добави 'use cache' директивата. Грешка 5 - Inline скриптове без id в next/script. При dangerouslySetInnerHTML в next/script, задължителен id атрибут. Без него Next.js не може да дедуплицира скрипта при client-side navigation.Инструмент за проверка
Често задавани въпроси
priority ли или preload в Next.js 16?
Трябва ли да добавя images.qualities ако upgrade-вам от Next.js 15?
Трябва ли да включа React Compiler?
Как работи use cache в сравнение с ISR от Next.js 15?
Колко важен е Lighthouse score за Google ранкирането?
Производителността на Next.js 16 приложение не е еднократна задача - тя е навик и процес. Next.js 16.2 донесе значителни подобрения в dev experience, но основните принципи остават: next/image с preload (не priority) и задължителен qualities конфиг, next/font с правилния subset, next/script с правилната стратегия. Добавете React Compiler за автоматична мемоизация и use cache за предсказуемо кеширане - и имате основата на бързо, production-ready Next.js приложение за 2026 г. Сайт с 97 в Lighthouse, зареждащ се за 1.8 секунди на мобилно, ще надминава конкурент с теоретично 100, но бавен в реални условия - всеки път.