rendering

How Google's Web rendering Service runs Anda JavaScript untuk bangun halaman ini indeks — plus rendering options (CSR, SSR, SSG, hydration, ISR, edge, dynamic) dan mereka SEO trade-offs.

Pertama kali diterbitkan: 23 Jun 2026 · Terakhir diperbarui: 3 Agu 2026 · Advanced
Bahasa
1 sinyal bukti di halaman ini

rendering adalah langkah where Google runs Anda JavaScript di sebuah evergreen, headless Chrome — Web rendering Service — untuk bangun DOM ini indeks. ini happens untuk essentially setiap halaman, biasanya di dalam seconds-untuk-minutes, so old 'two waves dari pengindeksan' model adalah largely outdated dan there's no per-halaman render budget. renderer adalah stateless, doesn't interact dengan halaman, dan caches hard. Anda rendering option decides Anda SEO risk: SSR, static/prerendering, dan hydration adalah safe; full rendering sisi klien adalah risky one; dynamic rendering adalah sebuah workaround.

TL;DR — Google renders Anda JS di sebuah evergreen, headless Chromium — Web rendering Service — untuk bangun DOM ini indeks. ini happens untuk essentially semua halaman, biasanya di dalam seconds-untuk-minutes, so “two waves of indexing” (terjemahan) “two waves dari pengindeksan” adalah largely outdated dan there’s no per-halaman render budget. WRS adalah stateless, declines permission prompts, doesn’t interact dengan halaman, dan caches aggressively. Anda rendering option decides Anda SEO risk: SSR / static / prerendering / hydration adalah rendah-risk; full CSR adalah risky one; dynamic rendering adalah sebuah workaround Google advises terhadap. untuk practical JS masalah ini membuat, see JavaScript SEO.

Where rendering sits

Google adalah explicit itu JavaScript apps move melalui three phases: “Google processes JavaScript web apps in three main phases: 1. Crawling 2. Rendering 3. Indexing.” (terjemahan) “Google processes JavaScript web apps di three main phases: 1. crawling 2. rendering 3. pengindeksan.” Evidence for this claim Google documents crawling, rendering, and indexing as the three main phases for processing JavaScript web apps. Scope: Google Search processing of JavaScript web applications; the phases can overlap operationally. Confidence: high · Verified: Google Search Central: Understand the JavaScript SEO basics rendering adalah bridge. crawling fetches raw HTML; rendering runs JavaScript untuk bangun finished DOM; pengindeksan reads itu rendered DOM, dan apa pun baru tautan renderer menemukan get fed back ke crawling. di Google’s kata: “During the crawl, Google renders the page and runs any JavaScript it finds using a recent version of Chrome, similar to how your browser renders pages you visit.” (terjemahan) “selama crawl, Google renders halaman dan runs apa pun JavaScript ini menemukan menggunakan sebuah recent versi dari Chrome, similar untuk how Anda browser renders halaman Anda visit.”

Rendering is the bridge between fetching a URL and indexing its finished DOM; parity, interaction, state, and timing can break that bridge. Sumber: JavaScript SEO

Google crawls a URL, renders its JavaScript to build the DOM, and indexes the result. Four practical failure modes branch from rendering: parity when the rendered DOM differs from expectations, interaction when content requires a scroll or click, state when content relies on cleared cookies or storage, and timing when content is deferred behind slow JavaScript.

© Patrick Stox LLC · CC BY 4.0 ·

Web rendering Service

Google renders di Web rendering Service (WRS) — sebuah headless Chrome itu’s evergreen: “While Google Search runs JavaScript with an evergreen version of Chromium…” (terjemahan) “While Google Search runs JavaScript dengan sebuah evergreen versi dari Chromium…” ini tracks saat ini Chrome, so modern JavaScript dan CSS fitur berfungsi.

catch adalah itu WRS adalah sebuah peculiar browser, dan -nya quirks cause sebagian besar nyata masalah:

  • ini adalah stateless. sebagai I put ini di my JavaScript SEO guide, “Google loads each page stateless like it’s a fresh load.” (terjemahan) “Google memuat setiap halaman stateless like ini adalah sebuah fresh muat.” Google’s docs spell out pieces: “Local Storage and Session Storage data are cleared across page loads” (terjemahan) “Local Storage dan Session Storage data adalah cleared di seluruh halaman memuat” dan “HTTP Cookies are cleared across page loads.” (terjemahan) “HTTP Cookies adalah cleared di seluruh halaman memuat.” Don’t rely pada anything persisted client-side untuk sajikan Anda konten.
  • ini declines permissions. “Expect Googlebot to decline user permission requests.” (terjemahan) “Expect Googlebot untuk decline pengguna permission permintaan.” konten gated behind sebuah geolocation, notification, atau camera prompt won’t render.
  • ini doesn’t interact. No scrolling, clicking, atau hovering — so konten itu hanya memuat pada one dari itu events adalah invisible oleh default. (ini adalah root dari sebagian besar lazy-muat dan infinite-scroll bugs; fixes live pada JavaScript SEO halaman.)
  • ini caches aggressively. “Googlebot caches aggressively in order to reduce network requests and resource usage. WRS may ignore caching headers.” (terjemahan) “Googlebot caches aggressively di order untuk reduce network permintaan dan resource usage. WRS dapat ignore caching headers.” itu berarti Google dapat run sebuah outdated versi dari Anda JS atau CSS. Fix ini dengan file fingerprinting — versi Anda filenames (app.4f2a9c.js) so sebuah konten perubahan forces sebuah fresh fetch.

