Przewodnik SEO dla React: dlaczego renderowanie po stronie klienta spowalnia indeksowanie, kiedy wybrać SSR lub prerendering, jak ustawić metatagi w React 19 i być czytelnym dla AI.

Na tej stronie
W skrócie
React może dobrze pozycjonować się w Google, ale domyślna aplikacja jednostronicowa wysyła prawie pusty plik HTML i potrzebuje JavaScriptu, by pokazać treść. To opóźnia indeksowanie i ukrywa stronę przed większością crawlerów AI. Niezawodne rozwiązanie to HTML z serwera: prerenderowanie stron statycznych podczas builda albo framework z renderowaniem na serwerze (Next.js, React Router). Następnie nadaj każdemu adresowi URL unikalny tytuł, opis i adres kanoniczny, używaj prawdziwych linków i kodów statusu oraz sprawdzaj, co dostają boty.
Chcesz dowiedzieć się więcej? Zapytaj
Szybki quiz
Czy SEO jest dla Ciebie i jak zacząć?
Sorank pasuje do Twoich odpowiedzi
Przetestuj go przez 3 dni na swojej stronie i zobacz, na czym stoisz w Google, ChatGPT i innych AI.
Wypróbuj 3 dni za darmo3 dni za darmo, potem rezygnujesz, kiedy chcesz. 90-dniowa gwarancja wyników lub zwrotu pieniędzy.
SEO w React to praca nad tym, by aplikacja React była skanowalna, indeksowalna i zrozumiała dla wyszukiwarek oraz asystentów AI. Sam React jest neutralny: problemy biorą się z renderowania wszystkiego w przeglądarce. Google potwierdza w podstawach SEO dla JavaScriptu, że przetwarza aplikacje JavaScript w trzech fazach (skanowanie, renderowanie, indeksowanie) i że renderowanie po stronie serwera lub prerendering „to nadal świetny pomysł, bo przyspiesza witrynę dla użytkowników i robotów, a nie wszystkie boty potrafią uruchomić JavaScript”.
Aplikacja React zbudowana jako aplikacja jednostronicowa dostarcza plik HTML, w którym jest niewiele więcej niż pusty główny div i tag script. Przeglądarka pobiera JavaScript, uruchamia go i buduje stronę. Robot, który czyta tylko HTML, nie widzi nic do zaindeksowania: ani nagłówków, ani tekstu, ani linków.
Googlebot uruchamia JavaScript, ale w osobnym kroku: strona jest skanowana, trafia do kolejki renderowania, jest renderowana w bezgłowym Chromium i dopiero potem wykorzystywane są wyrenderowane linki i treść. Każdy dodatkowy krok to szansa na błąd (błąd skryptu, zablokowane API, przekroczony limit czasu) i dodatkowe opóźnienie, zanim nowe strony pojawią się w wynikach. Nasz przewodnik po SEO dla JavaScriptu opisuje ten proces, a artykuł o indeksowaniu w Google pokazuje, jak przyspieszyć indeksowanie stron.
Inne boty są mniej cierpliwe. Analiza Vercel z grudnia 2024 roku, The rise of the AI crawler, wykazała, że „żaden z głównych crawlerów AI nie renderuje obecnie JavaScriptu”, wymieniając GPTBot, ChatGPT-User, OAI-SearchBot, ClaudeBot i PerplexityBot. Strona React renderowana po stronie klienta jest niewidoczna dla ChatGPT, Claude i Perplexity, nawet jeśli Google ją zaindeksuje.
Zespół React zaleca obecnie zaczynanie nowych aplikacji od frameworka. Wycofując Create React App 14 lutego 2025 roku, napisał w ogłoszeniu, że „renderowanie na serwerze może poprawić SEO”, a do tego poprawia wydajność, bo zmniejsza ilość JavaScriptu do pobrania przed wyświetleniem treści. Opcje od najsłabszej do najmocniejszej z punktu widzenia wyszukiwarek:
| Podejście | Co dostają boty | Ocena SEO | Typowe narzędzia |
|---|---|---|---|
| Renderowanie po stronie klienta (SPA) | Pusty HTML, treść po JavaScripcie | Słabe: opóźnione indeksowanie, niewidoczne dla crawlerów AI | Vite + React, stare projekty Create React App |
| Renderowanie dynamiczne | Prerenderowany HTML tylko dla botów | Obejście, Google go nie zaleca | Usługi prerenderingu, proxy z przeglądarką bezgłową |
| Statyczny prerendering podczas builda | Pełny HTML dla każdego znanego adresu | Bardzo dobre dla treści, które rzadko się zmieniają | Prerendering w React Router, generatory stron statycznych, statyczny eksport Next.js |
| Renderowanie po stronie serwera | Pełny HTML przy każdym żądaniu, potem hydracja | Najlepsze dla dużych lub często aktualizowanych witryn | Next.js, React Router (tryb frameworka, dawniej Remix) |
W sprawie renderowania dynamicznego dokumentacja Google jest jednoznaczna: „było obejściem, a nie rozwiązaniem długoterminowym”, a Google zaleca zamiast niego renderowanie po stronie serwera, renderowanie statyczne lub hydrację. Jeśli wybierasz framework, nasz przewodnik po SEO w Next.js szczegółowo omawia tryby renderowania, Metadata API i mapy witryny.
Jeśli migracja nie wchodzi w grę, Google i tak może zaindeksować aplikację jednostronicową, o ile zachowasz ostrożność. Nasz przewodnik po SEO aplikacji jednostronicowych wymienia warunki; dalsza część artykułu dotyczy obu przypadków.
Od React 19 (wersja stabilna od 5 grudnia 2024 roku) komponenty mogą bezpośrednio renderować tagi title, meta i link, a React przenosi je do head dokumentu. Informacje o wydaniu React 19 podają, że to natywne wsparcie działa „z aplikacjami wyłącznie klienckimi, strumieniowym SSR i Server Components”. Przed React 19 tę pracę wykonywały biblioteki takie jak react-helmet czy react-helmet-async, które nadal przydają się do nadpisywania wartości domyślnych dla poszczególnych ścieżek.
function ProductPage({ product }) {
return (
<>
<title>{`${product.name} | Shop`}</title>
<meta name="description" content={product.summary} />
<link rel="canonical" href={`https://example.com/p/${product.slug}`} />
<h1>{product.name}</h1>
</>
)
}Trzy zasady obowiązują niezależnie od metody:
Uwaga
W aplikacji wyłącznie klienckiej tagi renderowane przez React istnieją dopiero po uruchomieniu JavaScriptu. Google może je odczytać po renderowaniu, ale crawlery AI i większość botów podglądu w mediach społecznościowych już nie. Renderowanie na serwerze lub prerendering umieszcza je w odpowiedzi HTML dla wszystkich.
Google podaje, że „może wykryć Twoje linki tylko wtedy, gdy są elementami HTML a z atrybutem href”, i odradza używanie fragmentów URL do ładowania różnych treści. Większość problemów SEO w React wynika ze szczegółów routingu:
| Błąd | Skutek | Rozwiązanie |
|---|---|---|
| Nawigacja przez onClick na div lub przycisku | Google nie znajduje linku do śledzenia | Użyć komponentu Link routera, który renderuje a z href |
| Ścieżki z hashem (/#/produkty) | Dla Google wszystkie strony mają jeden adres | Użyć ścieżek opartych na historii (/produkty) z BrowserRouter lub frameworkiem |
| Widok „nie znaleziono” zwracany ze statusem 200 | „Soft 404” w Search Console | Zwrócić prawdziwy błąd 404 z serwera lub dodać noindex przez JavaScript w czystej SPA |
| Przekierowania wyłącznie po stronie klienta | Wolne lub pominięte przekierowania | Stosować przekierowania serwerowe 301 lub 308 dla przeniesionych stron |
| Treść ładowana po kliknięciu lub przewinięciu | Tekst nigdy nie jest renderowany dla robota | Renderować główną treść przy ładowaniu; dzielić listy na strony z prawdziwymi adresami |
| JavaScript lub API zablokowane w robots.txt | Google renderuje pustą stronę | Zezwolić na skrypty i endpointy API, których potrzebuje strona |
Aby zobaczyć, co renderuje Google, użyj narzędzia do sprawdzania adresów URL w Search Console i obejrzyj HTML testowanej strony albo sprawdź kluczowe szablony w narzędziu do badania indeksowalności.
React nie ma wbudowanej mapy witryny. Generuj sitemap.xml podczas builda z Twoich ścieżek i danych (albo funkcją mapy witryny we frameworku), umieszczaj tylko kanoniczne adresy zwracające 200 i wskaż plik w robots.txt. Dla małej strony statycznej wystarczy generator mapy witryny XML.
Dane strukturalne podlegają tej samej zasadzie co metadane: renderuj skrypt JSON-LD razem ze stroną, z tych samych danych, najlepiej na serwerze. Google potrafi odczytać JSON-LD wstrzyknięty przez JavaScript po renderowaniu, ale znaczniki nieobecne w początkowym HTML są nieobecne także dla robotów, które nie renderują. Używaj Article dla wpisów, Product w e-commerce, Organization w całej witrynie i BreadcrumbList dla głębokich stron.
Wskazówka
Uruchom curl na adresie strony i wyszukaj w wyniku jej nagłówek H1 oraz zdanie z treści. Jeśli ich nie ma, Google może zaindeksować stronę po renderowaniu, ale crawlery AI nie zobaczą niczego.
Duże paczki JavaScriptu szkodzą Core Web Vitals: przeglądarka musi pobrać, przeanalizować i zhydratować kod, zanim strona zacznie reagować, co obciąża Largest Contentful Paint i Interaction to Next Paint, zwłaszcza na urządzeniach mobilnych. Ogłoszenie zespołu React o Create React App przypomina, że renderowanie na serwerze wysyła mniej JavaScriptu i pełny dokument HTML, co przyspiesza First Contentful Paint i może obniżyć INP. Praktyczne dźwignie: dzielenie kodu według ścieżek za pomocą React.lazy, obrazy z jawnie podanymi wymiarami, leniwe ładowanie komponentów poniżej pierwszego ekranu i przegląd skryptów zewnętrznych.
GEO (optymalizacja pod silniki generatywne) zaczyna się od dostępu. Ponieważ crawlery AI pobierają surowy HTML, strona React musi dostarczać tekst, nagłówki i JSON-LD bez JavaScriptu, aby mogła zostać przeczytana, streszczona i zacytowana. Audyt dostępności witryny dla AI pokazuje, co te boty otrzymują z Twoich stron. Drugi warunek to treść warta cytowania: strony, które w każdej sekcji odpowiadają na jedno pytanie, ze źródłami, liczbami i jasnymi definicjami.
Tę część treściową automatyzuje Sorank, nasz produkt. Sorank to oprogramowanie SEO i GEO działające w trybie autopilot: Generator artykułów blogowych pisze i publikuje 20, 60 lub 120 artykułów miesięcznie ze źródłami, linkami wewnętrznymi i obrazami, a przez webhook łączy się z niestandardowymi stackami, takimi jak witryna w React lub Next.js. SEO Chat odpowiada w rozmowie na pytania o wyniki Twojej witryny w wyszukiwarce.

W skrócie: dostarczaj HTML z serwera, nadaj każdemu adresowi własny tytuł, opis i adres kanoniczny oraz używaj prawdziwych linków. Wtedy React pozycjonuje się jak każda inna witryna, a asystenci AI mogą ją czytać. Aby stale zasilać tę witrynę artykułami tworzonymi z myślą o Google i AI, zobacz plany Sorank, od $49 miesięcznie z 3-dniowym bezpłatnym okresem próbnym.
Nie. React to biblioteka interfejsów, a SEO zależy od sposobu renderowania stron. Aplikacja jednostronicowa renderowana po stronie klienta wysyła pusty HTML i polega na etapie renderowania w Google, co opóźnia indeksowanie i ukrywa treść przed crawlerami AI. Ten sam kod React udostępniany z renderowaniem na serwerze lub statycznym prerenderingiem pozycjonuje się jak klasyczna witryna.
Tak. Googlebot uruchamia JavaScript w aktualnej wersji Chromium, więc może indeksować treść, którą aplikacja React buduje w przeglądarce. Renderowanie odbywa się po skanowaniu i może się opóźnić lub nie powieść, jeśli skrypty zgłaszają błędy albo API są zablokowane. Narzędzie do sprawdzania adresów URL w Search Console pokazuje wyrenderowany HTML tak, jak widzi go Google.
W prostych przypadkach nie. React 19 renderuje tagi title, meta i link z dowolnego komponentu i przenosi je do head dokumentu. Biblioteki takie jak react-helmet-async pozostają przydatne, gdy trzeba nadpisywać domyślne wartości witryny dla poszczególnych ścieżek lub obsługiwać starsze wersje React.
WYPRÓBOWALI SORANK PRZED TOBĄ
