Every crawler reads the initial HTML response. Only some go on to execute JavaScript and read the rendered DOM: Googlebot renders with an evergreen Chromium 4,389 , Bingbot with Edge's engine (Crawl, Render, Index), and Applebot "may render the content of your website within a browser". Google still recommends server-side or pre-rendering because "not all bots can run JavaScript": a December 2024 Vercel 3,061 and MERJ study found that GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot and Common Crawl's CCBot executed no JavaScript at all.

Client-side rendering (CSR). The shell has no text and no <a href> links, so Google finds nothing until the page leaves the render queue, and a non-rendering bot sees an empty page.
Server-side rendering (SSR) with hydration. Text, links, <title> and JSON-LD arrive in the response. Content fetched only after hydration, such as reviews loaded in useEffect, falls back to CSR rules.
Static site generation (SSG) and ISR. Every crawler gets complete HTML from a CDN; the risk is stale prices until the page is regenerated.
Dynamic rendering, prerendered HTML served only to bots, "was a workaround and not a long-term solution"; Google recommends SSR, static rendering or hydration instead.