React SEO rehberi: istemci tarafı oluşturma dizine eklemeyi neden geciktirir, SSR veya ön oluşturma ne zaman seçilir, React 19'da meta etiketler ve yapay zekaya okunur kalmak.

Bu sayfada
Kısaca
React, Google'da sıralama alabilir; ancak varsayılan tek sayfalık uygulama neredeyse boş bir HTML dosyası gönderir ve içeriği göstermek için JavaScript'e dayanır. Bu da dizine eklemeyi geciktirir ve sayfayı yapay zeka tarayıcılarının çoğundan gizler. Güvenilir çözüm, HTML'i sunucudan sunmaktır: statik sayfaları derleme sırasında önceden oluşturun ya da sunucu tarafı oluşturmayı destekleyen bir çatı kullanın (Next.js, React Router). Ardından her URL'ye benzersiz bir başlık, açıklama ve kanonik adres verin, gerçek bağlantılar ve doğru durum kodları kullanın ve botların ne aldığını kontrol edin.
Daha fazlasını mı istiyorsunuz? Sorun:
Kısa test
SEO size uygun mu ve nasıl başlamalısınız?
Sorank yanıtlarınıza uyuyor
Kendi sitenizde 3 gün deneyin ve Google, ChatGPT ve diğer yapay zekâlarda nerede olduğunuzu görün.
3 gün ücretsiz deneyin3 gün ücretsiz, sonra istediğiniz zaman bırakın. 90 gün sonuç ya da para iade garantisi.
React SEO, bir React uygulamasını arama motorları ve yapay zeka asistanları için taranabilir, dizine eklenebilir ve anlaşılır hale getirme işidir. React'in kendisi tarafsızdır: sorunlar her şeyin tarayıcıda oluşturulmasından kaynaklanır. Google, JavaScript SEO temel bilgileri sayfasında JavaScript uygulamalarını üç aşamada (tarama, oluşturma, dizine ekleme) işlediğini ve sunucu tarafı oluşturmanın ya da ön oluşturmanın "sitenizi kullanıcılar ve tarayıcılar için hızlandırdığı ve her bot JavaScript çalıştıramadığı için hâlâ çok iyi bir fikir" olduğunu doğrular.
Tek sayfalık uygulama olarak oluşturulan bir React uygulaması, boş bir kök div ve bir script etiketinden ibaret bir HTML dosyası sunar. Tarayıcı JavaScript'i indirir, çalıştırır ve sayfayı kurar. Yalnızca HTML'i okuyan bir tarayıcı dizine eklenecek hiçbir şey görmez: ne başlık ne metin ne de bağlantı.
Googlebot JavaScript çalıştırır, ancak bunu ayrı bir adımda yapar: sayfa taranır, oluşturma kuyruğuna alınır, arayüzsüz bir Chromium'da oluşturulur ve ancak bundan sonra oluşturulan bağlantılar ve içerik kullanılır. Her ek adım bir hata fırsatıdır (betik hatası, engellenmiş API, zaman aşımı) ve yeni sayfaların aramada görünmesini geciktirir. JavaScript SEO rehberimiz bu süreci ayrıntılarıyla anlatıyor, Google'da dizine ekleme makalemiz ise sayfaların nasıl daha hızlı dizine eklendiğini açıklıyor.
Diğer botlar daha az sabırlıdır. Vercel'in Aralık 2024 tarihli analizi The rise of the AI crawler, "büyük yapay zeka tarayıcılarının hiçbirinin şu anda JavaScript oluşturmadığını" tespit etti ve GPTBot, ChatGPT-User, OAI-SearchBot, ClaudeBot ve PerplexityBot'u saydı. İstemci tarafında oluşturulan bir React sayfası, Google onu dizine eklese bile ChatGPT, Claude ve Perplexity için görünmezdir.
React ekibi artık yeni uygulamalara bir çatıyla başlamayı öneriyor. Create React App'i 14 Şubat 2025'te kullanımdan kaldırırken yaptığı duyuruda "sunucuda oluşturmanın SEO'yu iyileştirebileceğini" ve kullanıcıların içeriği görmeden önce indirmesi gereken JavaScript'i azaltarak performansı da artırdığını yazdı. Arama açısından en zayıftan en güçlüye seçenekler:
| Yaklaşım | Botların aldığı | SEO değerlendirmesi | Yaygın araçlar |
|---|---|---|---|
| İstemci tarafı oluşturma (SPA) | Boş HTML, içerik JavaScript'ten sonra | Zayıf: geciken dizine ekleme, yapay zeka tarayıcılarına görünmez | Vite + React, eski Create React App projeleri |
| Dinamik oluşturma | Yalnızca botlara önceden oluşturulmuş HTML | Geçici çözüm, Google önermiyor | Ön oluşturma hizmetleri, arayüzsüz tarayıcı proxy'leri |
| Derleme sırasında statik ön oluşturma | Bilinen her URL için eksiksiz HTML | Seyrek değişen içerik için çok iyi | React Router ön oluşturma, statik site üreticileri, Next.js statik dışa aktarma |
| Sunucu tarafı oluşturma | Her istekte eksiksiz HTML, ardından hidrasyon | Büyük veya sık güncellenen siteler için en iyisi | Next.js, React Router (çatı modu, eski adıyla Remix) |
Dinamik oluşturma konusunda Google dokümantasyonu açıktır: "geçici bir çözümdü, uzun vadeli bir çözüm değildi" ve Google bunun yerine sunucu tarafı oluşturmayı, statik oluşturmayı veya hidrasyonu önerir. Bir çatı seçiyorsanız Next.js SEO rehberimiz oluşturma modlarını, Metadata API'yi ve site haritalarını ayrıntılı olarak ele alıyor.
Geçiş mümkün değilse, Google biraz özenle tek sayfalık bir uygulamayı yine de dizine ekleyebilir. Tek sayfalık uygulama SEO rehberimiz koşulları listeliyor; bu makalenin geri kalanı her iki durum için de geçerlidir.
React 19'dan (5 Aralık 2024'ten beri kararlı) bu yana bileşenler title, meta ve link etiketlerini doğrudan oluşturabilir ve React bunları belgenin head bölümüne taşır. React 19 sürüm notları, bu yerleşik desteğin "yalnızca istemci uygulamaları, akışlı SSR ve Server Components ile" çalıştığını belirtir. React 19'dan önce bu işi react-helmet veya react-helmet-async gibi kütüphaneler yapıyordu ve rota bazında varsayılanları geçersiz kılmak için hâlâ kullanışlıdır.
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>
</>
)
}Yöntem ne olursa olsun üç kural geçerlidir:
Dikkat
Yalnızca istemci tarafında çalışan bir uygulamada, React'in oluşturduğu etiketler ancak JavaScript çalıştıktan sonra var olur. Google bunları oluşturmadan sonra okuyabilir; yapay zeka tarayıcıları ve sosyal ağların önizleme botlarının çoğu okuyamaz. Sunucuda oluşturma veya ön oluşturma, etiketleri herkes için HTML yanıtına koyar.
Google, "bağlantılarınızı yalnızca href özniteliğine sahip HTML a öğeleriyse keşfedebildiğini" belirtir ve farklı içerik yüklemek için URL parçalarının (fragment) kullanılmamasını önerir. React SEO sorunlarının çoğu yönlendirme ayrıntılarından gelir:
| Hata | Etkisi | Çözüm |
|---|---|---|
| div veya düğme üzerinde onClick ile gezinme | Google izleyecek bağlantı bulamaz | Yönlendiricinin href içeren bir a oluşturan Link bileşenini kullanmak |
| Hash rotaları (/#/urunler) | Google için tüm sayfalar tek bir URL'yi paylaşır | BrowserRouter veya bir çatıyla geçmiş tabanlı rotalar (/urunler) kullanmak |
| 200 durumuyla sunulan "bulunamadı" görünümü | Search Console'da "Soft 404" | Sunucudan gerçek bir 404 döndürmek ya da saf bir SPA'da JavaScript ile noindex eklemek |
| Yalnızca istemci tarafı yönlendirmeler | Yavaş veya atlanan yönlendirmeler | Taşınan sayfalar için sunucu tarafında 301 veya 308 yönlendirme kullanmak |
| Tıklama veya kaydırmayla yüklenen içerik | Metin tarayıcı için hiç oluşturulmaz | Ana içeriği yüklemede oluşturmak; listeleri gerçek URL'lerle sayfalara bölmek |
| robots.txt içinde engellenmiş JavaScript veya API | Google boş bir sayfa oluşturur | Sayfanın ihtiyaç duyduğu betiklere ve API uç noktalarına izin vermek |
Google'ın neyi oluşturduğunu görmek için Search Console'daki URL denetleme aracını kullanıp test edilen sayfanın HTML'ine bakın ya da önemli sayfa şablonlarını bir dizine eklenebilirlik denetleyicisinden geçirin.
React'in yerleşik bir site haritası yoktur. sitemap.xml dosyasını derleme sırasında rotalarınızdan ve verilerinizden (ya da çatınızın site haritası özelliğiyle) üretin, yalnızca 200 döndüren kanonik URL'leri listeleyin ve robots.txt içinde belirtin. Küçük bir statik site için bir XML site haritası oluşturucu yeterlidir.
Yapılandırılmış veri, meta verilerle aynı kurala uyar: JSON-LD betiğini sayfayla birlikte, aynı veriden ve tercihen sunucuda oluşturun. Google, JavaScript ile eklenen JSON-LD'yi oluşturmadan sonra okuyabilir; ancak ilk HTML'de bulunmayan işaretleme, oluşturma yapmayan tarayıcılar için de yoktur. Yazılar için Article, e-ticarette Product, tüm sitede Organization ve derin sayfalar için BreadcrumbList kullanın.
İpucu
Bir sayfa URL'si üzerinde curl çalıştırın ve çıktıda sayfanın H1 başlığını ve gövdeden bir cümleyi arayın. Bulamıyorsanız Google sayfayı oluşturmadan sonra dizine ekleyebilir, ancak yapay zeka tarayıcıları hiçbir şey görmez.
Büyük JavaScript paketleri Core Web Vitals değerlerine zarar verir: sayfa yanıt vermeden önce tarayıcı kodu indirmeli, ayrıştırmalı ve hidrasyonunu yapmalıdır; bu da özellikle mobilde Largest Contentful Paint ve Interaction to Next Paint üzerinde yük oluşturur. React ekibinin Create React App duyurusu, sunucuda oluşturmanın daha az JavaScript ve eksiksiz bir HTML belgesi gönderdiğini, bunun First Contentful Paint'i hızlandırdığını ve INP'yi düşürebileceğini belirtir. Pratik kaldıraçlar: React.lazy ile kodu rotaya göre bölmek, görselleri açık boyutlarla sunmak, ekranın alt kısmındaki bileşenleri geç yüklemek ve üçüncü taraf betikleri denetlemek.
GEO (üretken motor optimizasyonu) erişimle başlar. Yapay zeka tarayıcıları ham HTML'i aldığı için bir React sayfası, okunmak, özetlenmek ve alıntılanmak üzere metnini, başlıklarını ve JSON-LD'sini JavaScript olmadan sunmalıdır. Bir yapay zeka taranabilirlik denetimi, bu botların sayfalarınızdan ne aldığını gösterir. İkinci koşul alıntılanmaya değer içeriktir: her bölümde bir soruyu yanıtlayan, kaynak, rakam ve net tanımlar içeren sayfalar.
Bu içerik tarafını ürünümüz Sorank otomatikleştirir. Sorank, autopilot modunda çalışan bir SEO ve GEO yazılımıdır: Blog Makalesi Oluşturucu ayda 20, 60 veya 120 makaleyi kaynaklar, iç bağlantılar ve görsellerle yazıp yayımlar ve webhook aracılığıyla React veya Next.js sitesi gibi özel yapılara bağlanır. SEO Chat ise sitenizin arama performansıyla ilgili sorularınızı sohbet içinde yanıtlar.

Özetle: HTML'i sunucudan sunun, her URL'ye kendi başlığını, açıklamasını ve kanonik adresini verin ve gerçek bağlantılar kullanın. Böylece React diğer siteler gibi sıralama alır ve yapay zeka asistanları onu okuyabilir. Bu siteyi Google ve yapay zeka için hazırlanmış makalelerle sürekli beslemek için Sorank planlarına göz atın; aylık 49 dolardan başlar ve 3 günlük ücretsiz deneme sunar.
Hayır. React bir kullanıcı arayüzü kütüphanesidir ve SEO'su sayfaların nasıl oluşturulduğuna bağlıdır. İstemci tarafında oluşturulan tek sayfalık bir uygulama boş HTML gönderir ve Google'ın oluşturma adımına dayanır; bu da dizine eklemeyi geciktirir ve içeriği yapay zeka tarayıcılarından gizler. Aynı React kodu sunucuda oluşturma veya statik ön oluşturmayla sunulduğunda klasik bir site gibi sıralama alır.
Evet. Googlebot JavaScript'i güncel bir Chromium sürümüyle çalıştırır, bu nedenle bir React uygulamasının tarayıcıda oluşturduğu içeriği dizine ekleyebilir. Oluşturma taramadan sonra gerçekleşir ve betikler hata verirse ya da API'ler engellenirse gecikebilir veya başarısız olabilir. Search Console'daki URL denetleme aracı, oluşturulmuş HTML'i Google'ın gördüğü şekliyle gösterir.
Basit durumlarda gerekmez. React 19, title, meta ve link etiketlerini herhangi bir bileşenden oluşturur ve belgenin head bölümüne taşır. Site genelindeki varsayılanları rota bazında geçersiz kılmanız veya eski React sürümlerini desteklemeniz gerektiğinde react-helmet-async gibi kütüphaneler kullanışlı olmaya devam eder.
SORANK'I SİZDEN ÖNCE DENEDİLER
