What the crawler gets versus what you see
Drag the handle. The right side is an iframe with scripts genuinely disabled, which is the document as delivered. The left side is the same bytes with JavaScript allowed to run. The counters underneath are a real diff, not an illustration.
Crawler view vs browser view
Loading both documents.
Show the exact bytes being served to the left pane
Both panes receive byte identical HTML. The right pane is sandboxed without allow-scripts, so its JavaScript genuinely never executes. The left pane is the same string with scripts permitted. The counters are a real DOM diff between the two documents, measured after both settle. This is the closest a browser can get to showing you what a non rendering crawler receives.
Rendering is a queue, not a guarantee
Google will render JavaScript. The question is never whether, it is when, how consistently, and whether every other system in the retrieval chain will bother. Most do not.
Two wave indexing
The initial crawl indexes the raw response. Rendering happens later from a separate queue, which means a CSR page can sit indexed but empty for a while.
LLM crawlers mostly do not render
Several major AI training and retrieval crawlers fetch raw HTML only. If your content needs JS to exist, you are invisible to them by construction.
Link discovery dies first
Nodes added is a nuisance. Links added is the real problem, because JS injected links may never enter the crawl frontier at all.