JavaScript Framework’leri için SEO
JavaScript framework’leri için SEO — React, Next.js, Vue, Nuxt, Angular, Svelte ve Astro. Oluşturma modunun (SSR, SSG, CSR) Google’ın neyi dizine ekleyebileceğini nasıl belirlediği ve hangi framework’lerin kutudan çıktığı hâliyle SEO’yu en iyi ele aldığı.
Diller
JavaScript framework SEO’su oluşturma moduna iner: SSG ve SSR Googlebot’a önceden oluşturulmuş HTML verir; CSR ise başarılı olup olmayacağı değişen JavaScript çalıştırmasını gerektirir. Next.js ve Nuxt, yerleşik en fazla SEO desteğine sahiptir (SSR, SSG, ISR, metadata API’leri). CSR modundaki saf React ve Vue SEO için en riskli seçeneklerdir. Astro’nun island mimarisi varsayılan olarak SEO için mükemmeldir. Güvenilir dizine ekleme için Angular’ın @angular/ssr (eski adıyla Angular Universal) üzerinden SSR kullanması gerekir.
TL;DR — Çoğu JavaScript framework’ü sayfaları ziyaretçinizin tarayıcısında oluşturur (CSR). Bu kullanıcılar için iyi çalışır; ancak arama motorları JavaScript’i çalıştırmayabilir ve içeriğinizi kaçırabilir. Çözüm: sayfaları sunucuda (SSR) veya oluşturma zamanında (SSG) üreten bir framework modu kullanın. Next.js ve Nuxt bunu kolaylaştırır; saf React ve CSR modundaki Vue ek çalışma gerektirir.
JavaScript framework’lerinin SEO sorunları neden var?
Google, JavaScript’i tarama, oluşturma ve dizine ekleme aşamalarından geçirir; engellenen veya başarısız olan kaynaklar oluşturulan sonucu değiştirebilir. Evidence for this claim Primary standard or official documentation supporting the adjacent article claim. Scope: Protocol semantics and Search behavior are kept separate; no indexing, ranking, or migration-timing guarantee is inferred. Confidence: high · Verified: Google: JavaScript SEO basics Oluşturma modu ve metadata uygulaması, tek başına framework markasından daha önemlidir. Evidence for this claim Primary standard or official documentation supporting the adjacent article claim. Scope: Protocol semantics and Search behavior are kept separate; no indexing, ranking, or migration-timing guarantee is inferred. Confidence: high · Verified: web.dev: Rendering on the Web
Geleneksel web siteleri sunucudan eksiksiz HTML gönderir. Arama motoru tarayıcıları bu HTML’yi indirir ve içeriği hemen dizine ekler. JavaScript framework’leri çoğu zaman farklı çalışır: sunucu en küçük HTML dosyasını gönderir, ardından JavaScript gerçek sayfa içeriğini oluşturmak için tarayıcıda çalışır.
Bir arama motoru tarayıcısı JavaScript’inizi çalıştırmazsa (veya çalıştırıp bir şey başarısız olursa) boş bir sayfa görür. CSR SEO sorunu budur.
Oluşturma modları açıklaması
- SSG (static site generation) — sayfalar dağıtım zamanında HTML olarak oluşturulur. Tarayıcılar JavaScript gerektirmeyen eksiksiz HTML alır. SEO için en iyisi.
- SSR (server-side rendering) — sunucu her istek için HTML’yi güncel olarak oluşturur. Tarayıcılar eksiksiz HTML alır. SEO için yine mükemmel.
- CSR (client-side rendering) — JavaScript sayfayı tarayıcıda oluşturur. Tarayıcıların içeriği görmek için JavaScript çalıştırması gerekir. Google bunu yapabilir; ancak başarısızlıklar olur ve keşif daha yavaştır.
Kutudan çıktığı hâliyle SEO güvenliğine göre framework’ler
En güvenliler:
- Astro — varsayılan olarak statik HTML üretir; JavaScript yalnızca seçtiğiniz yerlerde
- Next.js — SSG, SSR ve ISR; eksiksiz metadata API’si; sektör standardı
- Nuxt — Vue ekosistemi için aynı olanaklar; mükemmel SSR/SSG desteği
Yapılandırma gerektirir:
- Angular — varsayılan olarak CSR; güvenli SEO için
@angular/ssr(eski adıyla Angular Universal) gerekir - React — varsayılan olarak CSR; SSR/SSG için Next.js veya React Router (framework modu) gerekir
- Vue — varsayılan olarak CSR; SSR/SSG için Nuxt gerekir
- Svelte — varsayılan olarak CSR; SvelteKit SSR/SSG desteği ekler
TL;DR — Teknik düzeyde JS framework SEO’su şunlarla ilgilidir: (1) ilk HTML yükü için oluşturma mimarisi, (2) yanıt gönderilmeden önce
<head>içine metadata eklenmesi, (3) framework’ün hydration ve bağlantı keşfini nasıl ele aldığı ve (4) ISR önbelleğinin güncelliğini yitirmesi. Next.js en eksiksiz yerleşik SEO araçlarına sahiptir (Metadata API, yerleşikapp/sitemap.ts, görsel optimizasyonu). Astro, mimarisi gereği SEO açısından en güvenli seçenektir.
Framework’e göre oluşturma modu, metadata API’si ve ISR desteği
Framework yetenekleri ve varsayılanları sürüme göre değişir; her framework’ün resmi belgelerinde doğrulayın. Evidence for this claim Primary standard or official documentation supporting the adjacent article claim. Scope: Protocol semantics and Search behavior are kept separate; no indexing, ranking, or migration-timing guarantee is inferred. Confidence: high · Verified: web.dev: Rendering on the Web Hiçbir oluşturma modu dizine eklenmeyi veya sıralamayı garanti etmez. Evidence for this claim Primary standard or official documentation supporting the adjacent article claim. Scope: Protocol semantics and Search behavior are kept separate; no indexing, ranking, or migration-timing guarantee is inferred. Confidence: high · Verified: Google: JavaScript SEO basics Bir karar için framework’leri karşılaştırırken her adayda aynı rotaları, içeriği, dağıtım hedefini ve araçları test edin — bunlardan herhangi birini değiştiren bir benchmark framework’ü değil, kurulum farkını ölçer.
| Framework | Varsayılan oluşturma | Yerleşik metadata API’si | SSR/SSG desteği | Ekosistem SEO desteği |
|---|---|---|---|---|
| Astro | SSG (islands) | Evet (<head> in .astro files, Content Collections for structured data) | İkisi de | Güçlü |
| Next.js | SSR/SSG (yapılandırılabilir) | Evet (App Router’da Metadata API) | İkisi + ISR | Mükemmel |
| Nuxt | Varsayılan olarak SSR | Evet (useHead, useSeoMeta) | İkisi + ISR | Mükemmel |
| SvelteKit | Varsayılan olarak SSR | Evet (svelte:head) | İkisi de | İyi |
| React Router (framework modu) | Varsayılan olarak SSR | Evet (meta export) | SSR + Deferred | İyi |
| Angular | Varsayılan olarak CSR | Angular Meta/Title servisleriyle | @angular/ssr ile | Orta |
| React (bare) | CSR | Manuel (react-helmet-async; react-helmet bakımı yapılmıyor) | Next.js/Gatsby ile | Wrapper’a bağlı |
| Vue (bare) | CSR | Manuel (@unhead/vue; vue-meta bakımı yapılmıyor) | Nuxt ile | Wrapper’a bağlı |
Remix v2 ile React Router v7 birleşti — Remix’in sunucu oluşturma ve veri yükleme modeli artık React Router’ın “framework mode”u olarak dağıtılıyor ve Remix v2 uygulamaları için kararlı yükseltme yolu bu. Remix 3, Remix v2’nin halefi olmayan, ayrı ve deneysel, React’siz bir yeniden yazımdır (beta); onu bir React kod tabanı için doğrudan kullanılabilir SSR seçeneği olarak görmeyin.
Metadata zamanlaması, taranabilir bağlantılar ve ISR önbelleğinin güncelliğini yitirmesi
Metadata ekleme zamanlaması — Metadata (<title>, <meta>) sayfa yüklendikten sonra JavaScript tarafından eklenmemeli, sunucu yanıtında bulunmalıdır. Next.js’in Metadata API’si, Nuxt’un useSeoMeta’sı ve Astro’nun <head> bileşeni bunu doğru şekilde ele alır. CSR modunda document.title = '...' veya React Helmet bunu yapmaz — ilk HTML sunulduktan sonra çalışır.
Bağlantı keşfi — Googlebot, HTML’yi ayrıştırarak bağlantıları keşfeder. JavaScript ile eklenen bağlantılar (onClick, <a> etiketi olmadan dinamik yönlendirme) keşfedilmeyebilir. Önemli gezinme için gerçek <a href> öğeleri kullanın.
Hydration ve yinelenen içerik — SSR ve CSR farklı içerik oluşturursa (hydration uyuşmazlığı), dizine eklenen içerik kullanıcıların gördüğü içerikle eşleşmeyebilir. Tarayıcı konsolunda hydration hatalarını test edin.
Soft 404s — Client-side routers can silently render a “page not found” UI while returning a 200 HTTP status. Search engines index these as real pages. Make sure your 404 page returns a real 404 status, and server-side redirects return 301.
ISR önbelleği geçersizleştirme — Next.js ve Nuxt ISR kurulumlarında yeniden doğrulama penceresi sırasında tarayıcılara güncelliğini yitirmiş sayfalar sunulabilir. Zamana dayalı bir revalidate aralığı belirleyin; denetlemediğiniz bir zamanlamayla değişen içerik için (örneğin CMS kaydı), bunu webhook destekli bir rota işleyicisinden tetiklenen isteğe bağlı yeniden doğrulamayla birleştirin — tam API için Next.js ISR kılavuzuna bakın.
// app/blog/[id]/page.tsx — time-based revalidation
export const revalidate = 3600 // re-check this page at most once an hour
// app/api/revalidate/route.ts — on-demand revalidation, called by a CMS webhook
import { revalidatePath } from 'next/cache'
import { NextRequest, NextResponse } from 'next/server'
export async function POST(request: NextRequest) {
const { path, secret } = await request.json()
if (secret !== process.env.REVALIDATE_SECRET) {
return NextResponse.json({ message: 'Invalid secret' }, { status: 401 })
}
revalidatePath(path) // e.g. '/blog/1' — next request regenerates fresh HTML
return NextResponse.json({ revalidated: true })
} JavaScript framework SEO’su öncelikle oluşturma modu tarafından belirlenir. SSG (dağıtım zamanında statik HTML olarak oluşturulan sayfalar) ve SSR (istek başına sunucu tarafında oluşturulan sayfalar), arama motoru dizine eklemesi için güvenlidir. CSR (tamamen tarayıcıda JavaScript ile oluşturulan sayfalar) daha risklidir — Google JavaScript çalıştırabilir; ancak başarısızlıklar ve gecikmeler yaygındır, keşif de daha yavaştır.
Next.js (React meta-framework’ü): En eksiksiz yerleşik SEO desteği. App Router Metadata API’si, SSG/SSR/ISR, görsel optimizasyonu, yerleşik app/sitemap.ts (next-sitemap paketi artık yalnızca kapsamadığı uzantılar için gerekir), bağlantı düzeyinde prefetching. SEO’ya duyarlı React uygulamaları için sektör standardı.
Nuxt (Vue meta-framework’ü): Vue için eşdeğer yetenekler. Yerleşik useSeoMeta() ve useHead() composable’ları, SSR/SSG/ISR, Nuxt SEO modülü. Vue tabanlı siteler için mükemmel.
Astro: Island mimarisi varsayılan olarak sıfır JavaScript gönderir. Sayfalar statik HTML’dir; etkileşim açıkça “islands” eklenerek sağlanır. Varsayılan olarak tüm JS framework’leri içinde en güvenli SEO yaklaşımıdır. İçerik ağırlıklı siteler için harikadır.
SvelteKit: Varsayılan olarak SSR, svelte:head üzerinden mükemmel metadata desteği. En az yapılandırmayla sağlam SEO.
Angular: Varsayılan olarak CSR; güvenilir dizine ekleme için @angular/ssr (eski adıyla Angular Universal) gerekir. Tarihsel olarak büyük framework’ler arasında SEO açısından en sorunlu olanıdır.
React (bare): Varsayılan olarak CSR. SSR/SSG için Next.js, React Router (framework modu) veya Gatsby gerekir. Not: Remix v2’nin sunucu oluşturma modeli React Router v7/v8’e “framework mode” olarak birleşti — sürdürülen yükseltme yolu budur; ayrı ve deneysel React’siz Remix 3 beta değildir. Sıralanması gereken içerik için çıplak CRA/Vite-React kullanmayın.
Vue (bare): Aynı sorun geçerlidir. SEO açısından kritik Vue uygulamaları için Nuxt kullanın.
Svelte (bare): Varsayılan olarak CSR. SSR/SSG için SvelteKit kullanın.
JavaScript framework SEO kontrol listesi
Evrensel (tüm framework’ler için geçerli)
- Oluşturma modunu doğrulayın:
curl -s URL | grep "<title>"— title ham HTML’de görünmelidir -
<title>ve<meta name="description">etiketlerinin sunucu yanıtında olduğunu kontrol edin - Gezinilebilir tüm bağlantılar için gerçek
<a href>etiketleri kullanın (yalnızca click handler’ları değil) - 404 sayfalarının 200 değil, HTTP 404 döndürdüğünden emin olun
- Yönlendirmelerin
window.location.hrefdeğil, sunucu tarafı 301/302 kullandığından emin olun - Bir XML sitemap oluşturun ve gönderin
- Herkese açık dizininize
robots.txtekleyin
Next.js
- App Router Metadata API’sini (
metadataexport veyagenerateMetadata()) kullanın - Her rota için SSG (
generateStaticParams) veya SSR (dynamic = 'force-dynamic') seçin - Çoğu site için bir
app/sitemap.tsdosyası (App Router’ın yerleşik sitemap desteği) ekleyin; yerleşiknext-sitemaptürünün modellemediği alanlar arası sitemap’lere veya diğer uzantılara ihtiyacınız varsa yalnızcaMetadataRoute.Sitemappaketine başvurun - Tüm görseller için
next/imagekullanın (otomatik WebP, boyutlandırma, lazy-load) - ISR
revalidatedeğerlerini doğrulayın — sık güncellenen sayfalar için kısa pencereler belirleyin
Nuxt
- Her sayfa bileşeninde
useSeoMeta()veyauseHead()kullanın -
@nuxtjs/sitemapmodülünü kurun - Nuxt’un yerleşik SSR’sini (veya SSG için
nuxt generate) kullanın -
robots.txt’yi@nuxtjs/robotsüzerinden yapılandırın
Astro
- Her sayfada SEO props’larını
<BaseHead>bileşeninize geçirin - Astro’nun
@astrojs/sitemapentegrasyonunu kullanın - JavaScript island’larını küçük tutun — statik bölümleri island’lara dönüştürmekten kaçının
Angular
-
ng add @angular/ssrile SSR’yi etkinleştirin - Metadata için
MetaveTitleservislerini kullanın - Hydration sırasında API’nin iki kez getirilmesini önlemek için transfer state ekleyin
Framework derin incelemeleri
İlgili okumalar
Değişiklik günlüğü
8 Ağu 2026 tarihinde güncellendi.
Editoryal özet ve kaydedilen değişiklik ayrıntıları.Değişiklik ayrıntıları
-
Ayrıntılı değişiklik notları şu anda İngilizce olarak mevcut.
Tam karşılaştırma kullanılamıyor — bu sürüm için önceki anlık görüntü arşivlenmemiş.
19 Tem 2026 tarihinde güncellendi.
Editoryal özet ve kaydedilen değişiklik ayrıntıları.Değişiklik ayrıntıları
-
Ayrıntılı değişiklik notları şu anda İngilizce olarak mevcut.
-
Ayrıntılı değişiklik notları şu anda İngilizce olarak mevcut.
-
Ayrıntılı değişiklik notları şu anda İngilizce olarak mevcut.
-
Ayrıntılı değişiklik notları şu anda İngilizce olarak mevcut.
-
Ayrıntılı değişiklik notları şu anda İngilizce olarak mevcut.
-
Ayrıntılı değişiklik notları şu anda İngilizce olarak mevcut.
Tam karşılaştırma kullanılamıyor — bu sürüm için önceki anlık görüntü arşivlenmemiş.