
Server-side rendering builds the page's HTML on the server before it reaches the browser, while client-side rendering sends a mostly empty page and lets JavaScript build the content in the browser. For public, content-led pages, server-side rendering or static generation usually gives faster first loads and more dependable SEO. Client-side rendering suits logged-in dashboards and highly interactive tools.
Key takeaways
- Rendering means turning code and data into the HTML a browser displays. The question is where and when that happens: on the server, at build time or in the browser.
- Server-side rendering and static generation deliver readable content immediately, which helps first load and crawling. Client-side rendering delays content until JavaScript runs.
- As far as is publicly documented, major search engines can render JavaScript, but it adds delay and risk compared with receiving finished HTML.
- Most modern frameworks let you mix approaches page by page. You rarely need to pick one for the whole site.
- Always test what a crawler or social platform actually sees, rather than trusting what appears in your own browser.
What does rendering mean in plain English?
When you open a web page, your browser needs HTML to display. Rendering is the work of producing that HTML from templates and data. You can think of a restaurant. Server-side rendering is a dish cooked in the kitchen and served ready to eat. Client-side rendering is a meal kit delivered to your table with the instructions, and you cook it yourself. Both can end with the same meal, but the waiting and the effort fall in different places.
How does client-side rendering work?
In client-side rendering, the server sends a thin HTML shell plus JavaScript files. The browser downloads the scripts, runs them, fetches data from an API and then builds the page.
Strengths
- Highly interactive experiences feel smooth once loaded, because navigation between views does not need a full page reload.
- The server stays simple; it mostly serves static files and an API.
- It fits applications behind a login, where search visibility does not matter.
Weaknesses
- The visitor may see a blank or loading screen until scripts finish, which is hard on slow phones and weak networks.
- Content depends on JavaScript executing correctly. One failed script can leave the page empty.
- Search engines and other bots may need an extra rendering step to see content, which adds delay and risk.
How does server-side rendering work?
With server-side rendering, the server assembles the HTML for each request, including content from your database or CMS, and sends it ready to display. The browser shows meaningful content quickly, then downloads JavaScript to make the page interactive.
Hydration
Hydration is the step where the browser attaches JavaScript behaviour to that already-visible HTML so buttons, forms and menus start working. Until hydration finishes, a page can look ready but not respond to taps. Keeping scripts lean and sending less JavaScript shortens that gap.
Trade-offs
The server does work on every request, so it needs capacity and good caching. Responses depend on the speed of your database and APIs, which makes monitoring important. Our guide on web hosting options covers where this work can run.
What are static generation and incremental approaches?
Static generation builds pages ahead of time, usually during deployment, and serves them as ready-made files from a content delivery network, or CDN. The result is very fast and cheap to serve, and it holds up under traffic spikes. It suits blogs, documentation, marketing pages and many product pages.
The catch is freshness. If content changes often, rebuilding everything can feel slow. Hybrid approaches handle this:
- Incremental regeneration: Pages are rebuilt in the background after a set period or when content changes, so visitors still get static speed.
- On-demand revalidation: Your CMS triggers a rebuild of just the pages that changed.
- Mixed rendering: Static for marketing pages, server-rendered for pages that depend on the request, client-side for dashboards.
- Streaming and partial rendering: Some frameworks send the important parts of a page first and fill in slower sections afterwards.
Frameworks in the React family such as Next.js, Vue-based ones such as Nuxt, and others in the Svelte, Angular and Astro families offer several of these modes. Exact names and defaults differ and change over time, so check your framework's current documentation.
How does each approach affect speed, SEO and sharing?
First load and interactivity
Static and server-rendered pages usually show content sooner than client-rendered ones, which tends to help the loading measures in Core Web Vitals. Interactivity depends on how much JavaScript the page ships, whichever rendering model you choose. A server-rendered page that loads a huge script bundle can still feel sluggish.
SEO and crawling
As far as is publicly documented, major search engines can process JavaScript and index content that is rendered in the browser. In practice there are costs: rendering can happen after the initial crawl, so indexing of new or changed pages may be delayed; resources blocked from crawling, errors or timeouts can leave content unseen; and links built only by script may not be followed reliably. Delivering complete HTML for important content, titles, headings, canonical tags and internal links removes that uncertainty. Our technical SEO checklist covers related checks.
Social previews
Link previews on messaging and social platforms typically read the page's meta tags from the initial HTML response and often do not run JavaScript. If your title, description and preview image are injected by client-side script, shared links may show a blank or generic card. Put those tags in the server response.
Caching and CDNs
Static pages cache easily at the edge, close to the visitor. Server-rendered pages can be cached too, but you need rules for what varies per visitor. Never cache a page containing personal data and then serve it to someone else.
When should you use client-side rendering?
Client-side rendering still has a place:
- Dashboards and admin panels behind a login, where SEO is irrelevant and interactivity dominates.
- Complex editors, maps and tools with a lot of state in the browser.
- Personalised widgets inside an otherwise static page, such as a basket count or account menu, loaded after the main content.
For personalisation, a good pattern is to render the shared content statically and fetch the personal parts in the browser, so the cacheable part stays fast. Our Next.js vs WordPress comparison shows how these choices play out for ordinary business sites.
How do you choose by page type?
- Home, service and landing pages: static generation or server rendering.
- Blog and documentation: static generation with revalidation.
- Product and category pages: static with incremental updates, or server rendering.
- Search results and filtered lists: server rendering, or client rendering with care for crawlable URLs.
- Account area and dashboards: client-side rendering.
- Checkout: a server-rendered shell with interactive components.
Decide by asking: does this page need to be found in search or shared? Does its content change per visitor? How often does it change? Who will edit it?
How do you test what a crawler sees?
- View the raw response. Use your browser's view-source option, which shows the HTML before scripts run, and check that headings, text, links and meta tags are present.
- Disable JavaScript. If the main content vanishes, you depend on client-side rendering.
- Use search engine inspection tools. The URL inspection tool in the search engine's webmaster console, as publicly documented, shows the rendered HTML as its crawler saw it.
- Share a test link. Paste it into a messaging app and look at the preview.
Common mistakes
- Building a public marketing site as a client-only app, then wondering why indexing is slow.
- Putting key text only behind tabs or interactions that need script to load.
- Shipping large JavaScript bundles to every page regardless of rendering mode.
- Caching personalised responses publicly.
A worked example
Imagine a furniture retailer with a product catalogue, a blog and a customer account area. The team builds the entire site as a client-rendered app. Product pages load slowly on mid-range phones, shared links show no preview image, and new products take a long time to appear in search. They move to a hybrid setup: product and blog pages are statically generated and refreshed when the CMS changes, the basket and account menu load in the browser, and the account area stays client-rendered behind login. They then verify with view-source and a shared-link test.
FAQ
Is server-side rendering better than client-side rendering for SEO?
For public pages, usually yes, because the content arrives as complete HTML. As far as is publicly documented, search engines can render JavaScript, but that adds delay and the chance of missed content. Client-side rendering can still work for pages where search visibility does not matter.
What is the difference between server-side rendering and static site generation?
Server-side rendering builds the page when each request arrives, so it can use fresh or personalised data. Static generation builds pages in advance and serves them as files, which is faster and cheaper but needs a rebuild when content changes. Many sites use both.
Does Google index JavaScript content?
As far as is publicly documented, Google can render JavaScript and index the resulting content, but rendering may be queued after crawling and errors can leave content unseen. For important pages, delivering the key content and links in the initial HTML is the safer approach.
Can I switch from client-side to server-side rendering without rebuilding everything?
Often you can move page by page, starting with public pages that matter for search, depending on your framework and how the app is structured. Some apps need more restructuring than others, so a short technical review is the best first step.
Related reading
- Next.js vs WordPress: Which Is Right for Your Business Site?
- Core Web Vitals: What They Are and How to Improve Them
- Technical SEO Checklist for Business Websites
Next steps
List your site's page types and mark which ones need to be found in search, shared or personalised. Test two or three key pages with view-source and a shared-link preview, and note where content is missing. If you would like help choosing or migrating a rendering approach, our website development team can review your setup, and you can contact us to start the conversation.



