Case study

Eight sites, 1,077 routes, and every page's text readable by a crawler that runs no script

Page text in the raw HTML, on every route

Who this was for. Us. Eight sites: five .com sites, including this one and our consultancy site, and three Dutch mirrors.

The drawing

Route list persiteServer render atbuild timeStatic file perroute, textincludedBrowser picks upthe same pageCrawler readstext with noscriptRobots groups,sitemaps, llmsfiles, IndexNow

The problem

Seven of the eight sites are single page apps. A single page app sends a short HTML shell and builds the page text in the browser. A search engine that runs scripts can read the result. Many AI agents and crawlers fetch the raw HTML and stop there. We wanted every one of them to read each page the way a visitor does.

What we built

A build step that renders each route with React's own server renderer and writes the finished markup into that route's static file. The page arrives with its words already in it, and the browser picks it up from there. Around it, on all eight domains: crawler groups in each robots file, dated sitemaps, llms files, structured data, IndexNow, and Search Console.

What it produced

  • 1,077 of 1,077 routes pass the raw HTML test: at least 90 percent of the words a browser shows are in the HTML before any script runs, with the h1 present.
  • 1,512 of 1,512 crawler fetches answered 200: 20 crawler agents confirmed against vendor documentation, plus a browser agent, on 9 paths across 8 sites.
  • 1,005 of 1,005 sitemap URLs answer 200 with a canonical equal to themselves, and 0 structured data parse errors.
  • 234 of 234 Chrome checks at desktop and phone widths, with 0 console errors and 0 hydration errors.
  • IndexNow took 1,005 URLs on its first run, and 8 of 8 domains are verified in Search Console.

What runs now

Every build renders the static pages, so a new route ships with its text in the HTML. IndexNow and Search Console stay connected on all eight domains.

Your scenario

If your site is a single page app, fetch one page with no script and count the words. Our Agent Accessibility Auditor on Apify checks llms.txt, the robots rules for AI crawlers, structured data, and render mode, each read off a fetch. Once agents can read you, OmniSEO tracks where AI search engines show your brand. Send us a URL and we'll tell you what an agent sees today.

Related tools: Apify, OmniSEO, Agent Accessibility Auditor on the Apify Store, Agent Accessibility Auditor

Some of the links on this page are affiliate links.

Client names are always kept confidential at MMG, so they have been removed from this case study.

Published September 22, 2026

Last updated September 23, 2026

All case studies