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.