sebuah 2026 experiment: five seconds adalah not sebuah hard execution wall

sebuah ketiga-party WRS experiment reported di July 2026 tested delayed JavaScript dan network activity alih-alih assuming sebuah five-kedua timeout. observed renderer digunakan sebuah virtual clock dan completed delayed permintaan itu took roughly 6–12 seconds dari nyata time. berguna hasil adalah narrow: ini contradicts umum audit aturan itu anything occurring setelah exactly five seconds adalah automatically invisible untuk Google. ini melakukan not prove itu setiap delayed dependency akan finish, itu Google waits indefinitely, atau itu slow client-side delivery adalah safe.

Read experiment dan -nya methodology sebagai ketiga-party evidence alongside Google’s official statement itu render-queue timing memiliki no published fixed delay. dalam praktik, test akhir DOM dan requested resources. sebuah missing API respons, interaction requirement, blocked script, atau state dependency remains sebuah nyata rendering failure bahkan when sebuah stopwatch-based “five-kedua aturan” adalah not.

adalah “two waves of indexing” (terjemahan) “two waves dari pengindeksan” masih sebuah thing?

untuk years mental model adalah “two waves of indexing” (terjemahan) “two waves dari pengindeksan”: Google akan indeks raw HTML pertama, lalu come back days atau weeks later untuk render dan indeks JavaScript konten. itu model adalah now largely outdated. Martin Splitt memiliki said two-waves idea plays less dan less dari sebuah role, itu banyak halaman go melalui render phase bahkan when mereka don’t rely pada JavaScript, dan itu crawling, rendering, dan pengindeksan adalah converging di atas time.

dalam praktik, rendering happens untuk essentially setiap halaman, dan ini adalah biasanya fast. Google’s saat ini documentation says sebuah di-crawl halaman “may stay on this queue for a few seconds, but it can take longer than that” (terjemahan) “dapat stay pada ini queue untuk sebuah few seconds, tetapi ini dapat take longer daripada itu” — there’s no published fixed delay atau timeout. Evidence for this claim Google says a crawled page may stay on the rendering queue for a few seconds, but it can take longer than that. Scope: Google's rendering queue for a page that returns a 200 status and is eligible for rendering. The source gives a variable duration, not a fixed timeout or service-level guarantee. Confidence: high · Verified: Google Search Central: rendering-queue duration Supports: A page may remain on the rendering queue for a few seconds or longer. sebagai sebuah historical data poin, Google staff (Martin Splitt dan Tom Greenaway) once put figure di sebuah median dari tentang five seconds, dengan 90th percentile di minutes — not “weeks” (terjemahan) “weeks” old fear implied. I cite itu figure di my JavaScript SEO guide, tetapi treat ini sebagai sebuah dated conference data poin alih-alih sebuah saat ini published metric — Google hasn’t republished ini sebagai sebuah ongoing angka, dan queue-timing quote above adalah saat ini official framing.

dan there’s no render budget di cara people imagine. Google doesn’t track sebuah per-halaman “how expensive was this to render” (terjemahan) “how expensive adalah ini untuk render” score Anda perlu conserve. rendering adalah cheap di Google’s scale — mengoptimalkan untuk Anda pengguna dan performa, not sebuah phantom render budget.

rendering options

“Where is the HTML built?” (terjemahan) “Where adalah HTML dibangun?” adalah pertanyaan itu decides Anda SEO risk. full menu:

The useful distinction is where initial HTML is produced and what work remains for the browser. Sumber: Rendering

Static generation produces HTML at build time. Server-side rendering produces it per request. Client-side rendering relies on browser JavaScript. Hydration attaches client behavior to server or static HTML. Dynamic rendering varies output by requester and is treated as a workaround.

