TL;DR
- 32 of the 103 SaaS sites we crawled have empty body content before JS hydration. Google indexes them anyway, but with a delay measured in days and a much higher rate of partial indexing.
- CSR-only React stacks underperform SSR / SSG stacks by 40-50 percentage points on indexed-page share. The gap is the dominant driver of organic search underperformance for funded SaaS.
- The most common blocking issue is internal links rendered via onClick handlers (41% of sites). Crawlers can't follow them. Sites lose interlinking signal that compounds over months.
Funded SaaS startups invest heavily in marketing pages and product content. They also disproportionately deploy JavaScript-heavy stacks where what you see in the browser is not what crawlers see in the raw HTML. We wanted to put numbers on the gap.
We sampled 103 funded SaaS companies (recent Series A rounds via Crunchbase Discover), crawled their marketing surface (typically the homepage, ~10 product pages, and ~10 blog posts), and compared the rendered DOM against the raw HTML response. We cross-checked indexed-page share against Ahrefs index data and, where available, Search Console coverage reports. The render-vs-raw approach mirrors Google's own publicly-documented two-wave indexing model, per the Google Search JS SEO basics.
Three original metrics: Render-Dependent Indexability (RDI), Crawl Budget Efficiency (CBE), and JS-Stripped Coverage (JSC). All defined below with formulas.
Methodology
The 103-site sample was drawn from public Series A rounds in the last 18 months. Filters: B2B SaaS, English-language site, >100 indexable URLs in sitemap. We crawled the home, top product page, and a top blog post for each, captured both raw HTTP response and post-hydration DOM, and ran a structured diff. Indexed-page share comes from Ahrefs index counts compared to sitemap counts.
Finding 1: CSR-only stacks lose 40+ points of indexability
Stacks split cleanly into two groups. Server-rendered or statically-generated stacks (Next SSR/SSG, Vite SSG, Astro/11ty, WordPress, Webflow) sit at RDI 91-98%. Client-rendered stacks (Next CSR, React+Vite CSR) sit at RDI 35-42%. The gap is consistent across sample slices — vertical, site age, traffic volume.
Finding 2: RDI predicts indexed-page share with high confidence
RDI plotted against indexed-page share gives the cleanest correlation in the dataset. The break point is around RDI 70 — below it, indexed share collapses fast. Above it, sites get most of what their sitemap promises into Google's index. This is the single most useful diagnostic in the report — measure RDI on your site before you debate any other technical SEO concern.
Finding 3: The top three issues are universal and fixable
Most-affected issues:
- JSON-LD added post-hydration (47%) — Schema markup invisible to crawlers that don't execute JS. Most teams add schema via React components; crawlers see the empty placeholder.
- Internal links via onClick (41%) — clicking a div with a router push doesn't produce a crawlable href. Internal linking equity evaporates.
- Images src lazy-injected via JS (39%) — image search and image alt-text contributions are missed; CLS impacts Core Web Vitals on top.
How we score render-dependence and indexability
1. Render-Dependent Indexability (RDI)
RDI = (Tokens in raw HTML body ÷ Tokens in rendered DOM body) × 100
The single best diagnostic. RDI 90+ is a clean SSR / SSG site. RDI under 60 is a CSR app pretending to be a marketing site.
2. Crawl Budget Efficiency (CBE)
CBE = Indexed pages ÷ Pages requested per month by Googlebot
Read from log files or Search Console crawl-stats. CBE 0.8+ is healthy. Below 0.4, Google is spending crawl budget on pages that never make the index.
3. JS-Stripped Coverage (JSC)
JSC = (Working internal links with JS off ÷ Working internal links with JS on) × 100
The interlinking-equity proxy. Below 60 means most internal navigation depends on JS, which depresses both crawl reach and link equity.
Four counterintuitive patterns
- Indexed-page share decays over time on CSR sites even when the sitemap is clean. We tracked 8 sites over 6 months — CSR sites lost an average of 11% indexed-page share without any change to content.
- The single biggest indexability win is moving JSON-LD into raw HTML. Three of our client engagements saw 14-22% organic traffic lift from this change alone.
- Hreflang errors compound silently when set client-side. International SaaS sites with hreflang only after hydration index correctly in en-US but lose signal in regional locales.
- The pagination / infinite scroll JS-only pattern is the worst-leverage issue. 26% of sample sites; almost all blog post indexing depends on it. Switching to crawlable pagination is the highest-ROI fix in the issue table.
Recommendations
For SaaS founders
Move marketing pages off CSR. The product app can stay CSR if it must — search engines don't index app routes meaningfully — but marketing surfaces (home, pricing, blog, docs, comparison pages) should be SSR or SSG. The traffic lift is significant and the migration is bounded. Our companion Schema.org A/B study covers the second-order question: once your raw HTML contains the body, which JSON-LD types actually move CTR. And once you're indexed, indexing decay is the discipline that keeps you there.
We run this work as part of our technical SEO for SaaS engagement: prerender or SSR the marketing surface, audit and fix the issue list above, monitor indexation recovery for 90 days post-deploy.
For engineers building new SaaS
Default to SSR or SSG on the marketing surface. Next App Router with PPR, Astro, or Vite SSG with a prerender step all work. The only hard rule is that the raw HTML response has to contain the body, the canonical, the metadata, and the internal links. We bake this into every SaaS web app development engagement we ship.
Limitations
The 103-site sample is biased toward English-speaking, VC-funded SaaS. Bootstrapped SaaS, regional SaaS, and enterprise software in Java/.NET stacks have different shapes. Index counts from third-party tools approximate Google's real index — verify with Search Console for your own site.
The single highest-impact JS SEO fix
Run an RDI check on your own marketing site this afternoon. Open it with JavaScript disabled. If the body is empty, the metadata is missing, or the internal links don't work, you're on the wrong side of a 40-point indexability gap. Fixing it is the highest-leverage technical SEO move available to most funded SaaS sites.
If you want a private RDI / CBE / JSC report on your own site, send the URL — we'll run the same crawler and send the report back free.
■ Related research
Related research
The two companion SEO studies — what makes Google drop pages, and which schema types actually move rankings:
■ Related services
Fix this on your own site
Two services that map exactly to the issues in this report:

About the author
Ritesh — Founding Partner, Appycodes
LinkedInCo-authored with Soumodip Mukherjee, Technical SEO Lead
Ritesh runs engineering at Appycodes; Soumodip leads the technical-SEO practice and operates the crawler used for this 103-site study. Recent client audits include a Series A B2B SaaS that recovered 14% organic traffic after we fixed the issues in finding 3, and a developer-tools company whose marketing surface had a render-dependent table of contents. The Skindays integration story in our companion WordPress performance study touches the same render-vs-raw question on a hybrid stack.
