Pattern survival mapping: what 9 LLM surfaces actually see across JS content patterns
By Jakub Sawa · Published
We measured what crawlers and on-demand LLM fetch tools actually receive when they request the same page rendered through eight different JS content patterns. This is the v0.4 pivot from the original mode-axis experiment.
Why this question matters now
Most renderability literature was last published in 2019. Since then, three things changed materially: AI crawlers (GPTBot, ClaudeBot, PerplexityBot) became dominant traffic for some niches; on-demand fetch tools (ChatGPT browse, Claude Web, Perplexity Sonar) became a parallel retrieval pathway with different rules; and Bing's rendering behaviour has been a black box since the last MERJ tests.
Method, in two sentences
Eight JS content patterns × five page types × three rendering modes (SSR baseline, CSR negative control, optional SSG sanity) — about 50 cells. Each cell is hit by 25+ user-agent classes (batch crawlers, on-demand LLM fetchers, search-RAG bots) and every hit is logged with the marker UUID it actually saw.
Pre-registered hypotheses
Six hypotheses were committed before any v0.4 data was collected (see METHODOLOGY.md §1.5):
- H1 (sanity):
ssr/clean≡ssg/cleanfor batch crawlers. - H2:
ssr/cleanfully visible to all batch AI crawlers. - H3 (main test): patterns
js-images,js-links,click-reveal,js-fetched,hash-routing,late-loadedproduce invisible main content to batch crawlers. - H4: Googlebot eventually renders all patterns, with measurable per-pattern delay.
- H5: On-demand fetch tools — exploratory; GPTBot vs ChatGPT-User split for the same pattern is the watched signal.
- H6: Bing's pattern survival is inconsistent — first systematic data since 2019.
Related
- Pattern survival per bot class — early findings
- Bing rendering revisited: first systematic data since 2019
- On-demand vs batch pathway: GPTBot vs ChatGPT-User