analysis / 12 Aug 2026 / 1 min read
Server rendering is the whole GEO story right now
We disabled JavaScript on every generated marketing page and counted the bytes of real text. The gap between the top and the bottom of the cohort is nearly seven to one.
By Priya Anand | Updated 19 Aug 2026
The measurement
For each product we take the marketing page generated by prompt 8, fetch it with scripts blocked, strip tags and count the bytes of actual text content. We record that as html_bytes_no_js on every product page.
The range in the current cohort runs from just over 6 KB to nearly 41 KB. The low end is not a small page. It is a page that contains a loading shell and nothing else until a bundle executes.
Why this matters more than it used to
Search crawlers render JavaScript, eventually, on a second pass, subject to budget. Language model crawlers largely do not. If a model is assembling an answer about your product and your text only exists after hydration, you are not in the answer.
This is the entire reason the SEO and GEO axis carries 12 points rather than the 4 or 5 a traditional review would give it. The public surface a builder generates determines whether the thing you build can be found and cited at all.
The secondary signals
Beyond byte count we check for a title, a meta description, a canonical link, a robots policy, a sitemap and any structured data present in the initial HTML. Products that emit structured data without client rendering score in the top band. Products that emit none score in the bottom band regardless of how fast the page paints.
What good looks like
The best result in this cohort ships server rendered text, a canonical link, a sitemap and structured data in the first response, and posts an LCP under 1.6 seconds on a throttled connection. That is not exotic. It is the default behaviour of a server rendered framework, and roughly half the cohort still does not do it.