JavaScript-only evidence: compare initial and rendered HTML
SYNTHETIC EXAMPLE — Asterfall Systems, OrbitDesk, every .example URL, capture, selector, change, prompt, context, and answer mark below are fictional; this is not RankEcho data, customer data, provider evidence, or a benchmark. A JavaScript-only finding here means one predeclared material selector is absent from an eligible initial HTTP response and present in the paired browser-rendered DOM. It is a delivery observation for one URL, not evidence that any provider could or could not render, index, cite, recommend, or rank the page. Site traffic is a separate outcome and is not required.
What does JavaScript-only evidence mean here?
Freeze one canonical public URL, a capture window, and exact selectors before comparing anything. A row is JavaScript-only only when both collections are eligible, the initial selector is absent, and the rendered selector is present.
Do not infer provider retrieval from either capture. Google documents its own rendering process, while other systems can behave differently. A present initial value is compatibility evidence, not an eligibility or outcome guarantee.
Which capture states must remain separate?
Record requested and final URL, status, canonical, robots directive, challenge state, channel, and time. A redirect, challenge, unavailable attempt, or failed browser run is a competing state, not proof that a selector is absent.
In this synthetic example, H01 and H02 form the eligible comparison. H03 remains unavailable and H04 remains failed; neither contributes a negative selector result.
| Attempt | Channel | State | HTTP | Final URL | Canonical / robots | Interpretation |
|---|---|---|---|---|---|---|
| H01 | initial-http | observed | 200 | https://asterfall.example/products/orbitdesk | https://asterfall.example/products/orbitdesk; index,follow | The direct response returned the declared canonical page without a redirect or challenge. |
| H02 | browser-rendered | observed | 200 | https://asterfall.example/products/orbitdesk | https://asterfall.example/products/orbitdesk; index,follow | The browser completed the declared rendering wait and preserved the same URL, canonical, and robots directive. |
| H03 | initial-http | unavailable | not observed | not observed | not observed | A repeat request did not return an eligible response; it remains unavailable rather than a mismatch. |
| H04 | browser-rendered | failed | not observed | not observed | not observed | The repeat browser collection failed before a DOM snapshot; it remains failed rather than absent. |
Worked synthetic selector ledger
The eight rows compare exact selector values. Four are present in both captures, three material rows appear only after JavaScript, and one locally predeclared optional row is missing from both.
E08 is a separate content question. Missing from both captures does not make it a rendering defect, and the Find result does not invent the absent claim.
| ID | Layer and selector | Initial HTML | Rendered DOM | Class | Material | Finding |
|---|---|---|---|---|---|---|
| E01 | metadata: title | OrbitDesk evidence workspace | OrbitDesk evidence workspace | present-both | yes | The title is byte-equivalent in both eligible captures. |
| E02 | visible-copy: main h1 | OrbitDesk | OrbitDesk | present-both | yes | The primary heading is available before and after JavaScript. |
| E03 | visible-copy: main #short-answer | absent | OrbitDesk maps cited claims to saved source snapshots. | javascript-only | yes | The registered short answer appears only after the client effect completes. |
| E04 | visible-copy: main [data-evidence-list] | absent | Three fictional source records with dates and limitations | javascript-only | yes | The registered evidence list is absent from the initial response and present in the rendered DOM. |
| E05 | json-ld: script[type='application/ld+json'] Product | absent | Product: OrbitDesk; url: https://asterfall.example/products/orbitdesk | javascript-only | yes | The matching fictional Product node is injected only after the client effect completes. |
| E06 | link: link[rel='canonical'] | https://asterfall.example/products/orbitdesk | https://asterfall.example/products/orbitdesk | present-both | yes | The self-canonical is stable across both eligible captures. |
| E07 | metadata: meta[name='robots'] | index,follow | index,follow | present-both | yes | The declared robots directive is stable across both eligible captures. |
| E08 | visible-copy: main #enterprise-sla | absent | absent | missing-both | no | The locally predeclared optional selector is missing from both snapshots and is not a JavaScript-only finding. |
Which rows hand off to Fix?
Only E03, E04, and E05 are both material and JavaScript-only. They describe one OrbitDesk evidence panel: its visible short answer, visible evidence list, and matching fictional Product node.
The handoff preserves the browser-rendered values as the intended public meaning. Fix changes their delivery boundary; it does not rewrite their claims or make an answer-system promise.
What deterministic validation completes Find?
The checks below reconcile URL identity, collection eligibility, selector arithmetic, and the exact actionable set before a repair is considered.
| Check | Required result | State |
|---|---|---|
| Capture identity | Eligible initial and rendered captures use one exact requested and final URL | pass |
| HTTP boundary | Eligible captures return 200 without a redirect or challenge | pass |
| Canonical and robots | Self-canonical and index directive match in both eligible captures | pass |
| Selector arithmetic | 4 present-both + 3 JavaScript-only + 1 missing-both = 8 | pass |
| Actionable scope | Only material JavaScript-only rows E03, E04, and E05 continue | pass |
| Missing collections | Unavailable and failed repeats remain unknown rather than absent | pass |
How does this connect to RankEcho?
RankEcho's page-level audit and Agent Readiness check can provide bounded public-page signals. Neither currently supplies this companion ledger's exact paired selector classifications or establishes what an answer provider rendered.
Use the audit workflow to organize the evidence, then keep the raw response, rendered snapshot, exclusions, and uncertainty alongside the three selected rows.
Sources reviewed
Provider eligibility and measurement claims below were checked against primary documentation. These records do not establish a universal selection formula, causation, or a guaranteed ranking, impression, recommendation, or citation.
3 claim-level source records
| Claim reviewed | Official source | Review record |
|---|---|---|
| Google documents separate crawling, rendering, and indexing phases, and explains that an app shell can omit material content from the initial HTML until JavaScript executes. | Google Search: JavaScript SEO basics | Checked 2026-09-07 · Current Google Search JavaScript documentation · This supports comparing an HTTP response with Google's rendered view. It does not establish how another provider fetches or renders a page, or guarantee indexing, citation, ranking, or traffic. · Confidence: High |
| Google recommends inspecting loaded resources, JavaScript errors, and rendered HTML with its testing tools when diagnosing JavaScript-powered pages. | Google Search: fix JavaScript problems | Checked 2026-09-07 · Current Google Search JavaScript troubleshooting documentation · The diagnostic steps describe Google Search tooling and potential rendering problems. They do not identify an AI answer provider's behavior or prove why a page was omitted, cited, or ranked. · Confidence: High |
| Google says ordinary Search eligibility applies to AI Overviews and AI Mode, important content should be available in textual form, and displayed responses and links can vary. | Google Search: AI features and your website | Checked 2026-09-07 · Current Google Search AI-features documentation · This is Google-specific eligibility guidance. It does not make initial HTML a universal provider requirement or guarantee crawling, indexing, selection, citation, recommendation, ranking, or traffic. · Confidence: High |
Frequently asked questions
No. It means only that a predeclared selector was absent from this eligible initial response and present in this paired rendered DOM. Provider retrieval and rendering are not observed.
No. A failed or unavailable collection retains an unknown value and does not enter the present-or-absent selector partition.
Not under this rule. It is a separate content question and does not enter the JavaScript-only repair set.
It establishes only a delivery property for the captured response, not a guarantee of crawling, indexing, ranking, citation, recommendation, or traffic.
Only material rows that are absent in an eligible initial response and present in the paired eligible rendered DOM move forward.
