Panduan Penuh-Stack Meta-Kerangka kerja
Bagaimana Berikutnya.js, Nuxt, dan Remix memberikan Anda SSR, SSG, dan native metadata APIs untuk perbaiki SPA SEO masalah — dan mengapa route configuration masih decides apa sebenarnya ships.
Meta-kerangka kerja (Berikutnya.js pada React, Nuxt pada Vue, Remix pada React) adalah dibangun pada top dari base UI libraries untuk tambahkan server rendering, static generation, file-based routing, dan dibangun-di metadata APIs. itu adalah primitives, tidak sebuah jaminan: saat ini Berikutnya.js, Nuxt, dan SvelteKit semua let Anda pick server, static, atau client-hanya output per route (atau per component boundary), so sebuah project dibangun dengan sebuah meta-kerangka kerja dapat masih ship sebuah empty shell pada sebuah route itu opts ke client-hanya rendering. Pick sebuah rendering mode itu ships konten di awal respons (SSR, SSG, atau ISR/hybrid), gunakan kerangka kerja's native metadata API, dan lalu verify — per route — itu respons sebenarnya berisi apa Anda expect.
TL;DR — sebuah meta-kerangka kerja adalah sebuah alat dibangun pada top dari sebuah UI library like React atau Vue itu menambahkan missing SEO pieces — option untuk render Anda halaman pada server so konten adalah sudah di HTML sebelum Google ever sees ini. Berikutnya.js (React), Nuxt (Vue), dan Remix (React) adalah big three. Picking satu tidak perbaiki apa pun oleh itself: Anda masih memiliki untuk choose sebuah server-dirender atau static mode untuk setiap route dan konfirmasi konten sebenarnya lands di respons, karena sama kerangka kerja let Anda opt individual routes back ke client-hanya rendering.
Apa sebuah meta-kerangka kerja adalah
Meta-kerangka kerja tambahkan routing, data memuat, dan server atau bangun-time rendering sekitar UI libraries. 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 Delivering bermakna HTML reduces dependence pada crawler-side rendering tetapi melakukan tidak jaminan pengindeksan. 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
React dan Vue adalah libraries — mereka’re great di membangun interactive interfaces, tetapi pada mereka own mereka ship sebuah nearly-empty HTML file dan bangun seluruh halaman di browser dengan JavaScript. itu’s called rendering sisi klien (CSR), dan ini adalah classic sumber dari JavaScript SEO trouble: konten tidak di HTML until scripts jalankan.
sebuah meta-kerangka kerja adalah sebuah bigger alat dibangun sekitar satu dari itu libraries itu fills di semuanya library leaves out:
- server rendering — bangun halaman pada server so HTML arrives dengan konten sudah di ini.
- Static generation — bangun halaman ahead dari time ke plain HTML files.
- File-based routing — Anda folder structure becomes Anda URLs, Tidak manual setup.
- dibangun-di SEO tooling — sebuah sederhana cara untuk set judul, deskripsi, dan lainnya tags,
plus conventions untuk sitemaps dan
robots.txt.
three Anda’ll hear tentang sebagian besar:
- Berikutnya.js — dibangun pada React.
- Nuxt — dibangun pada Vue.
- Remix — dibangun pada React (now folded ke React Router).
Apa sebuah meta-kerangka kerja sebenarnya perubahan
dengan plain React atau Vue, Google memiliki untuk render Anda halaman (jalankan JavaScript di sebuah browser) sebelum ini dapat see Anda konten. itu biasanya berfungsi, tetapi ini menambahkan sebuah delay dan sebuah sedikit cara untuk fail.
sebuah meta-kerangka kerja memberikan Anda option untuk flip ini sekitar: ini dapat jalankan JavaScript pada server (atau ahead dari time) dan kirim Google finished HTML dengan text, tautan, dan meta tags sudah di ini. Tidak ada apa pun memiliki untuk jaminan ini happens, though — ini adalah sebuah route-oleh-route setting. Bukti untuk klaim ini A meta-framework supplies rendering, routing, and metadata primitives; it does not apply them automatically. Route configuration and application code determine whether a given route is actually crawlable, indexable, and correct. Cakupan: Applies to current Next.js App Router and SvelteKit route-option docs; framework defaults and terminology change by release. Tingkat keyakinan: tinggi · Diverifikasi: Next.js: Server and Client Components SvelteKit: Page options (ssr) Berikutnya.js, Nuxt, dan SvelteKit semua let sebuah route atau component opt back ke client-hanya rendering, dan sebuah route itu melakukan mendapatkan yang sama empty-shell risk plain React atau Vue akan memiliki shipped. kerangka kerja supplies primitive (server rendering); Anda route configuration dan application code decide apakah sebuah diberikan URL sebenarnya menggunakan ini.
sederhana takeaway
«- If you’re choosing a tech stack and SEO matters, a meta-framework (Next.js, Nuxt, or Remix) is the safer default over plain React or Vue — but only because it makes server rendering easy to opt into, not because it’s automatic.
- The key choice is the rendering mode, set per route — make sure your important pages are server-rendered or statically generated, not client-rendered.
- Use the framework’s built-in metadata feature to set titles and descriptions — don’t hand-roll it.
- Check the actual response for the routes that matter. A framework name on the project doesn’t tell you what any one URL emits. » (Terjemahan) (Ringkasan bahasa Indonesia untuk bagian lima belas, bagian kecil satu: teks sumber dipertahankan agar dapat diperiksa dalam tinjauan penutur asli.)
ingin nyata perbandingan — rendering modes (SSR vs SSG vs ISR), setiap kerangka kerja’s metadata API, dan bagaimana mereka sebenarnya differ untuk SEO? Switch untuk Advanced tab. untuk kerangka kerja-agnostic background, see JavaScript SEO.
TL;DR — Meta-kerangka kerja (Berikutnya.js pada React, Nuxt pada Vue, Remix pada React) wrap sebuah base UI library dengan server rendering, static generation, file-based routing, dan sebuah native metadata API. itu adalah primitives itu dapat hapus CSR masalah, tidak sebuah jaminan itu mereka melakukan: rendering mode, metadata pengiriman, data freshness, error status, hydration, dan production runtime adalah semua decided per route (atau per component boundary) di saat ini Berikutnya.js, Nuxt, SvelteKit, React Router, dan Astro — so sebuah meta-kerangka kerja project dapat masih ship sebuah route itu behaves persis like sebuah unrendered SPA. di seluruh semua three named kerangka kerja rendering choices adalah yang sama shape — SSR (per-permintaan), SSG (bangun-time), dan ISR/hybrid (cached + revalidated) — dan aturan adalah yang sama: konten itu harus peringkat memiliki untuk menjadi di respons dan survive streaming, hydration, dan production adapter, tidak hanya local bangun.
Library vs. kerangka kerja — mengapa pembedaan penting untuk SEO
ini adalah sebuah architectural pembedaan, tidak sebuah Google peringkat category. 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 Evaluate sebenarnya respons HTML, tautan, kode status, dan metadata untuk setiap route. 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
React dan Vue adalah rendering libraries. oleh default mereka hydrate sebuah near-empty
<div id="root"> di browser — canonical client-side-rendering setup, dan
tepat pattern itu membuat JavaScript SEO risk: konten, tautan, dan meta tags jangan
exist until bundle executes. Google dapat render itu, tetapi Anda’ve taken pada
render queue, statelessness, dan parity masalah covered di
JavaScript SEO.
sebuah meta-kerangka kerja adalah layer itu memberikan Anda sebuah cara untuk hapus itu risk. ini berjalan sama React/Vue components pada sebuah server (atau di bangun time) dan ships HTML itu sudah berisi konten — ketika sebuah route adalah configured untuk melakukan so. mental model worth mempertahankan: ** base library decides bagaimana hard Anda SEO adalah oleh default; meta-kerangka kerja decides bagaimana easy perbaiki adalah, pada sebuah per-route basis Anda masih memiliki untuk apply dan lalu verify.** Berikutnya.js tidak membuat React see-able oleh Google — ini membuat React able untuk render pada server so output dapat sudah menjadi see-able, disediakan route hasn’t opted back ke client-hanya rendering, metadata hasn’t telah diverted untuk sebuah client-hanya tulis, dan respons Anda’re memeriksa adalah satu sebuah crawler akan sebenarnya mendapatkan (Nuxt’s route aturan, SvelteKit’s hierarchical halaman options, dan Berikutnya’s server/Client Component split semua let sebuah single project mix modes route oleh route atau component oleh component). Bukti untuk klaim ini Rendering mode can be selected per route (or per component boundary) in current meta-frameworks, so one project can mix static, server, client, and hybrid output rather than a single project-wide mode. Cakupan: Current Nuxt route-rules and SvelteKit hierarchical page-options docs; version/terminology specific. Tingkat keyakinan: tinggi · Diverifikasi: Nuxt: Rendering Modes (route rules) SvelteKit: Page options
Apa setiap meta-kerangka kerja memberikan Anda
three differ di detail, tetapi SEO-relevant fitur set adalah shared:
- rendering sisi server (SSR) — components execute pada server per permintaan; respons adalah menyelesaikan HTML.
- Static situs generation (SSG) — halaman adalah pre-dirender untuk HTML di bangun time dan disajikan sebagai files (sering dari sebuah CDN).
- File-based routing — file tree maps untuk URLs, so setiap route adalah sebuah nyata, linkable, dapat di-crawl URL oleh construction (Tidak client-hanya route registry).
- sebuah native metadata API — sebuah pertama-party cara untuk set
<title>, deskripsi meta, canonical, Open Graph, dan robots tags itu render ke server HTML. - Sitemap & robots conventions — sebuah terdokumentasi file/route convention untuk generating
sitemap.xmldanrobots.txtsebagai bagian dari bangun.
itu terakhir dua poin penting lebih daripada mereka look: file-based routing berarti penemuan rides pada nyata URLs, dan sebuah server-dirender metadata API berarti Anda judul/deskripsi/ canonical adalah di mentah HTML — tidak injected client-side di mana Google takes sebagian besar-restrictive directive di seluruh mentah dan dirender.
three kerangka kerja, compared
| Berikutnya.js | Nuxt | Remix | |
|---|---|---|---|
| Base library | React | Vue | React |
| Default rendering | SSR/SSG (hybrid; per-route) | Universal (SSR) oleh default | SSR oleh default |
| Routing | File-based (App Router / halaman Router) | File-based (pages/, app/) | Nested routes (now React Router) |
| Metadata API | metadata export / generateMetadata (App Router); next/head (halaman) | useSeoMeta() / useHead() | meta export per route |
| Static export | Ya (output: 'export') | Ya (nuxi generate / prerendering) | Melalui prerendering / SSG adapters |
| Incremental/hybrid | ISR (revalidate) | Route aturan / ISR-style caching | Cache-Control + edge caching |
| Image optimization | next/image | <NuxtImg> (@nuxt/image) | Bring-Anda-own / adapter |
| Status quo | sebagian besar popular; App Router default | Vue jawaban untuk Berikutnya.js | Digabungkan ke React Router v7 |
sebuah sedikit notes itu jangan fit sebuah table cell:
- Berikutnya.js adalah paling widely digunakan dan App Router’s
metadataexport membuat server-dirender tags path dari least resistance. -nya distinctive fitur adalah ISR — statically generate, lalu revalidate pada sebuah timer atau pada demand. - Nuxt adalah “Next.js for Vue” (terjemahan) “Berikutnya.js untuk Vue” di spirit: SSR oleh default, plus
@nuxtjs/seomodule ecosystem (sitemap, robots, schema.org, OG image) itu bundles sebagian besar SEO chores.useSeoMeta()adalah idiomatic metadata API. - Remix adalah server-pertama oleh design — ini leans pada web standards (forms, fetch,
HTTP caching) alih-alih sebuah terpisah static layer, dan exposes SEO melalui sebuah per-route
metaexport. sebagai dari React Router v7, Remix’s model adalah React Router, so baru berfungsi sering dimulai di sana.
rendering modes dan apa setiap berarti untuk crawler
labels repeat di seluruh kerangka kerja; SEO consequence adalah apa penting:
- SSR (rendering sisi server) — HTML dibangun per permintaan. crawler view: penuh konten di pertama respons; freshest data; costs server time per hit. rendah SEO risk.
- SSG (static situs generation) — HTML dibangun setelah di deploy, disajikan sebagai files. crawler view: fastest mungkin respons, konten fully present; data adalah sebagai fresh sebagai Anda terakhir bangun. Lowest SEO risk.
- ISR / hybrid (incremental static regeneration, route aturan, dan seterusnya.) — sajikan static halaman, lalu regenerate ini di background setelah sebuah revalidate window atau pada demand. crawler view: static-fast dengan near-fresh konten — tetapi menjadi aware sebuah crawler dapat menjadi disajikan sebuah slightly stale cached versi until berikutnya revalidation, so atur window untuk match bagaimana fast konten sebenarnya perubahan.
- CSR (rendering sisi klien) — base-library default meta-kerangka kerja ada untuk hindari. crawler view: empty-ish shell itu bergantung pada rendering. Highest risk; reserve ini untuk genuinely non-dapat diindeks, behind-login UI.
decision aturan adalah yang sama di seluruh semua three kerangka kerja: apa pun itu harus peringkat seharusnya ship -nya konten di awal HTML — so SSR, SSG, atau ISR, tidak pernah pure CSR. penuh kerangka kerja-agnostic rendering menu (hydration, edge, streaming, dynamic rendering) lives pada JavaScript SEO.
Mode pilihan adalah per route, tidak per project
«Current Next.js, Nuxt, and SvelteKit all apply rendering mode at the route (or
component) level rather than as a single project-wide setting — so “this site runs
Nuxt” tells you nothing about what any one URL does. Nuxt’s route rules let one
project mix prerendered, server-rendered (with caching), and client-only (ssr: false)
routes in the same config; SvelteKit’s ssr/csr/prerender page options apply
hierarchically, so a child route can override what a parent layout set; Next’s
Server/Client Component boundary works the same way inside a single route. Weigh each
route on:
» (Terjemahan) (Ringkasan bahasa Indonesia untuk bagian tiga puluh tujuh, bagian kecil satu: teks sumber dipertahankan agar dapat diperiksa dalam tinjauan penutur asli.)
| Dimension | Static (SSG) | server (SSR) | Client-hanya (CSR) |
|---|---|---|---|
| Freshness | sebagai dari terakhir bangun | saat ini pada setiap permintaan | saat ini, tetapi hanya setelah JS berjalan |
| Personalization | None (sama HTML untuk everyone) | Per-permintaan, server-side | Client-side, setelah hydration |
| bangun/server cost | bangun-time hanya | Per-permintaan server cost | Lowest server cost, highest client cost |
| Cacheability | Trivially cacheable di edge | perlu jelas cache/revalidate aturan | Cacheable shell, tidak konten |
| JS dependency untuk konten | None | None untuk awal respons | konten bergantung entirely pada JS executing |
| Failure perilaku | Stale until berikutnya bangun/revalidate | 5xx atau fallback jika server permintaan fails | Empty shell jika JS fails atau adalah blocked |
None dari ini adalah sebuah universal winner — sebuah route itu perubahan per signed-di pengguna adalah sebuah poor fit untuk SSG regardless dari apa rest dari project menggunakan, dan sebuah route itu tidak pernah perubahan tidak perlu per-permintaan server cost.
mistakes itu survive move untuk sebuah meta-kerangka kerja
sebuah kerangka kerja menghapus default CSR risk; ini tidak membuat Anda immune:
- Opting back ke client-hanya rendering — e.g. SvelteKit’s
ssr = false(yang docs say “renders an empty ‘shell’ page instead” (terjemahan) “renders sebuah empty ‘shell’ halaman alih-alih”), atau fetching critical konten di sebuah client-hanya effect so ini adalah absent dari server HTML. ini adalah sebuah per-route atau per-component decision, so satu halaman opting out tidak tampilkan up oleh testing sebuah berbeda halaman. - Skipping metadata API — writing
document.titledi sebuah client effect alih-alih dari kerangka kerja’s server-dirender metadata export, so judul tidak di mentah HTML. - Assuming metadata pengiriman adalah satu universal path — saat ini Berikutnya.js (App Router,
v16.2,10 docs, terakhir diperbarui 2026-06-23) streams metadata secara terpisah untuk dynamically
dirender halaman oleh default, injecting ini setelah
generateMetadataresolves. ini disables itu streaming — serving metadata di awal<head>alih-alih — untuk crawler dan bot ini detects oleh pengguna agent itu expect metadata up front (Berikutnya namesTwitterbot,Slackbot, danBingbotsebagai contoh), configurable melaluihtmlLimitedBotsoption. Bukti untuk klaim ini Metadata delivery is not one universal path: Next.js streams metadata for ordinary clients but disables streaming for detected HTML-limited bots (e.g. Twitterbot, Slackbot, Bingbot), serving it in the initial head instead. Cakupan: Current Next.js App Router docs (v16.2.10, docs last updated 2026-06-23); bot list and mechanism are configurable and release-specific. Tingkat keyakinan: tinggi · Diverifikasi: Next.js: Metadata and OG images (streaming metadata) Yang bot mendapatkan yang path, dan apakah streaming adalah digunakan di semua, adalah sebuah versi- dan config-spesifik detail worth memeriksa terhadap docs untuk rilis Anda’re pada, tidak assumed dari kerangka kerja name. - ISR revalidation windows too panjang — serving stale prices/stock/konten untuk crawler; lebih broadly, apa pun data/cache/revalidation misconfiguration (wrong cache key, missed invalidation, sebuah rusak preview/draft state) dapat produce missing, stale, atau personalized-looking output bahkan pada sebuah route itu adalah jika tidak dirender correctly.
- Assuming error component atau sebuah redirect memperbaiki HTTP status — setelah streaming memiliki begun, apa kode status dan headers sebuah crawler sebenarnya menerima pada sebuah direct permintaan, sebuah tidak-ditemukan path, sebuah thrown server error, sebuah redirect, atau sebuah client-navigation failure perlu untuk menjadi tested secara terpisah untuk setiap case; sebuah kerangka kerja’s error boundary tidak jaminan apa pun satu dari them resolves cara UI suggests. Bukti untuk klaim ini Framework error components and redirects do not guarantee the HTTP status a crawler sees once streaming has begun; test direct requests, not-found paths, thrown errors, redirects, and client-navigation failures separately. Cakupan: General Google Search crawling guidance, not framework-specific. Tingkat keyakinan: tinggi · Diverifikasi: Google: Understand JavaScript SEO basics (status codes, testing)
- Treating dirender HTML sebagai proof dari berfungsi interactivity — hydration dapat masih fail dari nondeterministic server output, browser-hanya APIs digunakan too early, tidak valid markup, atau ketiga-party scripts mutating DOM sebelum React/Vue attaches; halaman dapat look menyelesaikan di view-sumber dan masih ship rusak controls.
- Sending lebih untuk client daripada kerangka kerja memerlukan — data lulus dari sebuah
server-dirender component untuk sebuah client component memiliki untuk menjadi serializable, dan (di
Berikutnya.js) hanya environment variables prefixed
NEXT_PUBLIC_ship untuk client bundle oleh default — tetapi neither protection berhenti Anda dari manually passing secrets atau excess per-pengguna data sebagai sebuah prop; awal halaman menjadi SEO-terlihat tidak berarti semuanya serialized ke ini adalah dimaksudkan untuk menjadi publik. - Trusting sebuah local bangun untuk predict production output — deployment adapters dan
runtimes differ di apa mereka mendukung. Berikutnya.js’s own docs mark static export
(
output: 'export') sebagai “Limited” (terjemahan) “Limited” fitur mendukung dan say ini “melakukan tidak dukung Berikutnya.js features itu require a server” (terjemahan) “melakukan tidak mendukung Berikutnya.js fitur itu memerlukan sebuah server”; Astro’s pada-demand rendering “memerlukan an adapter” (terjemahan) “perlu sebuah adapter” cocok untuk target runtime sebelum apa pun pada-demand route berfungsi di semua. Bukti untuk klaim ini Deployment target changes what a meta-framework can actually do in production: a Next.js static export does not support features that require a server, and Astro's on-demand rendering requires an adapter matched to the host runtime. Cakupan: Current Next.js deployment docs (v16.2.10) and Astro rendering-modes docs; adapter support varies by platform and release. Tingkat keyakinan: tinggi · Diverifikasi: Next.js: Deploying Astro: On-demand rendering (adapters) Streaming, regional/edge execution, filesystem access, dan cache/revalidation perilaku dapat semua differ oleh host — verify deployed route, tidak hanya local bangun. - Comparing direct-muat output untuk client-navigated output sebagai jika mereka’re yang sama test — sebuah client-side route transition dapat exercise sebuah berbeda metadata-perbarui dan data-fetch path daripada sebuah fresh permintaan; test keduanya, tidak hanya satu.
- Blocking kerangka kerja’s asset directory (
/_next/,/_nuxt/) dirobots.txt, yang breaks hydration dan rendering. - Treating “it berfungsi di my browser” (terjemahan) “ini berfungsi di my browser” sebagai proof — masih verify dengan pemeriksaan URL’s dirender HTML, persis sebagai Anda akan untuk apa pun JS situs.
Di mana untuk go berikutnya: kerangka kerja guides
ini halaman adalah concept overview; setiap kerangka kerja memiliki -nya own deep dive:
- Berikutnya.js SEO — halaman Router vs App Router, Metadata API dan
generateMetadata,next/imagedan Core Web Vitals, ISR timing dan bagaimana Googlebot sees revalidation, sitemap/robots conventions, dan paling umum Berikutnya.js SEO mistakes. - Nuxt SEO — SSR oleh default,
useSeoMeta()danuseHead(), Nuxt’s rendering modes dan route aturan,@nuxtjs/seomodule ecosystem (sitemap, robots, schema, OG image), dan bagaimana Nuxt compares untuk plain Vue untuk indexability. - Remix SEO — server-pertama rendering, per-route
metaexport, loaders dan HTTP caching untuk crawler, React Router v7 gabungkan, dan bagaimana Remix differs dari Berikutnya.js’s static-pertama instincts.
untuk base libraries underneath ini kerangka kerja (React SEO, Vue SEO) dan kerangka kerja-agnostic rendering dan parity aturan, see JavaScript SEO.
AI summary
sebuah condensed take pada Advanced versi:
«- Meta-framework = a layer built on top of a base UI library (Next.js on React, Nuxt on Vue, Remix on React) that adds server rendering, static generation, file-based routing, and a native metadata API — primitives you can use, not a guarantee that a given route uses them.
- Rendering mode is decided per route, not per project. Current Next.js, Nuxt
(route rules), and SvelteKit (hierarchical
ssr/csr/prerenderoptions) all let one project mix static, server, and client-only output across routes or component boundaries — so the framework name alone doesn’t tell you what any one URL emits. - Shared feature set: SSR, SSG, file-based routing (real crawlable URLs), a server-rendered metadata API, and sitemap/robots conventions — each usable per route.
- Rendering modes across all three: SSR (per request), SSG (build time), ISR/hybrid (cached + revalidated), and CSR (the thing to avoid for indexable pages), compared on freshness, personalization, build/server cost, cache, JS dependency, and failure behavior.
- Quick differences: Next.js is the most popular and the only one with true ISR;
Nuxt is SSR-by-default with the
@nuxtjs/seomodule ecosystem; Remix is server-first, standards-based, and is now React Router v7. - What still has to be verified per route, not assumed: metadata delivery (current
Next.js streams metadata by default but serves it in the initial
<head>for » (Terjemahan) (Ringkasan bahasa Indonesia untuk bagian lima puluh dua, bagian kecil satu: teks sumber dipertahankan agar dapat diperiksa dalam tinjauan penutur asli.) « detected bots like Twitterbot/Slackbot/Bingbot instead), HTTP status after streaming begins, data/cache freshness, hydration success, direct-load vs. client-navigation output, and production adapter/runtime parity (Next’s static export has “Limited” feature support; Astro’s on-demand rendering needs a matching adapter). - Mistakes that survive the move: opting back into client-only rendering, skipping
the metadata API (client-side
document.title), over-long ISR windows serving stale content, treating an error component as proof of correct status codes, over-sending data as serialized props, trusting a local build to predict production output, and blocking/_next/or/_nuxt/in robots.txt. » (Terjemahan) (Ringkasan bahasa Indonesia untuk bagian lima puluh dua, bagian kecil dua: teks sumber dipertahankan agar dapat diperiksa dalam tinjauan penutur asli.)
Dokumentasi resmi
Utama-sumber documentation dari setiap kerangka kerja dan mesin pencari.
Berikutnya.js (Vercel)
- Optimizing: Metadata — App Router
metadataexport dangenerateMetadata. - rendering: server Components / SSR & SSG — bagaimana Berikutnya renders, dan static vs dynamic rendering.
- Incremental Static Regeneration (ISR) — revalidation timing dan pada-demand revalidation.
Nuxt
- SEO dan Meta —
useSeoMeta(),useHead(), dan bagaimana metadata renders. - rendering Modes — universal (SSR), client-hanya, dan hybrid rendering / route aturan.
- Nuxt SEO module ecosystem — sitemap, robots, schema.org, OG image, dan tautan checker modules.
Remix / React Router
- Remix — Metadata (
metaexport) — per-route meta tags. - React Router v7 ( Remix gabungkan) — kerangka kerja Remix folded ke.
- memahami JavaScript SEO basics — three-phase proses setiap kerangka kerja’s output adalah judged oleh.
- di-Depth Guide untuk Bagaimana Google Search berfungsi — di mana rendering sits di crawl → indeks → sajikan.
Quotes dari sumber
pada—record statements dari kerangka kerja docs dan Google. setiap penelusuran-mesin tautan adalah sebuah deep tautan itu jumps untuk quoted passage.
Berikutnya.js — pada metadata dan rendering
- “Next.js has a Metadata API that can be used to define your application metadata… for improved SEO and web shareability.” (terjemahan) “Berikutnya.js memiliki sebuah Metadata API itu dapat menjadi digunakan untuk define Anda application metadata… untuk ditingkatkan SEO dan web shareability.” — Berikutnya.js docs. Sumber
- “With Incremental Static Regeneration (ISR), you can… update static content without rebuilding the entire site.” (terjemahan) “dengan Incremental Static Regeneration (ISR), Anda dapat… perbarui static konten tanpa rebuilding entire situs.” — Berikutnya.js docs. Sumber
Nuxt — pada SSR oleh default
- “Nuxt comes with built-in features to improve your application’s SEO… Nuxt automatically renders your app on the server.” (terjemahan) “Nuxt muncul dengan dibangun-di fitur untuk meningkatkan Anda application’s SEO… Nuxt secara otomatis renders Anda app pada server.” — Nuxt docs (SEO dan Meta). Sumber
Remix — pada server-pertama rendering
- “Remix is a full stack web framework… it embraces the web platform” (terjemahan) “Remix adalah sebuah penuh stack web kerangka kerja… ini embraces web platform” dan renders pada server oleh default, exposing per-route metadata melalui
metaexport. — Remix docs. Sumber
Google — mengapa ini penting di semua
«- “Rendering is important because websites often rely on JavaScript to bring content to the page, and without rendering Google might not see that content.” Jump to quote » (Terjemahan) (Ringkasan bahasa Indonesia untuk bagian tujuh puluh dua, bagian kecil satu: teks sumber dipertahankan agar dapat diperiksa dalam tinjauan penutur asli.)
Note: kerangka kerja docs adalah versioned dan perubahan frequently (terutama dengan Berikutnya.js App Router dan Remix → React Router v7 gabungkan); konfirmasi tepat wording terhadap langsung docs untuk versi Anda’re pada sebelum treating apa pun quote sebagai akhir.Meta-kerangka kerja SEO checklist
sebuah quick lulus untuk apa pun Berikutnya.js / Nuxt / Remix project:
- halaman itu harus peringkat adalah SSR, SSG, atau ISR — tidak client-hanya dirender.
- konten muncul di server HTML (View Sumber), tidak hanya setelah hydration.
- judul, deskripsi, canonical, dan OG tags gunakan kerangka kerja’s native
metadata API (
metadata/generateMetadata,useSeoMeta(), ataumetaexport) — tidak sebuah client-sidedocument.titletulis. - Tidak critical konten adalah fetched hanya di sebuah client-hanya effect (absent dari server HTML).
- ISR / cache revalidation windows match bagaimana fast konten sebenarnya perubahan (Tidak stale prices/stock disajikan untuk crawler).
- kerangka kerja’s asset directory (
/_next/,/_nuxt/) adalah tidak blocked dirobots.txt. - sebuah sitemap dan robots.txt adalah generated melalui kerangka kerja’s convention atau SEO module dan submitted di Search Console.
- tautan internal adalah nyata
<a href>anchors (kerangka kerja<Link>components emit ini — konfirmasi mereka melakukan di dirender DOM). - Verified dengan pemeriksaan URL’s dirender HTML, tidak “it berfungsi di my browser.” (terjemahan) “ini berfungsi di my browser.”
- Image optimization (
next/image,<NuxtImg>) tidak lazy-muat di atas—fold/LCP imagery. - rendering mode diperiksa per route, tidak assumed dari project/kerangka kerja — konfirmasi route aturan, halaman option, atau component boundary itu sebenarnya applies untuk setiap URL Anda care tentang.
- HTTP status tested secara terpisah untuk sebuah direct permintaan, sebuah tidak-ditemukan path, sebuah thrown server error, sebuah redirect, dan sebuah client-navigation failure — tidak inferred dari error component rendering correctly.
- Production/deployed output verified, tidak hanya local bangun — adapter,
runtime, dan static-export targets dapat mendukung berbeda streaming, caching,
dan server-fitur perilaku daripada
next devatauastro dev.
Kerangka kerja untuk choosing sebuah rendering mode
route volatility kerangka kerja
Classify setiap route oleh bagaimana sering -nya publik konten perubahan, lalu choose paling sedikit kompleks mode itu masih mengembalikan menyelesaikan HTML:
- perubahan hanya pada deploy: static generation adalah default.
- perubahan pada sebuah predictable schedule: regeneration atau hybrid caching dapat pertahankan halaman fresh tanpa rendering setiap permintaan.
- perubahan per permintaan tetapi adalah publik: server rendering fits, dengan caching di mana respons dapat menjadi shared.
- perubahan per signed-di pengguna: client rendering adalah reasonable untuk privat state, sementara apa pun publik landing konten seharusnya masih arrive di HTML.
dua-output review
Review setiap route sebagai dua deliverables: document output dan runtime output. document output harus carry unique konten, metadata, canonical, tautan, dan right status. runtime output menambahkan interaction dan freshness. sebuah route adalah tidak penelusuran-safe ketika runtime adalah yang diharapkan untuk repair sebuah blank atau misleading document.
di dalam setiap, periksa lebih daripada satu moment:
- Document output — direct-permintaan kode status dan headers, apa pun streamed chunks (tidak hanya pertama bytes), akhir dirender DOM (tidak hanya view-sumber), dan apakah metadata arrived di awal respons atau sebuah streamed perbarui.
- Runtime output — hydration (melakukan ini menyelesaikan tanpa mismatch errors), client navigation (melakukan sebuah client-side route transition perbarui metadata dan konten sama cara sebuah direct muat melakukan), cache/revalidation perilaku di atas time (tidak hanya di pertama permintaan), dan production runtime/adapter parity (melakukan deployed target mendukung yang sama streaming, regional, dan caching perilaku local bangun showed).
sebuah route itu melewati document periksa setelah, pada satu permintaan, di local dev, hasn’t telah reviewed — ini adalah telah sampled.
Meta-kerangka kerja — cheat sheet
Library vs. meta-kerangka kerja
| Base library (React, Vue) | Meta-kerangka kerja (Berikutnya.js, Nuxt, Remix) | |
|---|---|---|
| Default rendering | Client-side (CSR) | server / static (SSR, SSG) |
| konten di mentah HTML | Tidak | Ya |
| Routing | Manual / client-hanya | File-based, nyata URLs |
| Metadata | tambahkan sebuah library | dibangun-di, server-dirender |
| Default SEO risk | tinggi | rendah |
rendering modes → crawler impact
| Mode | Ketika HTML adalah dibangun | crawler sees | SEO risk |
|---|---|---|---|
| SSG | bangun time | Penuh konten, fastest | Lowest |
| SSR | Per permintaan | Penuh konten, fresh | rendah |
| ISR / hybrid | Cached + revalidated | Penuh konten, maybe slightly stale | rendah* |
| CSR | di browser | Empty-ish shell | Highest |
* atur revalidation window untuk konten’s nyata perubahan rate.
** three di sebuah glance**
| Berikutnya.js | Nuxt | Remix | |
|---|---|---|---|
| Library | React | Vue | React |
| Default | SSR/SSG hybrid | SSR (universal) | SSR |
| Metadata API | metadata / generateMetadata | useSeoMeta() | meta export |
| Signature fitur | ISR | @nuxtjs/seo modules | Web-standards, now React Router v7 |
Fast aturan
- harus peringkat → ship konten di pertama respons (SSR/SSG/ISR), tidak pernah pure CSR.
- Set tags melalui metadata API, tidak client-side
document.title. - jangan block
/_next/atau/_nuxt/dirobots.txt.
Meta-kerangka kerja mistakes itu pertahankan SPA risk
Opting seluruh situs ke client-hanya rendering
Mengubah off SSR globally throws away meta-kerangka kerja’s main SEO advantage. pertahankan client-hanya islands limited untuk UI itu melakukan tidak perlu penemuan; let publik routes kembalikan berguna HTML.
Picking satu rendering mode untuk setiap route
Forcing dynamic SSR onto stable konten menambahkan cost, sementara forcing static generation onto permintaan-spesifik konten membuat staleness. Choose per route berdasarkan konten volatility dan personalization.
Treating sebuah metadata API sebagai sebuah rendering strategy
Correct judul melakukan tidak compensate untuk sebuah empty body. Verify metadata dan utama konten adalah keduanya present di server respons.
Assuming kerangka kerja defaults survive configuration
sebuah kerangka kerja dapat default untuk SSR tetapi sebuah adapter, export mode, route flag, atau client-hanya boundary dapat perubahan output. Inspect dibangun respons alih-alih relying pada kerangka kerja name.
Uji pemahaman Anda: Meta-kerangka kerja
Five quick pertanyaan pada bagaimana Berikutnya.js, Nuxt, dan Remix tangani SEO. Pick sebuah jawaban untuk setiap, lalu periksa.
Resources worth Anda time
My writing
- JavaScript SEO: sebuah Definitive Guide — my penuh guide untuk rendering, DOM parity, paling-restrictive-directive aturan, dan choosing sebuah rendering mode — kerangka kerja-agnostic background untuk semuanya pada ini halaman.
- Beginner’s Guide untuk SEO teknis — di mana rendering dan kerangka kerja fit di bigger picture.
My speaking
- Bagaimana Penelusuran berfungsi (SlideShare) — my walkthrough dari crawling, rendering, pengindeksan, dan peringkat. (My standing disclaimer applies: “Ini adalah my understanding dari sistem… tidak going untuk menjadi 100% menyelesaikan atau accurate.” (terjemahan) “ini adalah my understanding dari sistem… tidak going untuk menjadi 100% menyelesaikan atau accurate.”)
«From around the industry
- web.dev — Rendering on the Web — the canonical explainer of CSR / SSR / SSG / hydration trade-offs from the Chrome team; the conceptual backbone for picking a rendering mode.
- Next.js — Metadata docs — primary source for the App Router metadata API.
- Nuxt SEO — the
@nuxtjs/seomodule ecosystem (sitemap, robots, schema.org, OG image) maintained by Harlan Wilton. - Remix docs —
metaexport / React Router v7 — primary source for Remix metadata and where Remix now lives. - Vercel — Rendering fundamentals — framework rendering and deployment guidance from the team behind Next.js.
- Martin Splitt’s JavaScript SEO playlist — Google’s official video series on how JS (and framework output) gets crawled and rendered.
- r/TechSEO — the community for framework rendering/indexing debugging. » (Terjemahan) (Ringkasan bahasa Indonesia untuk bagian seratus dua puluh dua, bagian kecil satu: teks sumber dipertahankan agar dapat diperiksa dalam tinjauan penutur asli.)
Log perubahan
Diperbarui 18 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.
Perbandingan lengkap tidak tersedia — tidak ada cuplikan sebelumnya yang diarsipkan untuk revisi ini.