JavaScript framework SEO
SEO untuk JavaScript frameworks — React, Next.js, Vue, Nuxt, Angular, Svelte, dan Astro. How rendering mode (SSR, SSG, CSR) determines what Google dapat indeks, dan which frameworks handle SEO best out dari box.
Bahasa
JavaScript framework SEO comes down untuk rendering mode: SSG dan SSR give Googlebot pre-dibangun HTML; CSR memerlukan JavaScript execution itu dapat atau dapat not succeed. Next.js dan Nuxt memiliki paling dibangun-di SEO mendukung (SSR, SSG, ISR, metadata APIs). Pure React dan Vue di CSR mode adalah riskiest untuk SEO. Astro's island architecture adalah excellent untuk SEO oleh default. Angular memerlukan SSR via @angular/ssr (formerly Angular Universal) untuk reliable pengindeksan.
TL;DR — sebagian besar JavaScript frameworks bangun halaman di Anda pengunjung’s browser (CSR). ini berfungsi fine untuk pengguna, tetapi mesin pencari mungkin not run JavaScript dan miss Anda konten. fix: gunakan framework mode itu membangun halaman pada server (SSR) atau di bangun time (SSG). Next.js dan Nuxt membuat ini easy; pure React dan Vue di CSR mode memerlukan extra berfungsi.
Why JavaScript frameworks memiliki SEO concerns
Google processes JavaScript melalui crawling, rendering, dan pengindeksan, dan blocked atau failed resources dapat perubahan rendered hasil. 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 rendering mode dan metadata implementation penting more daripada framework brand alone. 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
Traditional situs web kirim complete HTML dari server. mesin pencari crawler download itu HTML dan indeks konten immediately. JavaScript frameworks sering berfungsi differently: server mengirim sebuah minimal HTML file, dan lalu JavaScript runs di browser untuk bangun actual halaman konten.
jika sebuah mesin pencari crawler doesn’t run Anda JavaScript (atau runs ini tetapi something fails), ini sees sebuah empty halaman. itu’s CSR SEO masalah.
rendering modes dijelaskan
- SSG (static situs generation) — halaman adalah dibangun sebagai HTML di deploy time. crawler get complete HTML dengan no JavaScript diperlukan. Best untuk SEO.
- SSR (rendering sisi server) — server membangun HTML fresh untuk setiap permintaan. crawler get complete HTML. juga excellent untuk SEO.
- CSR (rendering sisi klien) — JavaScript membangun halaman di browser. crawler harus run JavaScript untuk see konten. Google dapat melakukan ini, tetapi failures happen dan penemuan adalah slower.
Frameworks oleh SEO safety out dari box
Safest:
- Astro — generates static HTML oleh default; JavaScript hanya where Anda opt di
- Next.js — offers SSG, SSR, dan ISR; full metadata API; industry standard
- Nuxt — sama untuk Vue ecosystem; excellent SSR/SSG mendukung
memerlukan configuration:
- Angular — CSR oleh default; perlu
@angular/ssr(formerly Angular Universal) untuk safe SEO - React — CSR oleh default; perlu Next.js atau React Router (framework mode) untuk SSR/SSG
- Vue — CSR oleh default; perlu Nuxt untuk SSR/SSG
- Svelte — CSR oleh default; SvelteKit menambahkan SSR/SSG mendukung
TL;DR — di technical tingkat, JS framework SEO adalah tentang: (1) rendering architecture untuk initial HTML payload, (2) metadata injection ke
<head>sebelum respons adalah dikirim, (3) how framework handles hydration dan tautan penemuan, dan (4) ISR cache staleness. Next.js memiliki paling complete dibangun-di SEO tooling (Metadata API, dibangun-diapp/sitemap.ts, image optimization). Astro adalah paling SEO-safe oleh architecture.
rendering mode, metadata API, dan ISR mendukung oleh framework
framework capabilities dan defaults perubahan oleh versi; verify them di setiap framework’s official documentation. 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 No rendering mode guarantees pengindeksan atau rankings. 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 When Anda’re comparing frameworks untuk sebuah decision, test yang sama routes, konten, deployment target dan tooling untuk setiap candidate — sebuah benchmark itu swaps apa pun dari itu isn’t measuring framework, ini adalah measuring difference di setup.
| framework | Default rendering | dibangun-di metadata API | SSR/SSG mendukung | Ecosystem SEO mendukung |
|---|---|---|---|---|
| Astro | SSG (islands) | Yes (<head> di .astro files, konten Collections untuk data terstruktur) | Both | Strong |
| Next.js | SSR/SSG (configurable) | Yes (Metadata API di App Router) | Both + ISR | Excellent |
| Nuxt | SSR oleh default | Yes (useHead, useSeoMeta) | Both + ISR | Excellent |
| SvelteKit | SSR oleh default | Yes (svelte:head) | Both | baik |
| React Router (framework mode) | SSR oleh default | Yes (meta export) | SSR + Deferred | baik |
| Angular | CSR oleh default | Via Angular Meta/Title services | Via @angular/ssr | Moderate |
| React (bare) | CSR | Manual (react-helmet-async; react-helmet adalah unmaintained) | Via Next.js/Gatsby | Depends pada wrapper |
| Vue (bare) | CSR | Manual (@unhead/vue; vue-meta adalah unmaintained) | Via Nuxt | Depends pada wrapper |
Remix v2 dan React Router v7 merged — Remix’s server rendering dan data-memuat model now ships sebagai React Router’s “framework mode,” (terjemahan) “framework mode,” dan itu’s stable upgrade path untuk Remix v2 apps. Remix 3 adalah sebuah separate, experimental React-less rewrite (beta), not successor untuk Remix v2 — don’t treat ini sebagai sebuah drop-di SSR option untuk sebuah React codebase.
Metadata timing, dapat di-crawl tautan, dan ISR cache staleness
Metadata injection timing — Metadata (<title>, <meta>) harus menjadi di
server respons, not ditambahkan oleh JavaScript setelah pemuatan halaman. Next.js’s Metadata API,
Nuxt’s useSeoMeta, dan Astro’s <head> component handle ini correctly.
document.title = '...' atau React Helmet di CSR mode melakukan not — ini runs setelah
initial HTML adalah disajikan.
tautan penemuan — Googlebot discovers tautan oleh parsing HTML. tautan ditambahkan via
JavaScript (onClick, dynamic routing without <a> tags) dapat not menjadi ditemukan.
gunakan nyata <a href> elements untuk penting navigation.
Hydration dan duplicate konten — jika SSR dan CSR render berbeda konten (hydration mismatch), Anda dapat end up dengan terindeks konten itu doesn’t match what pengguna see. Test untuk hydration errors di browser console.
Soft 404s — Client-side routers dapat silently render sebuah “page not found” (terjemahan) “halaman tidak ditemukan” UI while returning sebuah 200 HTTP status. mesin pencari indeks ini sebagai nyata halaman. pastikan Anda 404 halaman mengembalikan sebuah nyata 404 status, dan server-side redirects kembalikan 301.
ISR cache invalidation — di Next.js dan Nuxt ISR setups, stale halaman dapat menjadi
disajikan untuk crawler selama revalidation window. Set sebuah time-based revalidate
interval, dan untuk konten itu perubahan pada sebuah schedule Anda tidak control (sebuah CMS save,
misalnya), pair ini dengan pada-demand revalidation triggered dari sebuah webhook-backed
route handler — see Next.js ISR guide
untuk full API.
// 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 adalah primarily determined oleh rendering mode. SSG (halaman dibangun sebagai static HTML di deploy time) dan SSR (halaman rendered server-side per permintaan) adalah both safe untuk mesin pencari pengindeksan. CSR (halaman rendered entirely di browser via JavaScript) adalah riskier — Google dapat execute JavaScript, tetapi failures dan delays adalah umum, dan penemuan adalah slower.
Next.js (React meta-framework): sebagian besar complete dibangun-di SEO mendukung. App Router Metadata API, SSG/SSR/ISR, image optimization, dibangun-di app/sitemap.ts ( next-sitemap package adalah now hanya needed untuk extensions ini doesn’t cover), tautan-tingkat prefetching. Industry standard untuk SEO-sensitive React apps.
Nuxt (Vue meta-framework): Equivalent capabilities untuk Vue. dibangun-di useSeoMeta() dan useHead() composables, SSR/SSG/ISR, Nuxt SEO module. Excellent untuk Vue-based situs.
Astro: Island architecture ships zero JavaScript oleh default. halaman adalah static HTML; interactivity ditambahkan via explicit “islands.” (terjemahan) “islands.” Best SEO safety dari apa pun JS framework oleh default. Great untuk konten-heavy situs.
SvelteKit: SSR oleh default, excellent metadata mendukung via svelte:head. Solid SEO dengan minimal configuration.
Angular: CSR oleh default, memerlukan @angular/ssr (formerly Angular Universal) untuk reliable pengindeksan. Historically paling SEO-problematic dari major frameworks.
React (bare): CSR oleh default. memerlukan Next.js, React Router (framework mode), atau Gatsby untuk SSR/SSG. Note: Remix v2’s server-rendering model memiliki merged ke React Router v7/v8 sebagai “framework mode” (terjemahan) “framework mode” — itu’s maintained upgrade path, not separate, experimental React-less Remix 3 beta. Don’t gunakan bare CRA/Vite-React untuk konten itu harus peringkat.
Vue (bare): sama issue. gunakan Nuxt untuk SEO-critical Vue applications.
Svelte (bare): CSR oleh default. gunakan SvelteKit untuk SSR/SSG.
JavaScript framework SEO checklist
Universal (applies untuk semua frameworks)
- Verify rendering mode:
curl -s URL | grep "<title>"— judul harus appear di raw HTML - periksa bahwa
<title>dan<meta name="description">adalah di server respons - gunakan nyata
<a href>tags untuk semua navigable tautan (not hanya click handlers) - Ensure 404 halaman kembalikan HTTP 404, not 200
- Ensure redirects gunakan server-side 301/302, not
window.location.href - Generate dan submit sebuah sitemap XML
- tambahkan
robots.txtuntuk Anda public directory
Next.js
- gunakan App Router Metadata API (
metadataexport ataugenerateMetadata()) - Choose SSG (
generateStaticParams) atau SSR (dynamic = 'force-dynamic') per route - tambahkan sebuah
app/sitemap.tsfile (App Router’s dibangun-di sitemap mendukung) untuk sebagian besar situs; reach untuknext-sitemappackage hanya jika Anda perlu cross-domain sitemaps atau lainnya extensions dibangun-diMetadataRoute.Sitemapjenis doesn’t model - gunakan
next/imageuntuk semua images (automatic WebP, sizing, lazy-muat) - Verify ISR
revalidatenilai — set pendek windows untuk frequently-updated halaman
Nuxt
- gunakan
useSeoMeta()atauuseHead()di setiap halaman component - Install
@nuxtjs/sitemapmodule - gunakan Nuxt’s dibangun-di SSR (atau
nuxt generateuntuk SSG) - Configure
robots.txtvia@nuxtjs/robots
Astro
- Pass SEO props untuk Anda
<BaseHead>component pada setiap halaman - gunakan Astro’s
@astrojs/sitemapintegration - pertahankan JavaScript islands minimal — hindari converting static bagian untuk islands
Angular
- Enable SSR via
ng add @angular/ssr - gunakan
MetadanTitleservices untuk metadata - tambahkan transfer state untuk mencegah API double-fetching pada hydration
framework deep dives
Related reading
Log perubahan
Diperbarui 19 Jul 2026.
Ringkasan editorial dan detail perubahan yang tercatat.Detail perubahan
-
Catatan perubahan terperinci saat ini tersedia dalam bahasa Inggris.
-
Catatan perubahan terperinci saat ini tersedia dalam bahasa Inggris.
-
Catatan perubahan terperinci saat ini tersedia dalam bahasa Inggris.
-
Catatan perubahan terperinci saat ini tersedia dalam bahasa Inggris.
-
Catatan perubahan terperinci saat ini tersedia dalam bahasa Inggris.
-
Catatan perubahan terperinci saat ini tersedia dalam bahasa Inggris.
Perbandingan lengkap tidak tersedia — tidak ada cuplikan sebelumnya yang diarsipkan untuk revisi ini.