The challenge: a site search engines couldn’t read
In a browser, the QuickPass AiD site worked fine. To a crawler, it was close to blank. The site was built client-side-only: the server responded with a nearly empty HTML shell, and JavaScript assembled the actual content afterward. Search engines that don’t fully execute JavaScript — and the growing set of AI crawlers that mostly don’t — saw pages with nothing on them worth indexing.
For a multi-location service business, the damage multiplies. Every location page, every service page — each one a chance to be found by someone searching nearby — was invisible for the same underlying reason. No amount of content work or link building fixes a page a crawler can’t read.
The approach: server-render everything, change nothing for users
The fix was architectural, not cosmetic: rebuild the site so every page is rendered on the server and arrives as complete HTML on the first response. Users saw the same site; crawlers, for the first time, saw the actual content — headings, service descriptions, location data, all present before a single line of JavaScript runs.
The rebuild also imposed the structure a multi-location service needs to be found: a clearly-scoped page per location and per service with clean URLs and internal links tying them together, so search engines could understand not just that the pages existed but how the business’s footprint fit together.
The results: indexation unlocked, visibility switched on
With full HTML reaching crawlers, indexation unlocked across the site — every location, every service, eligible to rank for the local searches that drive this kind of business. The site went from technically invisible to structurally sound, and the same fix future-proofed it for AI search: systems like ChatGPT and Perplexity cite pages they can read as raw HTML, which client-side-only sites systematically fail.
This is the case that proves a point we make often: for JavaScript-heavy sites, server-side rendering is the single highest-leverage SEO decision available — because it doesn’t improve a signal, it removes a disqualifier.
