JavaScript kerangka kerja SEO
SEO untuk JavaScript kerangka kerja — React, Berikutnya.js, Vue, Nuxt, Angular, Svelte, dan Astro. Bagaimana rendering mode (SSR, SSG, CSR) determines apa Google dapat indeks, dan yang kerangka kerja tangani SEO best out dari box.
JavaScript kerangka kerja SEO muncul down untuk rendering mode: SSG dan SSR memberikan Googlebot pre-dibangun HTML; CSR memerlukan JavaScript execution itu dapat atau dapat tidak succeed. Berikutnya.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 melalui @angular/ssr (formerly Angular Universal) untuk reliable pengindeksan.
TL;DR — sebagian besar JavaScript kerangka kerja bangun halaman di Anda pengunjung’s browser (CSR). ini berfungsi fine untuk pengguna, tetapi mesin pencari mungkin tidak jalankan JavaScript dan miss Anda konten. perbaiki: gunakan kerangka kerja mode itu membangun halaman pada server (SSR) atau di bangun time (SSG). Berikutnya.js dan Nuxt membuat ini easy; pure React dan Vue di CSR mode memerlukan extra berfungsi.
Mengapa JavaScript kerangka kerja memiliki SEO concerns
Google memproses JavaScript melalui crawling, rendering, dan pengindeksan, dan blocked atau failed resources dapat perubahan dirender hasil. Bukti untuk klaim ini Primary standard or official documentation supporting the adjacent article claim. Cakupan: Protocol semantics and Search behavior are kept separate; no indexing, ranking, or migration-timing guarantee is inferred. Tingkat keyakinan: tinggi · Diverifikasi: Google: JavaScript SEO basics rendering mode dan metadata implementation penting lebih daripada kerangka kerja brand alone. Bukti untuk klaim ini Primary standard or official documentation supporting the adjacent article claim. Cakupan: Protocol semantics and Search behavior are kept separate; no indexing, ranking, or migration-timing guarantee is inferred. Tingkat keyakinan: tinggi · Diverifikasi: web.dev: Rendering on the Web
Tradisional situs web kirim menyelesaikan HTML dari server. mesin pencari crawler download itu HTML dan indeks konten immediately. JavaScript kerangka kerja sering berfungsi differently: server mengirim sebuah minimal HTML file, dan lalu JavaScript berjalan di browser untuk bangun sebenarnya halaman konten.
jika sebuah mesin pencari crawler tidak jalankan Anda JavaScript (atau berjalan ini tetapi sesuatu 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 mendapatkan menyelesaikan HTML dengan Tidak JavaScript diperlukan. Best untuk SEO.
- SSR (rendering sisi server) — server membangun HTML fresh untuk setiap permintaan. crawler mendapatkan menyelesaikan HTML. juga excellent untuk SEO.
- CSR (rendering sisi klien) — JavaScript membangun halaman di browser. crawler harus jalankan JavaScript untuk see konten. Google dapat melakukan ini, tetapi failures happen dan penemuan adalah lebih lambat.
Kerangka kerja oleh SEO safety out dari box
Safest:
- Astro — generates static HTML oleh default; JavaScript hanya di mana Anda opt di
- Berikutnya.js — offers SSG, SSR, dan ISR; penuh 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 Berikutnya.js atau React Router (kerangka kerja 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 teknis tingkat, JS kerangka kerja SEO adalah tentang: (1) rendering architecture untuk awal HTML payload, (2) metadata injection ke
<head>sebelum respons adalah dikirim, (3) bagaimana kerangka kerja menangani hydration dan tautan penemuan, dan (4) ISR cache staleness. Berikutnya.js memiliki paling menyelesaikan 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 kerangka kerja
kerangka kerja capabilities dan defaults perubahan oleh versi; verify them di setiap kerangka kerja’s dokumentasi resmi. Bukti untuk klaim ini Primary standard or official documentation supporting the adjacent article claim. Cakupan: Protocol semantics and Search behavior are kept separate; no indexing, ranking, or migration-timing guarantee is inferred. Tingkat keyakinan: tinggi · Diverifikasi: web.dev: Rendering on the Web Tidak rendering mode jaminan pengindeksan atau rankings. Bukti untuk klaim ini Primary standard or official documentation supporting the adjacent article claim. Cakupan: Protocol semantics and Search behavior are kept separate; no indexing, ranking, or migration-timing guarantee is inferred. Tingkat keyakinan: tinggi · Diverifikasi: Google: JavaScript SEO basics Ketika Anda’re comparing kerangka kerja untuk sebuah decision, test yang sama routes, konten, deployment target dan tooling untuk setiap candidate — sebuah benchmark itu swaps apa pun dari itu tidak measuring kerangka kerja, ini adalah measuring perbedaan di setup.
| kerangka kerja | Default rendering | dibangun-di metadata API | SSR/SSG mendukung | Ecosystem SEO mendukung |
|---|---|---|---|---|
| Astro | SSG (islands) | Ya (<head> di .astro files, konten Collections untuk data terstruktur) | Keduanya | Strong |
| Berikutnya.js | SSR/SSG (configurable) | Ya (Metadata API di App Router) | Keduanya + ISR | Excellent |
| Nuxt | SSR oleh default | Ya (useHead, useSeoMeta) | Keduanya + ISR | Excellent |
| SvelteKit | SSR oleh default | Ya (svelte:head) | Keduanya | baik |
| React Router (kerangka kerja mode) | SSR oleh default | Ya (meta export) | SSR + Deferred | baik |
| Angular | CSR oleh default | Melalui Angular Meta/Title services | Melalui @angular/ssr | Moderate |
| React (bare) | CSR | Manual (react-helmet-async; react-helmet adalah unmaintained) | Melalui Berikutnya.js/Gatsby | Bergantung pada wrapper |
| Vue (bare) | CSR | Manual (@unhead/vue; vue-meta adalah unmaintained) | Melalui Nuxt | Bergantung pada wrapper |
Remix v2 dan React Router v7 digabungkan — Remix’s server rendering dan data-memuat model now ships sebagai React Router’s “kerangka kerja mode,” (terjemahan) “kerangka kerja mode,” dan itu’s stable upgrade path untuk Remix v2 apps. Remix 3 adalah sebuah terpisah, experimental React-lebih sedikit rewrite (beta), tidak successor untuk Remix v2 — jangan 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, tidak ditambahkan oleh JavaScript setelah pemuatan halaman. Berikutnya.js’s Metadata API,
Nuxt’s useSeoMeta, dan Astro’s <head> component tangani ini correctly.
document.title = '...' atau React Helmet di CSR mode melakukan tidak — ini berjalan setelah
awal HTML adalah disajikan.
tautan penemuan — Googlebot discovers tautan oleh parsing HTML. tautan ditambahkan melalui
JavaScript (onClick, dynamic routing tanpa <a> tags) dapat tidak 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 tidak match apa pengguna see. Test untuk hydration errors di browser console.
Soft 404s — Client-side routers dapat silently render sebuah “halaman tidak ditemukan” (terjemahan) “halaman tidak ditemukan” UI sementara 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 Berikutnya.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 Berikutnya.js ISR guide
untuk penuh 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 kerangka kerja SEO adalah primarily determined oleh rendering mode. SSG (halaman dibangun sebagai static HTML di deploy time) dan SSR (halaman dirender server-side per permintaan) adalah keduanya safe untuk mesin pencari pengindeksan. CSR (halaman dirender entirely di browser melalui JavaScript) adalah riskier — Google dapat execute JavaScript, tetapi failures dan delays adalah umum, dan penemuan adalah lebih lambat.
Berikutnya.js (React meta-kerangka kerja): sebagian besar menyelesaikan 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 tidak cover), tautan-tingkat prefetching. Industry standard untuk SEO-sensitive React apps.
Nuxt (Vue meta-kerangka kerja): 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 melalui jelas “islands.” (terjemahan) “islands.” Best SEO safety dari apa pun JS kerangka kerja oleh default. Great untuk konten-berat situs.
SvelteKit: SSR oleh default, excellent metadata mendukung melalui svelte:head. Solid SEO dengan minimal configuration.
Angular: CSR oleh default, memerlukan @angular/ssr (formerly Angular Universal) untuk reliable pengindeksan. Secara historis paling SEO-problematic dari major kerangka kerja.
«React (bare): CSR by default. Requires Next.js, React Router (framework mode), or Gatsby for SSR/SSG. Note: Remix v2’s server-rendering model has merged into React Router v7/v8 as “framework mode” — that’s the maintained upgrade path, not the separate, experimental React-less Remix 3 beta. Don’t use bare CRA/Vite-React for content that must rank. » (Terjemahan) (Ringkasan bahasa Indonesia untuk bagian tiga puluh lima, bagian kecil satu: teks sumber dipertahankan agar dapat diperiksa dalam tinjauan penutur asli.)
Vue (bare): sama issue. gunakan Nuxt untuk SEO-critical Vue applications.
Svelte (bare): CSR oleh default. gunakan SvelteKit untuk SSR/SSG.
JavaScript kerangka kerja SEO checklist
Universal (applies untuk semua kerangka kerja)
- Verify rendering mode:
curl -s URL | grep "<title>"— judul harus muncul di mentah HTML - periksa bahwa
<title>dan<meta name="description">adalah di server respons - gunakan nyata
<a href>tags untuk semua navigable tautan (tidak hanya click handlers) - Ensure 404 halaman kembalikan HTTP 404, tidak 200
- Ensure redirects gunakan server-side 301/302, tidak
window.location.href - Generate dan submit sebuah sitemap XML
- tambahkan
robots.txtuntuk Anda publik directory
Berikutnya.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 tidak model - gunakan
next/imageuntuk semua images (automatic WebP, sizing, lazy-muat) - Verify ISR
revalidatenilai — set pendek windows untuk frequently-diperbarui halaman
Nuxt
- gunakan
useSeoMeta()atauuseHead()di setiap halaman component - Install
@nuxtjs/sitemapmodule - gunakan Nuxt’s dibangun-di SSR (atau
nuxt generateuntuk SSG) - Configure
robots.txtmelalui@nuxtjs/robots
Astro
- Lulus 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 melalui
ng add @angular/ssr - gunakan
MetadanTitleservices untuk metadata - tambahkan transfer state untuk mencegah API double-fetching pada hydration
kerangka kerja 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.