Next.js SEO Rehberi
Next.js sitenizi taranabilir, dizine eklenebilir ve sıralanabilir hâle getirme rehberi; iki router'ı, SSG/SSR/ISR/Server Components oluşturma kiplerini, App Router Metadata API'sini, sitemap.ts'yi, robots.ts'yi, next/image'i, next/link'i ve sessizce sorun çıkaran hataları kapsar.
Diller
Next.js, doğru kullanıldığında JavaScript SEO'sunun en zor sorunlarını büyük ölçüde çözer. App Router'ın Server Components varsayılanı ile SSG/ISR, içeriği oluşturma kuyruğunda bekletmeden HTML'ye koyar; yerleşik Metadata API, başlıkları, canonical'ları ve Open Graph verisini sunucuda çözer; sitemap.ts ile robots.ts dosya kurallarıdır. Framework altyapıyı sağlar ama etiketlerinizi sizin yerinize yazmaz. Eksik metadataBase, LCP görselinde priority bulunmaması, Client Component'ten export edilen metadata ve 200 dönen 404 görünümleri öngörülebilir hatalardır.
TL;DR — Next.js, doğru kullanıldığında SEO için en güçlü framework’lerden biridir. Sayfalarınızı sunucuda veya derleme zamanında oluşturun (tamamını tarayıcıya bırakmayın), her sayfaya benzersiz bir başlık, açıklama ve canonical verin; yerleşik
next/imageilenext/linkbileşenlerini kullanın. Next.js size bütün araçları sunar, ancak SEO etiketlerinizi sizin yerinize yazmaz.
Next.js SEO nedir?
Next.js, web siteleri ve web uygulamaları geliştirmek için React üzerine kurulmuş popüler bir framework’tür. Temelinde React olduğu için sayfanın önemli bir bölümü JavaScript ile oluşturulabilir; SEO soruları da burada başlar. Next.js SEO, arama motorlarının bir Next.js sitesini tarayabilmesini, oluşturabilmesini ve dizine ekleyebilmesini sağlamak ve bunu framework’ün yerleşik özellikleriyle doğru yapmaktır.
İyi haber şu: Next.js sayfalarınızı önceden veya sunucuda oluşturabilir; böylece arama motorları tamamlanmış HTML’yi hemen alır. Bu, JavaScript sitelerindeki en büyük riski — içeriğin yalnızca betikler çalıştıktan sonra görünmesini — ortadan kaldırır. (Genel çerçeve için JavaScript SEO rehberine bakın.)
Büyük karar: sayfa nerede oluşturuluyor?
Birisi — ya da Googlebot — bir sayfa istediğinde tamamlanmış HTML nereden gelir? Next.js size birkaç seçenek sunar:
- Derleme zamanında (Static / SSG) — sayfa önceden düz bir HTML dosyasına dönüştürülür. Hızlıdır ve arama motorları her şeyi hemen görür.
- İstek başına sunucuda (SSR) — sunucu her istekte sayfanın tamamını oluşturur. Arama motorları için de uygundur ve içerik her zaman günceldir.
- Karma (ISR) — belirli aralıklarla yenilenen statik sayfalar. Çoğu içerik için iyi bir varsayılandır.
- Tarayıcıda (Client-Side / CSR) — sunucu neredeyse boş bir kabuk gönderir, JavaScript içeriği doldurur. SEO açısından riskli seçenek budur; ana içeriğinizde kullanmayın.
Modern App Router, varsayılan olarak Server Components kullanır. Bu da içeriğinizin otomatik olarak HTML’ye girmesi demektir; SEO için iyi bir başlangıçtır.
Basit kontrol listesi
- Her sayfaya benzersiz bir başlık ve açıklama verin.
- Her sayfada bir canonical URL ayarlayın.
- Görsellerde
next/imagebileşenini kullanın (görseller yüklenirken sayfanın sıçramasını önler ve dosyaları küçültür). - İç bağlantılarda
next/linkkullanın (Google’ın izleyebileceği gerçek bağlantılar üretir). - Ana içeriği istemci tarafı oluşturmaya bırakmayın.
- Bir sitemap ve robots.txt oluşturun (Next.js ikisi için de basit dosya tabanlı yöntemler sunar). Evidence for this claim Next.js App Router supports special metadata files for sitemap and robots output. Scope: Next.js App Router file conventions. Confidence: high · Verified: Next.js: Metadata files
İnsanların en sık yanıldığı nokta
“Next.js SEO’yu otomatik halleder.” Hayır, önemli kısımları otomatik halletmez. Next.js size mekanizmaları (metadata sistemi, sitemap ve robots kuralları, görsel bileşeni) verir; ancak başlıkları, açıklamaları ve canonical’ları yine sizin yazmanız gerekir. Evidence for this claim Next.js provides metadata APIs, but developers supply page-specific metadata values. Scope: Next.js App Router metadata and generateMetadata APIs. Confidence: high · Verified: Next.js: Metadata and OG images Her sayfanın kendi değerleri olmalıdır. Her sayfanın aynı başlığı paylaştığı veya canonical’ı bulunmayan bir site, Next.js derlemesinin düşük performans göstermesinin en yaygın nedenidir. “Next.js handles SEO automatically.” (Türkçe çeviri) Bu ifade, arama motoru davranışının ilgili sınırını netleştirir.
Daha derin sürümü — iki router, Metadata API, metadataBase, LCP görseli ayarı ve dizine eklemeyi
sessizce bozan hatalar — mı istiyorsunuz? Advanced sekmesine geçin.
TL;DR — Next.js, doğru kullanıldığında en zor JavaScript SEO sorunlarını varsayılan olarak çözer. App Router varsayılan olarak Server Components kullanır ve SSG/SSR/ISR’yi destekler; bunların hepsi oluşturulmuş HTML gönderdiği için oluşturma kuyruğunda bekleme olmaz. Metadata’yı yerleşik Metadata API (
metadata/generateMetadata) ile ayarlayın;metadataBaseyoksa canonical ve OG görselleriniz göreli URL’lere dönüşür.app/sitemap.tsileapp/robots.tsdosya kurallarını kullanın, dinamik rotalarıgenerateStaticParamsile önceden oluşturun, LCP görselindepriorityayarlayın ve bağlantıları gerçeknext/linkçapaları olarak bırakın. Pages Router danext/headüzerinden SEO’ya uygundur. Hatalar öngörülebilirdir; çoğu Next.js’in değil sizin yapılandırmanızın sonucudur.
Next.js burada nereye oturur?
Next.js is a React framework, so everything in JavaScript SEO applies. What makes it worth its own guide is that Next.js ships first-class answers to most JS-SEO problems: server rendering, static generation, a metadata system, and sitemap/robots conventions. The hard part isn’t whether Google can read it — Google has rendered JavaScript for years — it’s choosing the right rendering mode and not leaving the SEO basics unwired. This is a specialized case of headless CMS SEO: the CMS barely matters, the frontend’s rendering decisions decide everything.
Şu çerçeveyi akılda tutun: “Bu bir Next.js sitesi” demek, tek bir URL’nin nasıl sunulduğunu açıklamaz. Oluşturma kipi, önbellekleme ve Server/Client Component sınırları rota başına (bazen segment başına) belirlenir — aynı proje statik bir pazarlama sayfasını, SSR ürün sayfasını ve Client Component kullanan bir dashboard’u birlikte barındırabilir. Bir rotanın davranışını “uygulamanın tamamına” genellemeyin; belirli URL’yi test edin. “this is a Next.js site” (Türkçe çeviri) Cümle, ilgili HTTP davranışının sınırlarını pratik bir dille özetliyor.
İki router, iki farklı çalışma biçimi
Next.js’in iki router’ı vardır ve SEO’yu farklı şekilde ele alırlar:
- Pages Router (eski model) — veri alma
getStaticProps/getServerSidePropsile yapılır; metadata<Head>içindekinext/headile (veyanext-seopaketiyle) ayarlanır; Server Components yoktur. - App Router (v13+, güncel ve önerilen yaklaşım) — varsayılan olarak React Server Components;
yerleşik Metadata API (
metadataexport /generateMetadata);app/sitemap.tsveapp/robots.tsdosya kuralları; dinamik rotalar içingenerateStaticParams. Evidence for this claim The App Router uses Server Components and supports generateStaticParams plus metadata file conventions. Scope: Current Next.js App Router behavior; route rendering can become dynamic based on APIs used. Confidence: high · Verified: Next.js: Server and Client Components Next.js: generateStaticParams
İkisi de iyi sıralanabilir. App Router daha temiz ve bütünleşik bir metadata sistemi (yani next/head
ile uğraşma ihtiyacı yok) ve hazır Server Components sunar; yeni bir projede ilk tercihim bu yüzden
olur. Ancak “SEO için App Router zorunludur” bir efsanedir — Pages Router kullanan pek çok site iyi
sıralanıyor.
“App Router or you can’t do SEO” (Türkçe çeviri) Bu ifade, arama motoru davranışının ilgili sınırını netleştirir.
Oluşturma kipleri ve SEO açısından anlamları
How Google handles JavaScript is a three-phase pipeline — crawl, then a deferred render wave, then index. “All pages with a 200 HTTP status code are sent to the rendering queue.” The whole game in Next.js is choosing a mode that puts your content in the HTML before that render wave, so there’s nothing to wait for. Evidence for this claim Google crawls, renders, and indexes JavaScript pages, and successful pages can enter the rendering queue. Scope: Google Search processing, not a promise that a URL will be indexed. Confidence: high · Verified: Google: JavaScript SEO basics
- Static Site Generation (SSG) — sayfalar derleme zamanında önceden oluşturulur. HTML hemen hazırdır
ve oluşturma kuyruğu riski yoktur. Her dakika değişmeyen içerik için idealdir. Hangi dinamik rotaların
önceden oluşturulacağını App Router’da
generateStaticParams(), Pages Router’dagetStaticPaths()belirler. - Incremental Static Regeneration (ISR) — statik sayfalar belirli bir aralık sonunda yeniden doğrulanır
(
export const revalidate = 3600). Crawler’lar düşük TTFB ile statik HTML alır, içerik de güncel kalır. Güçlü bir varsayılandır; ancak bir tuzak vardır: pencere dolduktan sonraki ilk istek (Googlebot olabilir) yine eski sayfayı alır; güncel sürüm bir sonraki istekte sunulur. Gerçekten çok değişken verilerde (fiyat, stok) SSR daha güvenlidir. - Server-Side Rendering (SSR) — HTML istek başına oluşturulur. Tarayıcılar hemen tamamlanmış HTML alır;
karşılığında sunucu gecikmesini izlemek gerekir; TTFB ve LCP’ye dikkat edin.
export const dynamic = 'force-dynamic'veya istek zamanında kullanılan API’ler (cookies, headers) rotayı SSR’ye geçirir. - React Server Components (App Router varsayılanı) — sunucuda oluşturulur ve HTML gönderilir; bileşenin
kendisi için JavaScript gönderilmez. İçerik ilk yanıtta bulunur, hydration boşluğu yoktur. SEO için en iyi
varsayılandır. Etkileşim,
'use client'ile işaretlenen Client Components içindedir. - Client-Side Rendering (CSR) — tamamen tarayıcıda oluşturulur. Googlebot oluşturma dalgasından sonra
dizine ekleyebilir (ortanca süre ~10 saniyedir, ancak 90. yüzdelik dilim saatlere uzar); diğer tarayıcılar
— Bingbot, AI botları, sosyal önizleme botları — boş bir sayfa görebilir. App Router’da CSR isteğe bağlıdır
(
'use client'); Pages Router’da birincil içeriğiuseEffectiçinde almayın. Sıralanmasını istediğiniz içerikte CSR kullanmayın.
Kendime sıklıkla hatırlattığım nokta şu: “Googlebot bunu oluşturabilir” demek, “Googlebot’un oluşturmasını istemelisiniz” demek değildir. Oluşturma pahalıdır, ertelenir ve bütün tarayıcılar için geçerli değildir. “Googlebot can render it” (Türkçe çeviri) Bu cümle, uygulamadaki kararın dayandığı normatif noktayı açıklıyor. “you should make Googlebot render it.” (Türkçe çeviri) Alıntı, yanıtın kapsamını ve beklenen istemci davranışını birlikte gösteriyor.
Metadata API (App Router)
Metadata API yalnızca Server Component’lerde çalışır — metadata, sayfa oluşturulmadan önce sunucuda
çözülür ve ilk HTML’nin içine girer. metadata veya layout.js içinden page.js export edin:
export const metadata: Metadata = {
title: 'My Page',
description: 'Page description',
}Etiketler alınan verilere bağlıysa generateMetadata() kullanın:
export async function generateMetadata({ params }) {
const post = await getPost(params.slug)
return { title: post.title, description: post.description }
}SEO için önemli alanlar:
title— bir dizeyi, şablonu ('%s | Brand'), varsayılanı ve mutlak geçersiz kılmayı destekler. Şablonu kök layout’ta bir kez ayarlayın; sayfa başlıkları onu devralır.description,alternates.canonical(App Router’da canonical ayarlamanın doğru yolu),openGraph(görseller mutlak URL’lere çözülmelidir),twitter(LinkedIn ve Slack önizlemelerinde de kullanılır) verobots(index/follow ile max-snippet, max-image-preview gibi googleBot’e özel yönergeler).metadataBase— canonical ve OG görsel URL’lerinin doğru çözülmesi için zorunludur. Bunu unutmak Next.js metadata’sındaki en yaygın hatadır: göreli URL’ler canonical ve Open Graph etiketlerine sızar, sosyal önizlemeleri bozar ve canonical sinyallerini bulanıklaştırır.
Başlık şablonu örneği:
// app/layout.tsx
export const metadata: Metadata = {
metadataBase: new URL('https://example.com'),
title: { template: '%s | Brand Name', default: 'Brand Name' },
}
// app/blog/page.tsx
export const metadata: Metadata = { title: 'My Blog Post' }
// Output: <title>My Blog Post | Brand Name</title>İki tuzak. Birincisi, metadata layout’tan sayfaya sığ olarak birleştirilir — alt segmentte
tanımlanan openGraph gibi iç içe bir nesne, üst nesnenin tamamının yerini alır. Bu nedenle sayfa
seviyesindeki openGraph: { title: 'Home' }, layout’ta tanımlanmış openGraph.images değerini sessizce
atabilir. İkincisi — insanların gözden kaçırdığı nokta — metadata yalnızca Server Components’te
çalışır. 'use client' dosyasından export ederseniz hiçbir şey olmaz.
Akış metadata’sı. Dinamik oluşturulan sayfalarda generateMetadata, ilk HTML’den sonra metadata’yı
akışla gönderebilir. Googlebot JavaScript çalıştırıp tam DOM’u incelediği için akış metadata’sı Google için
çalışır. Ancak Next.js “HTML ile sınırlı botları” — Bingbot, Twitterbot, Slackbot, facebookexternalhit
— algılar ve bunlara bunun yerine <head> içinde engelleyici metadata gönderir. Next.js belgelerinin
ifadesiyle: “streaming metadata is disabled for bots and crawlers that expect metadata to be in the <head> tag.” (çeviri) “Akış metadata’sı, metadata’nın <head> etiketinde olmasını bekleyen botlar ve crawler’lar için devre dışıdır.”
Bu otomatik gerçekleşir; yapılandırma gerekmez. Çoğu rakip rehberin değinmediği bu ayrıntı, akışı
bekleyemeyen botlar için neden risk olmadığını açıklar. Önceden oluşturulan sayfalar tamamen farklıdır:
metadata derleme zamanında çözüldüğü için akış yoktur. Bu davranış sürüme özeldir (Next.js 16.2.10 itibarıyla
güncel); yükseltme yaptığınızda generateMetadata belgelerini yeniden kontrol edin. Ayrıca sunum yolları
giriş noktasına göre değiştiğinden metadata’yı tek değil iki şekilde doğrulayın: doğrudan/üretim isteği
(curl -I veya View Source) ve aynı rotaya istemci tarafı geçiş — <head> bu iki durumda farklı
güncellenebilir.
next/head ile metadata (Pages Router)
Pages Router’da metadata, <Head> içindeki next/head bileşeninde bulunur:
import Head from 'next/head'
export default function Page() {
return (
<>
<Head>
<title>My Page | Brand</title>
<meta name="description" content="Description" />
<link rel="canonical" href="https://example.com/my-page" />
</Head>
{/* page content */}
</>
)
}Başlık ve açıklamayı yalnızca _app.js’te değil, her sayfa için ayarlayın; sayfalandırılmış varyantlar
da dahil olmak üzere her sayfaya canonical koyun. next-seo paketi bunu <NextSeo> bileşeni ve yapılandırılmış
veri yardımcılarıyla standartlaştırır. App Router’a geçiş çoğunlukla next/head ve next-seo yerine yerleşik
metadata export’unu kullanmak demektir.
next-seo paketine ihtiyacınız var mı? Bu paket Next.js’in parçası olmayan, üçüncü taraf bir eklentidir;
metin yazıldığı sırada v7,2,0 numaralı sürümde, etkin biçimde bakımı yapılmakta ve arşivlenmiş değildir. Kendi
belgeleri rolünü açıkça anlatır: App Router’da standart meta etiketleri için README, generateMetadata yerine
Next.js’in yerleşik metadata/<NextSeo> export’unu önerir; Pages Router’da ise <NextSeo>,
next/head üzerinde makul bir kolaylık katmanıdır. Paketin App Router’da hâlâ sunduğu kullanım, bazı ekiplerin
ArticleJsonLd etiketini elle yazmaya tercih ettiği JSON-LD yardımcı bileşenleridir
(FAQPageJsonLd ile useAppDir, <script type="application/ld+json"> vb.). Sonuç: yeni bir App Router projesinde önce yerleşik
Metadata API’ye yönelin; paket isteğe bağlıdır, zorunlu değildir ve bakımcıları da bunu söylüyor.
Sitemap’ler
App Router’da app/sitemap.ts, /sitemap.xml çıktısı üreten bir dosya kuralıdır:
import type { MetadataRoute } from 'next'
export default function sitemap(): MetadataRoute.Sitemap {
return [
{ url: 'https://acme.com', lastModified: new Date(), priority: 1 },
{ url: 'https://acme.com/blog', lastModified: new Date(), priority: 0.8 },
]
}Büyük sitelerde generateSitemaps() birden çok dosyaya böler (Google’ın sınırı sitemap başına
50 000 URL’dir); her dosya /.../sitemap/[id].xml altında sunulur. Sitemap çıktısı ayrıca görsel
sitemap’lerini, video sitemap’lerini ve yerelleştirilmiş alternates.languages alanını destekler.
Pages Router’da next-sitemap kullanın veya pages/sitemap.xml.js ile getServerSideProps üretin.
robots.txt
app/robots.ts, robots dosyanızı programlı olarak üretir:
export default function robots(): MetadataRoute.Robots {
return {
rules: [{ userAgent: '*', allow: '/', disallow: '/private/' }],
sitemap: 'https://acme.com/sitemap.xml',
}
}Kullanıcı aracısına özel kurallar ve birden çok sitemap desteklenir. Pages Router statik bir
public/robots.txt kullanır. Her iki router’da da yanılmamanız gereken kural şudur: JavaScript veya
CSS’ye asla disallow uygulamayın — Google engellenen dosyalardan sayfayı oluşturamaz; JavaScript
framework’ünde bu, sayfayı tamamen boş bırakabilir.
next/image ve Core Web Vitals
next/image, SEO için framework’ü seçmenin en güçlü nedenlerinden biridir. Ekranın altındaki görselleri
gecikmeli yükler; alan ayırmak için width/height (veya fill) ister ve layout kaymasını / CLS’yi
önler; WebP/AVIF’i otomatik sunar ve srcset prop’undan doğru bir sizes üretir. En önemli CWV ayarı,
hero ya da ekranın üst kısmındaki görselde bulunan priority prop’udur; bu prop görseli önceden
yükleyerek LCP’yi hızlandırır:
<Image src="/hero.jpg" width={1200} height={630} priority alt="Hero" />LCP görselinde priority unutmak en yaygın Next.js CWV hatasıdır; gerçek Next.js sitelerinde CWV
sorunları da yaygındır (Salt Agency verileri için Stats sekmesine bakın). alt zorunludur: dekoratif
görsellerde boş bırakın, içerik görsellerinde açıklayıcı metin verin.
next/link ve iç bağlantılar
next/link, HTML içinde standart <a href> çapaları üretir; Google bunları normal şekilde izler. Ayrıca
üretimde görünür alan içindeki bağlantılar için istemci tarafı geçiş ve arka planda önceden getirme
özelliği sağlar. SEO kuralı basittir: iç bağlantılarda next/link kullanın; gerçek bir çapa üretmeyen
onClick işleyicisi veya JavaScript yönlendirmesiyle asla değiştirmeyin — bu bağlantılar taranamaz.
Gerekirse düşük değerli bağlantılarda bant genişliğinden tasarruf etmek için prefetch={false} kullanın.
Dinamik rotalar ve generateStaticParams
generateStaticParams(), Next.js’e hangi dinamik rotaların derleme zamanında önceden oluşturulacağını söyler:
// app/blog/[slug]/page.tsx
export async function generateStaticParams() {
const posts = await getPosts()
return posts.map((post) => ({ slug: post.slug }))
}Bu şekilde oluşturulan sayfalar tamamen statik HTML’dir ve SEO için en iyisidir. Bu fonksiyon olmazsa
dinamik rotalar varsayılan olarak isteğe göre (SSR) oluşturulur; bu da çalışır, ancak sunucu gecikmesini
geri getirir. Düzenli güncellenen içerik için revalidate (ISR) ile birleştirin. Önemli tüm dinamik
URL’lerin generateStaticParams içinde olduğundan emin olun; hiçbir şey oluşturma kuyruğunda beklemesin.
Yapılandırılmış veri (JSON-LD)
Metadata API’de yapılandırılmış veri alanı yoktur — JSON-LD’yi bir Server Component içindeki
<script> olarak ekleyin; böylece istemci bundle’ına maliyet yüklemeden sunucu tarafından oluşturulan
HTML’de kalır:
const jsonLd = { '@context': 'https://schema.org', '@type': 'Article', /* … */ }
return <script type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }} />Article/BlogPosting, BreadcrumbList, Product ve FAQPage en yaygın türlerdir. Her oluşturma değişikliğinden sonra Rich Results Test ile doğrulayın.
Yaygın Next.js SEO hataları
Gerçek denetimlerden ve yukarıdaki örüntülerden çıkanlar:
- Missing or relative canonicals — often from a forgotten
metadataBase, which also breaks OG image URLs. - No
priorityon the LCP image — the biggest CWV miss. - 404 views returning
200— use the built-innotFound()to return a real status; soft 404s are rampant on Next.js sites. metadataexported from a Client Component — silently does nothing; it’s Server Component only.- CSR for primary content — fetching critical content in
useEffectmeans non-Google crawlers get empty pages. - Hash (
#) routing instead of the History API — those views aren’t separately crawlable. - Not exporting
generateStaticParams— dynamic routes render on-demand instead of being pre-built. openGraphoverwritten by layout inheritance — child segments replace, not merge.- Blocking JS/CSS in robots.txt or via a Content Security Policy that stops Googlebot’s headless Chrome from loading scripts — test with URL Inspection.
Dağıtım notları
Next.js, Vercel tarafından geliştirilir; orada barındırmak (statik ve ISR sayfaları için edge CDN, iyi
TTFB) sıkı bir entegrasyon sağlar ama zorunlu değildir. Tarayıcılara güvenilir sinyal vermek için kalıcı
yönlendirmeleri redirects() içindeki next.config.js ile tanımlayın (308 veya permanent: true ile 301),
güvenlik ve önbellek başlıklarını headers() üzerinden ayarlayın; sayfa başına X-Robots-Tag metadata’sı
uygun olmadığında yol tabanlı noindex kuralları için robots yanıt başlıklarını kullanın.
Neyi nerede kontrol etmeli? Önbellek durumu, durum kodları, yönlendirmeler ve akış metadata’sı tek bir testte görünmez; bir rota bir kontrolde iyi görünüp başka birinde bozuk olabilir:
| Kontrol | Bakılacak yer | Oluşturulmuş görünümden neden farklı olabilir |
|---|---|---|
| Önbellek/yeniden doğrulama yaşı | Doğrudan isteğin yanıt başlıkları (curl -I) | ISR, pencere dolduktan hemen sonraki istekte eski sayfayı sunabilir |
| Doğrudan HTTP durumu | Oluşturulmuş arayüz değil, üretim URL’sinde curl -I | notFound() çağrılmadan gösterilen “bulunamadı” görünümü yine 200 döndürür |
| Yönlendirme davranışı | Yönlendirmeyi tetikleyen gerçek bağlam — Server Action içindeki redirect(), Route Handler veya istemcide onClick | Durum kodu ve yanıt yolu yalnızca hedefe değil çağrı bağlamına da bağlıdır |
| Akış metadata’sı | Aynı rotaya doğrudan istek ve istemci tarafı geçiş | Sıradan istemciler akış metadata’sı alabilir; HTML ile sınırlı botlar engelleyici metadata alır; iki yol aynı değildir |
| İstemci tarafı geçişler | Uygulama içinde geçiş yapın, sonra <head>’i yeniden kontrol edin | İlk yüklemede doğru olan bir rota, istemci geçişinden sonra sapabilir |
Bunların hiçbiri framework tarafından garanti edilmez — Next.js mekanizmaları (redirects(), notFound(),
yeniden doğrulama, akış) sağlar; ancak önbellek anahtarları, geçersizleştirme, önizleme durumu ve dağıtım
yapılandırması hâlâ sizin sorumluluğunuzdadır. Bunları yalnızca yerelde değil üretimde de test edin.
Son bir dinamik oluşturma notu — botlara önceden oluşturulmuş HTML, kullanıcılara JavaScript sunmak. Google bunu bir öneri olarak kullanımdan kaldırdı: “dynamic rendering was a workaround and not a long-term solution.” (çeviri) “Dinamik oluşturma bir geçici çözümdü ve uzun vadeli bir çözüm değildi.” Next.js’te buna zaten ihtiyacınız yok; SSR, SSG, ISR ve Server Components içeriği doğal olarak HTML’ye koyar. Bir denetimde karşınıza çıktığında tanıyabilmeniz için adını bilin, ancak bunun üzerine kurulum yapmayın.
İdeal yol: App Router + Server Components + ISR + Metadata API (metadataBase ile) + next/image ayarlı
priority. Bunları doğru kurduğunuzda Next.js SEO’sunun büyük kısmı kendiliğinden hallolur.
AI özeti
Advanced sürümün kısaltılmış özeti:
- Next.js JS SEO sorunlarının çoğunu varsayılan olarak çözer — doğru oluşturma kipini seçer ve temelleri bağlarsanız. Framework altyapıyı sağlar; etiketlerinizin hiçbirini sizin yerinize yazmaz.
- İki router: App Router (v13+, önerilen) Server Components ve yerleşik Metadata API’yi kullanır;
Pages Router
next/head/next-seokullanır. İkisi de sıralanabilir. - Oluşturma kipleri: SSG ve Server Components en iyi varsayılandır (içerik HTML’de, oluşturma kuyruğu beklemesi yok). ISR güçlü bir orta yoldur, ancak yeniden doğrulamadan sonraki ilk isteğin eski sürümü sunması tuzağına dikkat edin. Değişken veriler için SSR; CSR risklidir — Google dışındaki tarayıcılar boş sayfa alabilir.
- Metadata API (App Router):
metadataexport’u veyagenerateMetadata(), yalnızca Server Component’te çalışır.metadataBasezorunludur, yoksa canonical ve OG görselleri göreli olur. Alt segmenttekiopenGraphüsttekini değiştirir;'use client'dosyasındaki metadata hiçbir şey yapmaz. - Akış metadata’sı Google’da çalışır; Next.js HTML ile sınırlı botlara (Bingbot, Twitterbot, Slackbot, facebookexternalhit) otomatik olarak engelleyici metadata gönderir.
- Dosya kuralları:
app/sitemap.ts(50 000+ URL içingenerateSitemaps()ile) veapp/robots.ts..js/.cssdosyalarını asla engellemeyin. next/imageCLS’yi önler, WebP/AVIF sunar; LCP görselineprioritykoymak en büyük CWV kazanımıdır.next/linktaranabilir gerçek<a href>çapaları üretir ve önceden getirir.generateStaticParamsdinamik rotaları önceden oluşturur; olmadan isteğe göre oluşturulurlar.- JSON-LD, Server Component’te bir
<script>ile eklenir (Metadata API’de alanı yoktur). next-seopaketi isteğe bağlıdır, zorunlu değildir. Etkin biçimde bakımı yapılan üçüncü taraf yazılımdır (v7,2,0, arşivlenmiş değil); kendi belgeleri App Router meta etiketleri için yerleşikgenerateMetadata/metadataexport’unu önerir.<NextSeo>esas olarak Pages Router’da veya JSON-LD yardımcı bileşenleri için kullanışlıdır.- Oluşturma kipi proje başına değil rota başına belirlenir — bir URL’nin davranışını diğerinden varsaymayın; belirli rotayı hem doğrudan istekle hem istemci geçişiyle test edin.
- Başlıca hatalar: eksik
metadataBase, LCP’depriorityyok,200dönen bulunamadı görünümleri (notFound()kullanın), Client Component’temetadata, birincil içerikte CSR. - Dinamik oluşturma kullanımdan kaldırıldı — buna ihtiyacınız yok; SSR/SSG/ISR/Server Components yeterlidir.
Resmî belgeler
Next.js ve arama motorlarından birincil kaynak belgeleri.
Next.js
- Metadata and OG Images (Next.js belgeleri) — App Router metadata sistemi,
metadataBaseve OG görsel üretimi. - generateMetadata API Reference (Next.js belgeleri) — statik
metadatailegenerateMetadata, akış metadata’sı ve HTML ile sınırlı botlar. - sitemap.xml File Convention (Next.js belgeleri) —
app/sitemap.ts,generateSitemaps()ve yerelleştirilmiş/görsel sitemap’leri. - robots.txt File Convention (Next.js belgeleri) —
app/robots.ts, kullanıcı aracısı kuralları ve birden çok sitemap. - Learn: SEO (Next.js) — Next.js’in kendi SEO öğrenme yolu (giriş düzeyinde; kısmen App Router’dan öncedir).
- Understand JavaScript SEO Basics — tarama → oluşturma → dizine ekleme hattı, 200 durumlu oluşturma kuyruğu, SPA’lerde soft bulunamadı sayfaları, canonical’lar ve History API.
- Dynamic Rendering (deprecated workaround) — Google’ın neden bunu kullanımdan kaldırdığı ve yerine ne kullanılması gerektiği (SSR, statik oluşturma, hydration).
- In-Depth Guide to How Google Search Works — oluşturmanın tarama → dizine ekleme → sunma sürecindeki yeri.
Bing / Microsoft
- IndexNow / indexnow.org — Next.js yayınlama/yeniden doğrulama olayına bağlanabilecek push protokolü.
Kaynaktan alıntılar
Google, Next.js ve Google temsilcilerinin kayda geçmiş açıklamaları. Her bağlantı, alıntılanan bölüme götüren doğrudan bir bağlantıdır.
Google — JavaScript sayfaları nasıl işlenir?
- “All pages with a 200 HTTP status code are sent to the rendering queue, no matter whether JavaScript is present on the page.” — Google Search Central docs. Jump to quote
Google — dinamik oluşturma kullanımdan kaldırıldı
- Kural: Bu karar çerçevesi, Next.js SEO için incelemenin ilgili noktasını kısa bir örnekle somutlaştırır; kanıtı ve doğru kullanım kararını Türkçe olarak uygulayın. Kaynak Kaynak “Dynamic rendering was a workaround and not a long-term solution for problems with JavaScript-generated content in search engines.” (Türkçe çeviri) Bu kaynak cümlesi, kontrol listesindeki teknik gerekçeyi destekliyor. “…creates additional complexities and resource requirements.” (Türkçe çeviri) Bu alıntı, ilgili protokol sınırını kısa ve açık biçimde belirtiyor.
Next.js — akış metadata’sı ve HTML ile sınırlı botlar
- “Streaming metadata is disabled for bots and crawlers that expect metadata to be in the
<head>tag (e.g. Twitterbot, Slackbot, Bingbot).” (çeviri) “Akış metadata’sı, metadata’nın<head>etiketinde olmasını bekleyen botlar ve crawler’lar için devre dışıdır.” — Next.js belgeleri,generateMetadata. Alıntıya git
John Mueller, Google (Search Engine Journal kapsamı üzerinden)
- JavaScript’in SEO’da artan rolü hakkında: “You’re going to run into significantly more JavaScript over the next years than in the 2-ish decades in SEO before. If you’re keen on technical SEO, then past HTML you’re going to need to understand JS more and more.” (çeviri) “Önümüzdeki yıllarda SEO’da, önceki yaklaşık iki on yılda karşılaştığınızdan çok daha fazla JavaScript göreceksiniz. Teknik SEO ile ilgileniyorsanız HTML’nin ötesinde JS’yi giderek daha iyi anlamanız gerekecek.” Kapsamı okuyun
Next.js SEO kontrol listesi
Bir Next.js sitesinin taranabilir, dizine eklenebilir ve hızlı olduğunu doğrulamak için hızlı bir tur:
- Primary content renders in HTML on first request (Server Components / SSG / SSR / ISR) — not only after client-side JavaScript.
- No important page depends on CSR for its main content.
- Every page has a unique title and description (use a title
templatein the root layout). -
metadataBaseis set in the root layout (App Router) so canonicals and OG images are absolute. - A canonical is set per page via
alternates.canonical(App Router) or<link rel="canonical">(Pages Router) — not a single shared homepage canonical. -
metadatais exported only from Server Components, never a'use client'file. -
generateStaticParamscovers all important dynamic routes. -
app/sitemap.ts(ornext-sitemap) outputs a current sitemap;generateSitemaps()shards sites over 50k URLs. -
app/robots.ts/public/robots.txtexists and does not block.jsor.css. - Images use
next/imagewithwidth/heightorfill; the LCP image haspriority; all havealt. - Internal links use
next/link(real<a href>) — noonClick-only navigation. - 404 views call
notFound()and return a real404(no soft 404s). - JSON-LD is injected in a Server Component
<head>/body and passes the Rich Results Test. - Permanent redirects live in
redirects()innext.config.js(308 /permanent).
Zihinsel modeller
1. Ürün, oluşturma kipidir. Bir Next.js sitesinde herhangi bir şeyi ayıklamadan önce şu soruyu yanıtlayın: Bu rota nasıl oluşturuluyor? Server Components / SSG / SSR / ISR içeriği HTML’ye koyar ve düşük risklidir; riskli olan CSR’ddir. Next.js SEO sorunlarının neredeyse tamamı bu soruya dayanır.
2. Framework içerik değil altyapı sağlar. Next.js Metadata API, sitemap/robots kuralları ve Image bileşenini sunar; ancak başlıklarınızı, açıklamalarınızı, canonical’larınızı veya yapılandırılmış verinizi yazmaz. “Next.js SEO’yu otomatik halleder” bu alandaki en pahalı efsanedir. “Next.js handles SEO automatically” (Türkçe çeviri) Bu ifade, arama motoru davranışının ilgili sınırını netleştirir.
3. URL’ler için tek doğru kaynak.
metadataBase’i bir kez ayarlayın; canonical’ları, OG görsellerini ve sitemap girdilerini buradan (mutlak,
asla göreli olmayan) üretin. Tek bir temel URL, göreli canonical ve bozuk OG görseli sınıfındaki hataları
ortadan kaldırır.
4. Önce Server Components, yalnızca gerektiğinde Client Components.
İçerik ve metadata’nın HTML’ye girmesi için varsayılanı Server Components yapın. Etkileşim gerektiğinde
'use client' kullanın; metadata’nın Client Component’ten gelemeyeceğini unutmayın.
5. Oluşturma için karar kuralı. Çoğunlukla statik (blog, doküman, pazarlama) → SSG (veya zamanlayıcılı ISR). Her zaman güncel / değişken (fiyat, stok) → SSR. Saatlik/günlük değişiyor ve statik hız istiyorsanız → ISR (eski sayfanın ilk istekte sunulması tuzağına dikkat). Etkileşimli, giriş arkasında ve dizine eklenmeyecek → CSR uygundur. Sıralanmasını istediğiniz herkese açık içerikte asla CSR kullanmayın.
Next.js SEO — hızlı başvuru
Oluşturma kipleri
| Kip | HTML nerede oluşturulur | SEO | En uygun kullanım | Dikkat edilmesi gereken |
|---|---|---|---|---|
| SSG | Derleme zamanı → statik | ✅ En iyi | Çoğunlukla statik içerik | Yeniden derlemeye kadar eski kalır |
| Server Components | Sunucu (App Router varsayılanı) | ✅ En iyi | Çoğu içerik | Etkileşim için Client Components gerekir |
| ISR | Statik + zamanlı yenileme | ✅ İyi | Saatlik/günlük içerik | Yeniden doğrulama sonrası ilk istek eskidir |
| SSR | Sunucu, istek başına | ✅ İyi | Her zaman güncel veriler | Daha yüksek TTFB / altyapı maliyeti |
| CSR | Tarayıcıda | ⚠️ Riskli | Giriş arkasındaki dashboard’lar | Google dışı tarayıcılara boş sayfa |
App Router ve Pages Router karşılaştırması
| Özellik | App Router | Pages Router |
|---|---|---|
| Metadata | metadata / generateMetadata | next/head + next-seo |
| Server Components | Varsayılan | Kullanılamaz |
| Akış metadata’sı (bot farkındalığı) | Var | Yok |
| Sitemap | app/sitemap.ts | next-sitemap / manuel |
| Robots | app/robots.ts | public/robots.txt |
| Canonical | alternates.canonical | <link rel="canonical"> içinde <Head> |
| Veri alma | async Server Components | getStaticProps / getServerSideProps |
Hızlı kurallar
metadataBaseayarlayın; yoksa canonical/OG görselleri göreli olur.metadatayalnızca Server Component’te çalışır —'use client'export’ları hiçbir şey yapmaz.- Alt segmentteki
openGraph, üsttekini değiştirir (birleştirmez). - LCP görselinde
priority= en büyük CWV kazanımı. - İç bağlantılar =
next/link(gerçek<a href>); yalnızcaonClickile gezinme yok. - 404 →
notFound()çağırın (gerçek404, soft 404 değil). .js/.cssdosyalarını asla disallow etmeyin.- Akış metadata’sı → Bingbot, Twitterbot, Slackbot, facebookexternalhit için engelleyici metadata.
- Dinamik oluşturma: kullanımdan kaldırıldı — SSR / SSG / ISR / Server Components kullanın.
Next.js derlemesi için hızlı kontroller
Tam bir crawler çalıştırmadan önce birkaç komut satırı kontrolü.
İçeriğiniz ham HTML’de mi (yoksa yalnızca JS çalıştıktan sonra mı)?
macOS / Linux:
# Raw HTML as the server sends it — the "first fetch", before any client JS
curl -sL -A "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" \
https://example.com/page/ -o raw.html
# Is your headline actually in the raw HTML? (empty result = CSR / JS-dependent)
grep -o "Your headline text" raw.html
# Did metadataBase do its job? Canonical and OG URLs should be absolute, not relative
grep -iE 'rel="canonical"|og:(url|image)' raw.htmlWindows (PowerShell):
$ua = "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
Invoke-WebRequest -Uri "https://example.com/page/" -UserAgent $ua -OutFile raw.html
Select-String -Path raw.html -Pattern "Your headline text"
Select-String -Path raw.html -Pattern 'rel="canonical"','og:url','og:image'Başlık raw.html içinde yok ama tarayıcınızda görünüyorsa rota istemci tarafında oluşturuluyordur. Canonical
veya OG görsel URL’leri göreli çıkıyorsa metadataBase’i unutmuşsunuzdur.
Next.js _next dizini dahil JS/CSS’yi engellemediğinizi doğrulayın
macOS / Linux:
curl -sL https://example.com/robots.txt | \
grep -iE "disallow.*\.(js|css)|Disallow:\s*/_next"Windows (PowerShell):
(Invoke-WebRequest "https://example.com/robots.txt").Content |
Select-String -Pattern "Disallow.*\.(js|css)","Disallow:\s*/_next"Buradaki herhangi bir eşleşme neredeyse her zaman hatadır — Google engellenen dosyalardan sayfayı oluşturamaz.
Düz bir curl JavaScript çalıştıramaz; bu nedenle oluşturulmuş DOM için URL Inspection’daki
“View Crawled Page → rendered HTML” görünümünü kullanın.
“View Crawled Page → rendered HTML.” (Türkçe çeviri) Bu ifade, kaynakta belirtilen temel HTTP kuralını özetliyor.
Next.js sitesini denetlemek için araçlar
- URL Inspection (Google Search Console) — doğruluk kaynağıdır. Canlı test çalıştırın; ardından
oluşturulmuş HTML’yi, ekran görüntüsünü ve sayfa kaynaklarını (yüklenen ve engellenenler)
görüntüleyerek CSR boşluklarını ve engellenen
_nextkaynaklarını yakalayın. - Rich Results Test — her oluşturma değişikliğinden sonra JSON-LD’nin oluşturulmuş çıktıya girdiğini doğrulayın.
- Lighthouse / Chrome DevTools — LCP, CLS ve INP’yi ölçün; hero görselinizin önceden yüklenip
yüklenmediğini (
priority) kontrol edin. - Ahrefs Site Audit — JavaScript oluşturarak tarar; frontend genelinde eksik/göreli canonical’ları, bozuk metadata’yı, yönlendirme zincirlerini ve dizine eklenebilirlik sorunlarını ortaya çıkarır.
- Screaming Frog SEO Spider — ham ve oluşturulmuş HTML’yi karşılaştırmak ve taşıma öncesi/sonrası taramalar yapmak için JS oluşturmayı açıp kapatarak tarayın.
- Bing Webmaster Tools — Bing’in URL Inspection aracı ve IndexNow gönderimlerinin göründüğü yer.
Next.js’te kaçınılması gereken hatalar
Gerçek Next.js derlemelerinde SEO’yu sessizce bozan somut örüntüler — trafik düştükten sonra ayıklamak yerine yayına almadan önce engelleyin.
Kök layout’ta metadataBase olmadan yayına çıkmak
Neden yanlış: metadataBase olmadan alternates.canonical ve openGraph.images, mutlak URL yerine
göreli yollara çözülür. Göreli canonical, canonical’laştırma sinyallerini karıştırabilir; göreli OG görsel
URL’leri de sosyal ağlarda ve mesajlaşma uygulamalarında bağlantı önizlemelerini bozar.
Bunun yerine: metadataBase: new URL('https://example.com') değerini app/layout.tsx içinde bir kez
ayarlayın ve her sayfanın devralmasını sağlayın. Ham HTML getirmesine karşı grep -iE 'rel="canonical"|og:(url|image)' ile kontrol edin; URL’ler https:// ile başlamalıdır.
Alt segmentte layout’un openGraph’ını ezmek
Neden yanlış: metadata layout’tan sayfaya sığ olarak birleştirilir. Sayfa düzeyindeki
openGraph: { title: 'Home' }, layout’un openGraph.images alanıyla birleşmez; tüm nesnenin yerini alır
ve görselleri sessizce düşürür.
Bunun yerine: geçersiz kıldığınız her seviyede görseller dahil tam openGraph nesnesini tekrarlayın
veya yalnızca değiştirmek istediğiniz üst düzey metadata alanlarını geçersiz kılın; layout’un varsayılanı
uygunsa openGraph’a dokunmayın.
Client Component’ten metadata export etmek
Neden yanlış: Metadata API yalnızca Server Component’te çalışır. 'use client' export eden dosyaya
metadata eklerseniz export hiçbir şey yapmaz — hata veya uyarı verilmez; yalnızca başlığı ve
açıklaması olmayan bir sayfa oluşur.
Bunun yerine: metadata / generateMetadata export’larını page.tsx içermeyen düz bir Server
Component dosyasında (layout.tsx veya 'use client') tutun. Sayfada istemci etkileşimi gerekiyorsa bunu ayrı
bir alt bileşene koyup içeri aktarın; metadata export’unu barındıran dosyaya 'use client' eklemeyin.
useEffect içinde birincil içerik almak (veya tamamen CSR’ye güvenmek)
Neden yanlış: yalnızca tarayıcıda oluşturulan içerik ilk HTML’de bulunmaz. Google sonunda bunu oluşturur, ancak ortanca gecikme gerçektir ve 90. yüzdelik dilim saatlere uzar; Google dışındaki tarayıcılar (Bing, sosyal önizleme botları ve çoğu AI crawler’ı) JavaScript’i hiç oluşturmaz, dolayısıyla boş sayfa görür.
Bunun yerine: dizine eklenmesini istediğiniz her şey için Server Components, SSG, ISR veya SSR’yi
varsayılan yapın. 'use client' ve useEffect ile veri almayı taranması gerekmeyen etkileşimli arayüzlere
(filtre bileşeni gibi, makalenin gövdesi değil) saklayın.
”Bulunamadı” görünümü için 200 döndürmek
Why it’s wrong: rendering a “not found” message without calling notFound() returns a
normal 200 status. That’s a soft 404 — Google can index the empty-content page instead of
recognizing it as missing, and soft 404s are one of the most common real-world Next.js SEO
problems.
Bunun yerine: rotanın gerçek bir notFound() döndürmesi için yerleşik 404 fonksiyonunu çağırın.
Bilinen eksik bir URL’de curl -I ile durum kodunu doğrudan doğrulayın; tarayıcıda ne oluşturulduğuna
bakmakla yetinmeyin.
Önemli dinamik rotalarda generateStaticParams atlamak
Neden yanlış: bu fonksiyon olmadan dinamik rotalar isteğe göre oluşturulmaya (SSR) geri döner. SEO için çalışmaya devam etse de o URL’nin her ilk isteğine — Googlebot’un isteği dahil — sunucu gecikmesi ekler.
Bunun yerine: önemli URL’leri (ürün sayfaları, blog yazıları, kategori sayfaları) generateStaticParams()
içinde listeleyerek önceden oluşturun; açılıştan sonra değişen içerik için revalidate (ISR) ile birlikte
kullanın.
Kendinizi test edin: Next.js SEO
Bir Next.js sitesini taranabilir, dizine eklenebilir ve hızlı yapmakla ilgili beş kısa soru. Her biri için bir yanıt seçin, sonra kontrol edin.
Vakit ayırmaya değer kaynaklar
İlgili yazılarım
- JavaScript SEO: A Definitive Guide — oluşturma, DOM eşliği, JavaScript’te canonical’lar, sitemap’ler ve Next.js’in üzerine kurulduğu oluşturma kipi tercihleri hakkındaki kapsamlı rehberim. Bu Next.js rehberi onun framework’e özel katmanıdır.
- The Beginner’s Guide to Technical SEO — oluşturma ve taramanın daha geniş çerçevede nereye oturduğu.
Konuşmalarım
- JavaScript SEO — Ungagged 2019 (SlideShare) — framework’lerin frontend’i backend’den nasıl ayırdığını ve Googlebot’un nasıl oluşturduğunu anlattığım sunum. (Sürekli not: slaytlardaki dinamik oluşturma önerisi artık güncel değildir; Google bunu kullanımdan kaldırdı.)
Sektörden
- Metadata ve OG Görselleri (Next.js belgeleri) — App Router metadata sistemi,
metadataBaseve OG görsel üretimi. - generateMetadata API Referansı (Next.js belgeleri) — statik ve dinamik metadata ile HTML ile sınırlı botlar / akış metadata’sı davranışı.
- sitemap.xml Dosya Kuralı (Next.js belgeleri) —
app/sitemap.ts,generateSitemaps()ve yerelleştirilmiş/görsel sitemap’leri. - Next.js Sitelerinde Yaygın SEO Sorunları (Salt Agency) — soft bulunamadı sayfaları ve LCP hataları hakkında 50 sitelik denetim çalışması.
- Google’ın Dizin Oluşturma Sürecinde JavaScript’i Ele Alması (Vercel) — nextjs.org’un kendi sunucu beacon’larından oluşturma zamanlaması verileri.
- Eksiksiz Next.js SEO Rehberi (Strapi) — oluşturma kipleri, metadata ve yapılandırılmış veriyi kapsayan kapsamlı framework rehberi.
- SEO için App Router ve Pages Router Karşılaştırması (Wisp) — iki router’ın SEO açısından odaklı karşılaştırması.
- r/TechSEO — oluşturma ve dizine ekleme sorunlarını ayıklayan topluluk.
Alıntılanmaya değer istatistikler
- Render timing is usually fast, occasionally very slow. Vercel’s analysis of 37 000+ server-beacon pairs on nextjs.org found a median render time of ~10 seconds, but a 90th percentile of ~3 hours and a 99th percentile of ~18 hours — which is exactly why you don’t want primary content waiting on the render queue. Source
- CWV and soft 404s are widespread on real Next.js sites. Salt Agency’s audit of 50
Next.js sites found 41/50 returning soft 404s (404 views at a
200status) and only 3/50 passing LCP thresholds — a reminder that the framework’s CWV advantages only help if you usenext/imagewithpriorityand return real status codes. Source
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ş.
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ş.
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ş.
6 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ş.
6 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ş.
6 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ş.
6 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.
-
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ş.
18 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.
Tam karşılaştırma kullanılamıyor — bu sürüm için önceki anlık görüntü arşivlenmemiş.