Przejdź do głównej treści
Poradnik wydajności11 min czytania
Poradnik wydajności

Wydajność Next.js: krótsze czasy ładowania, krok po kroku

Dla zespołów programistycznych i operatorów projektów Next.js: konkretne techniki poprawy czasu ładowania (LCP), stabilności układu (CLS) i responsywności (INP), dzięki którym Twoja strona działa szybciej, a Ty nie musisz długo szukać przyczyny.

Optymalizacja wydajności

Zrozumienie Core Web Vitals

Core Web Vitals od Google to kluczowe metryki wydajności dla SEO i doświadczenia użytkownika: LCP (Largest Contentful Paint): jak długo trwa załadowanie największego widocznego elementu strony? Cel: poniżej 2,5 sekundy, idealnie poniżej 1 sekundy. INP (Interaction to Next Paint): jak szybko strona reaguje na działania użytkownika? Cel: poniżej 200 ms, idealnie poniżej 50 ms. CLS (Cumulative Layout Shift): jak mocno elementy przesuwają się podczas ładowania? Cel: poniżej 0,1, idealnie 0,02 lub mniej. Next.js z założenia zapewnia lepsze warunki dla wszystkich trzech metryk niż WordPress czy klasyczne aplikacje SPA — ale błędne implementacje mogą te przewagi niwelować.
Google wykorzystuje Core Web Vitals jako czynnik rankingowy.

Optymalizacja obrazów z next/image

Obrazy są najczęstszym zabójcą LCP. Next.js `` rozwiązuje większość problemów automatycznie: Automatyczna konwersja do WebP/AVIF: Next.js dostarcza obrazy w najlepszym formacie obsługiwanym przez przeglądarkę. Przy tej samej jakości AVIF jest zwykle znacznie mniejszy niż JPEG. Lazy loading: obrazy poniżej widoku ładują się dopiero, gdy użytkownik przewija stronę. Poprawnie ustawia `loading="lazy"`. Flaga priority dla obrazów LCP: główny obraz (często hero) powinien mieć `priority`, aby ładował się wcześnie. Brak tej flagi to częsta przyczyna słabego LCP. Stałe wymiary: zawsze ustawiaj `width` i `height`, aby zapobiec CLS spowodowanemu przez późno ładowane obrazy. Rozmyty placeholder: `placeholder="blur"` pokazuje rozmyty placeholder podczas ładowania i zapobiega skokom wizualnym.
Częsty błąd: obraz hero bez flagi priority. Dodaj priority do wszystkich obrazów above-the-fold — często poprawia to LCP o 0,5–1,5 sekundy.

Wybór właściwej strategii renderowania

Next.js oferuje kilka trybów renderowania — zły wybór kosztuje wydajność: Static Generation (SSG): strony są renderowane w czasie build i serwowane jako statyczne pliki HTML. Najszybszy możliwy czas ładowania. Nadaje się do stron, które rzadko się zmieniają (landing page, wpisy blogowe). Incremental Static Regeneration (ISR): statyczne strony są odświeżane w tle. Idealne dla stron, które zmieniają się okazjonalnie (strony produktów, newsy). Parametr `revalidate` steruje częstotliwością aktualizacji. Server-Side Rendering (SSR): strony są renderowane przy każdym żądaniu. Niezbędne dla treści spersonalizowanych, ale wolniejsze. Uwaga: stosowanie SSR do wszystkiego to częsty błąd wydajnościowy. React Server Components (RSC): w App Router komponenty mogą renderować się po stronie serwera — bez wysyłania JavaScriptu do klienta. Zmniejsza rozmiar bundla i poprawia INP.

Problemy z wydajnością w Twoim projekcie Next.js?

Optymalizacja czcionek i zewnętrznych skryptów

next/font dla Google Fonts Nigdy nie osadzaj Google Fonts bezpośrednio przez CDN. `next/font/google` ładuje czcionki lokalnie i eliminuje żądanie sieciowe do serwerów Google — oszczędza 200–500 ms i poprawia ochronę prywatności. next/script dla zewnętrznych skryptów Analityka, widgety czatu, narzędzia testów A/B — wszystkie osadzaj z `