lowMarket Presence

Server-Rendered Content

AI crawlers don't always render JavaScript. Pages that ship a JS-only shell may be invisible to AI systems. Advisory only — SaaSalyst does NOT score this check, because SSR migration isn't a quick fix for most founders. Surfaced so you know it's there.

What SaaSalyst Checks

SaaSalyst loads your homepage HTML in Cheerio (no JS execution) and counts visible body text after stripping <script>, <style>, and <noscript> elements. The check passes at ≥500 visible chars; warns below the threshold. The check is excluded from your overall score.

Why This Matters

Google's Googlebot renders JavaScript reliably. Most other crawlers do not. GPTBot, ClaudeBot, PerplexityBot, and OAI-SearchBot all have varied and inconsistently-documented JS rendering behavior — sometimes they render, sometimes they don't, often it depends on time-of-day load. The safest assumption: AI crawlers see your initial HTML response, not the post-render DOM.

For SaaS products built as single-page apps (Vite + React, Create React App, Vue + Vue Router with no SSR), the initial HTML is often <div id="root"></div> with a script tag. Cheerio sees zero meaningful content there. AI crawlers that don't render JS see the same.

The fix is non-trivial — full SSR migration (Next.js, Remix, Nuxt, SvelteKit) or pre-rendering (prerender.io, Rendertron) — and is not appropriate for many founders. Penalizing JS-rendered sites would be unfair, and the empirical case for JS rendering causing AI citation drops is thin (no clean published study).

SaaSalyst flags this as advisory: surfaces the signal, doesn't score it. If you're early-stage SPA, know it's a possible AI discoverability bottleneck. If you're mid-stage and revenue-positive, consider SSR for the next version.

How to Fix It

  1. If you're on Next.js: ensure pages use Server Components or getServerSideProps / getStaticProps for content that must render in initial HTML.
  2. If you're on Vite + React or Create React App: consider migrating to Next.js or Remix, or add a pre-rendering step (prerender.io, Rendertron) for marketing pages.
  3. If migration is too expensive: at minimum, ensure the initial HTML response includes the page title, meta description, h1, and a paragraph summary in <body>. SPA shells with empty <div id="root"> are the fail case.
  4. Test with curl: curl -A "Mozilla/5.0 (compatible; GPTBot/1.0)" https://yourdomain.com | grep -E '<h1|<p' — if you see only <script> tags, AI crawlers see the same.

Frequently Asked Questions

Will my SaaS get downranked in AI search if I'm on a SPA?

Possibly, but the empirical evidence is mixed. Some AI systems render JS, others don't. SaaSalyst flags this as advisory — we surface the signal so you know it's there, but we don't score it because the impact varies and the fix isn't proportionate to the risk for most founders.

What's the cheapest fix?

Pre-rendering. Tools like prerender.io intercept crawler requests, render the page server-side once, and cache the result. No code migration required. Roughly $30/month for typical SaaS scale. SaaSalyst flags this advisory so you know the option exists.

Why is this advisory and not scored?

Because the fix (full SSR migration) is expensive and the empirical citation impact is unclear. Penalizing JS-rendered sites with a score hit would be unfair to founders who can't justify the migration cost. SaaSalyst surfaces it as a signal so you know it's there, classified as advisory per ADR-015 + ADR-016.

Check Your SaaS Now | Free

SaaSalyst scans your website in 30 seconds and checks for Server-Rendered Content along with 101+ other business readiness signals.

Scan Your App

Related Checks SaaSalyst Runs