Modern websites and web apps are often built with JavaScript frameworks like React, Next.js, Angular or Vue. They can be fast and interactive, but if set up carelessly, Google may struggle to see their content, links and metadata.
How Google handles JavaScript
Google can render JavaScript, but rendering may happen after the initial crawl, and errors or blocked resources can stop content from being seen. Content that only appears after user actions, such as clicking a tab, may not be indexed at all.
Rendering options
Approach | How it works | SEO impact |
Client-side rendering (CSR) | Browser builds the page with JavaScript | Riskiest for SEO; content depends on rendering |
Server-side rendering (SSR) | Server sends complete HTML for each request | Strong for SEO; content visible immediately |
Static site generation (SSG) | Pages pre-built as HTML at build time | Excellent for SEO and speed |
Hybrid | Mix of SSR, SSG and client-side features | Common with Next.js; good when planned |
For marketing pages, service pages and blogs, SSR or SSG is usually the best choice.
Best practices
• Important content in the HTML: headings, text and links should be present without user interaction
• Real links: use <a href="/page"> for navigation, not click handlers only
• Unique metadata per page: titles, meta descriptions and canonical tags rendered server-side
• Clean URLs: avoid hash-based routing (#/page) for indexable pages
• Don’t block resources: allow Google to load CSS and JavaScript files
• Handle errors properly: missing pages should return a real 404 status
• Lazy loading: make sure lazy-loaded content still appears when Google renders the page
• Structured data: include it in the rendered HTML
How to test
• URL Inspection in Search Console: view the rendered HTML and screenshot
• Rich Results Test: checks rendering and structured data
• View page source vs rendered DOM: compare what’s in the initial HTML
• Crawl with a JavaScript-enabled crawler
Frequently asked questions
Is React bad for SEO? No, when used with server-side rendering or static generation, as frameworks like Next.js support.
Can single-page apps rank? They can, but need careful setup. For content that must rank, server-rendered pages are safer.
Does JavaScript affect speed? Heavy JavaScript can slow interactions and hurt Core Web Vitals. Keep bundles lean.


