Skip to main content
Poradnik wydajności11 min czytania
Poradnik wydajności

Wydajność Next.js Osiągnij Lighthouse 95+

Konkretne techniki dla maksymalnej wydajności Next.js: LCP poniżej 1 sekundy, CLS bliskie zera, INP poniżej 50 ms. Dzięki tym metodom nasze projekty stale osiągają wyniki Lighthouse powyżej 95.

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. Strony z dobrymi wskaźnikami rankują średnio o 15–25% lepiej niż porównywalne strony ze słabymi wskaźnikami.

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ę. AVIF jest o 40–60% mniejszy niż JPEG przy tej samej jakości. 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 `