Yeah, Google *can* render JavaScript, but in practice I still treat JS-heavy pages as a risk factor rather than something you can just “trust.”
A few real-world points from testing client sites and my own niche projects:
### 1) Does Google still have problems rendering JS-heavy pages?
Yes, sometimes.
The common issue isn’t that Google *never* renders JS. It’s more that:
– rendering can be delayed,
– important content may not get rendered consistently,
– internal links injected late may be missed,
– and Google may index the initial HTML first, then come back later for rendering if it feels the page is worth the crawl budget.
On smaller sites this can be fine. On larger sites, or pages with weak crawl priority, I’ve seen Google index only the shell, partial content, or stale content.
### 2) Is SSR better than CSR for SEO?
In most cases, yes.
If the content matters for rankings, SSR or pre-rendering is usually safer than pure CSR.
Why?
Because with SSR:
– the meaningful content is in the HTML response,
– bots don’t need to execute as much JS to understand the page,
– and you reduce dependency on Google’s rendering queue.
CSR can still work, but it’s more fragile. I’d only rely on it if:
– the site is small,
– content is not heavily text-driven,
– and you’ve tested indexing thoroughly.
For affiliate/niche sites, I usually prefer:
– SSR,
– static generation,
– or hybrid rendering for dynamic sections.
### 3) How can I test whether Google actually sees my content?
Best practical checks:
#### Use URL Inspection in GSC
Look at:
– **View Crawled Page**
– **Rendered HTML**
– **Screenshot**
If the rendered HTML contains your main text, that’s a good sign. If it doesn’t, Google may not be seeing it reliably.
#### Compare:
– **View Source**
– **Rendered DOM in Chrome**
– **Rendered HTML in GSC**
If the important content only exists in the DOM after JS, you’re depending on rendering.
#### Use `site:` searches cautiously
Not perfect, but if pages are indexed with thin snippets or missing key sections, that’s often a clue.
#### Test with `curl`
Fetch the raw HTML and see what’s actually delivered before JS runs. If the page is nearly empty, that’s a warning sign.
#### Use log files