Pomiń do treści
Netova
Zespół Netova

10 Next.js Performance Tricks, które stosujemy w projektach klientów

10 Next.js Performance Tricks, które stosujemy w projektach klientów

Wydajność aplikacji internetowej ma bezpośredni wpływ na SEO, konwersję i doświadczenie użytkownika. Nawet najlepiej zaprojektowana strona nie spełni swojego zadania, jeśli ładuje się zbyt długo.

W Netova większość projektów budujemy w Next.js. Przez lata wypracowaliśmy zestaw praktyk, które pozwalają osiągać bardzo dobre wyniki w Google Lighthouse i Core Web Vitals.

Oto 10 technik, które stosujemy najczęściej.


1. Korzystaj z Server Components

Jeżeli komponent nie wymaga interakcji użytkownika, nie oznaczaj go jako Client Component.

export default async function Products() {
  const products = await getProducts();

  return (
    <>
      {products.map((product) => (
        <ProductCard key={product.id} product={product} />
      ))}
    </>
  );
}

Dzięki temu JavaScript wysyłany do przeglądarki jest znacznie mniejszy.


2. Dynamic Import dla ciężkich komponentów

Nie wszystko musi zostać pobrane od razu.

import dynamic from "next/dynamic";

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

To dobre rozwiązanie dla:

  • map
  • edytorów tekstu
  • wykresów
  • chatbotów
  • komponentów administracyjnych

3. Używaj komponentu Image

import Image from "next/image";

<Image src="/hero.webp" alt="Hero" width={1600} height={900} priority />;

next/image automatycznie:

  • kompresuje obrazy
  • generuje odpowiednie rozmiary
  • wykorzystuje lazy loading
  • poprawia wynik Largest Contentful Paint.

4. Cache danych

Jeżeli dane nie zmieniają się co sekundę, wykorzystaj cache.

export const revalidate = 3600;

lub

fetch(url, {
  next: {
    revalidate: 3600,
  },
});

Dzięki temu serwer nie wykonuje niepotrzebnych zapytań.


5. Nie pobieraj więcej danych niż potrzebujesz

Zamiast:

const products = await getProducts();

lepiej pobierać tylko wymagane pola.

Przykład GraphQL:

query {
  products(first: 6) {
    nodes {
      title
      handle
      featuredImage {
        url
      }
    }
  }
}

Mniej danych oznacza krótszy czas odpowiedzi.


6. Ogranicz liczbę Client Components

Każdy komponent z:

"use client";

powiększa ilość JavaScriptu.

Przenoś logikę na serwer wszędzie tam, gdzie to możliwe.


7. Fonty pobieraj lokalnie

import { Inter } from "next/font/google";

const inter = Inter({
  subsets: ["latin"],
});

Next.js automatycznie zoptymalizuje ładowanie fontów.


8. Korzystaj z TypeScript

TypeScript pozwala wykrywać błędy jeszcze przed uruchomieniem aplikacji.

interface Product {
  id: string;
  title: string;
  price: number;
}

Dzięki temu rozwój większych projektów jest znacznie bezpieczniejszy.


9. Lazy Loading komponentów

Sekcje znajdujące się na dole strony nie muszą być renderowane od razu.

Przykłady:

  • FAQ
  • mapa
  • opinie klientów
  • galerie
  • formularze kontaktowe

To poprawia czas pierwszego renderowania strony.


10. Regularnie analizuj Lighthouse

Po każdej większej zmianie warto sprawdzić:

  • Performance
  • Accessibility
  • Best Practices
  • SEO

Dzięki temu szybko wykryjesz elementy wymagające optymalizacji.


Podsumowanie

Wydajność nie jest jedną funkcją, którą można włączyć jednym kliknięciem. To efekt wielu drobnych decyzji podejmowanych podczas projektowania aplikacji.

Stosując Server Components, odpowiednie cache, optymalizację obrazów oraz ograniczając ilość JavaScriptu po stronie klienta, można osiągnąć bardzo dobre wyniki bez komplikowania kodu.

W Netova każdą aplikację projektujemy z myślą o wydajności od pierwszej linijki kodu. Dzięki temu tworzymy szybkie strony internetowe, sklepy Shopify oraz aplikacje Next.js, które dobrze skalują się wraz z rozwojem biznesu.

Potrzebujesz nowoczesnej strony lub aplikacji? Skontaktuj się z Netova.