© Patrick Stox LLC · CC BY 4.0 ·

  • rendering sisi klien (CSR). server mengirim sebuah near-empty shell; browser (atau WRS) runs JavaScript untuk bangun everything. ini adalah “the most problematic one … full client-side rendering where all of the rendering happens in the browser.” (terjemahan) “paling problematic one … full rendering sisi klien where semua dari rendering happens di browser.” ini dapat berfungsi, tetapi Anda’re betting everything pada render succeeding, dan ini adalah slowest untuk get terindeks.
  • rendering sisi server (SSR). server membangun full HTML untuk setiap permintaan. konten adalah di raw HTML, so ini adalah rendah-risk untuk search.
  • Static situs generation (SSG) / prerendering. HTML adalah dibangun once di deploy time. Lowest risk — konten adalah di raw HTML dan ini adalah fast.
  • Hydration (isomorphic / universal). Anda SSR atau SSG pertama paint, lalu JavaScript “hydrates” (terjemahan) “hydrates” ini di browser untuk tambahkan interactivity. ini adalah what sebagian besar modern frameworks melakukan, dan ini adalah rendah-risk untuk konten — hanya watch untuk hydration mismatches itu blank out atau replace konten.
  • Incremental Static Regeneration (ISR). Static halaman regenerated pada sebuah schedule atau pada demand. Like SSG, dengan fresher konten — baik untuk besar catalogs.
  • Edge rendering. SSR run di CDN edge nodes — sama rendah risk sebagai SSR, dengan faster time-untuk-pertama-byte untuk sebuah global audience.
  • Streaming SSR. HTML streamed untuk browser di chunks sebagai ini adalah ready. rendah-risk, tetapi pastikan dapat diindeks konten isn’t trapped hanya di sebuah late atau deferred chunk.

My bottom line dari my JavaScript SEO guide: “Any kind of SSR, static rendering, and prerendering setup is going to be fine for search engines. Gatsby, Next, Nuxt, etc., are all great.” (terjemahan) “apa pun jenis dari SSR, static rendering, dan prerendering setup adalah going untuk menjadi fine untuk mesin pencari. Gatsby, Next, Nuxt, etc., adalah semua great.” framework penting less daripada rendering mode Anda ship — yang sama Next.js app adalah safe atau risky depending pada whether Anda sajikan SSR/SSG atau full CSR.

Dynamic rendering — sebuah workaround, not sebuah strategy

Dynamic rendering berarti detecting bot dan serving them sebuah prerendered, JavaScript-free versi while pengguna get client-side versi. Google adalah now blunt tentang ini: “Dynamic rendering was a workaround and not a long-term solution for problems with JavaScript-generated content in search engines,” (terjemahan) “Dynamic rendering adalah sebuah workaround dan not sebuah panjang-istilah solusi untuk masalah dengan JavaScript-generated konten di mesin pencari,” dan “Dynamic rendering is a workaround and not a recommended solution, because it creates additional complexities and resource requirements.” (terjemahan) “Dynamic rendering adalah sebuah workaround dan not sebuah recommended solusi, because ini membuat additional complexities dan resource requirements.” Evidence for this claim Google describes dynamic rendering as a workaround and does not recommend it as a long-term solution. Scope: Google Search guidance for JavaScript-generated content; server-side rendering, static rendering, or hydration are the recommended alternatives. Confidence: high · Verified: Google Search Central: Dynamic rendering as a workaround I agree, dan I selalu memiliki — untuk menjadi honest I tidak pernah recommended ini, dan I’m glad Google now recommends terhadap ini too. ini adalah serving berbeda konten untuk bot dan pengguna, which adalah awfully close untuk cloaking. Reach untuk SSR, static, atau hydration instead.

One wrinkle: Bing masih suggests dynamic rendering. Microsoft says “bingbot is generally able to render JavaScript” (terjemahan) “bingbot adalah umumnya able untuk render JavaScript” tetapi itu doing ini di scale adalah hard, so “we recommend dynamic rendering as a great alternative for websites relying heavily on JavaScript.” (terjemahan) “kami recommend dynamic rendering sebagai sebuah great alternative untuk situs web relying heavily pada JavaScript.” practical takeaway: SSR/SSG mempertahankan both mesin happy dan sidesteps whole debate.

What ini berarti untuk Anda konten

rendering decides whether Google ever sees Anda JavaScript konten — tetapi seeing ini adalah hanya half job. Once halaman adalah rendered, practical concerns adalah nyata <a href> tautan, field-spesifik parity antara raw dan rendered HTML, robots-directive stage order, lazy konten, infinite scroll, dan soft-404s. itu semua live pada JavaScript SEO halaman, dengan testing workflow (pemeriksaan URL’s rendered HTML, screenshot, dan console).

ini adalah rendering stage dari search pipeline. untuk stages sekitar ini, see crawling (how halaman get fetched) dan pengindeksan (what happens untuk rendered halaman next), atau How Search berfungsi hub untuk whole journey.

One audit aturan adalah worth keeping here: rendered adalah sebuah state, not sebuah universal winner. untuk body konten dan dapat di-crawl tautan, rendered DOM menampilkan what successful JavaScript ditambahkan atau dihapus. untuk judul dan deskripsi, ini menampilkan additional inputs, while Google dapat masih generate sebuah judul tautan atau snippet dari lainnya sources. untuk robots directives, sebuah raw noindex dapat mencegah rendering, so JavaScript removal adalah asymmetric. untuk canonical, Google advises menggunakan one source atau one JavaScript-set nilai alih-alih changing sebuah existing nilai. dan JavaScript cannot perubahan respons HTTP status sudah diterima. pertahankan itu columns separate di evidence dan gunakan Google’s saat ini JavaScript SEO guidance untuk field-spesifik perilaku.

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.