Skip to main content
Cautionary Tale5 min read

The Great SPA Blackout: How We Killed Half Our SEO Without Noticing

By The bee2.io Engineering Team at bee2.io LLC

A postmortem on client-rendered SPAs that vanish from search engines. Learn how two-phase crawling exposed the invisible content crisis.
A postmortem on client-rendered SPAs that vanish from search engines. Learn how two-phase crawling exposed the invisible content crisis.

The 2 AM Alert Nobody Expected

Picture this: it's August 2026, and a mid-market SaaS platform just watched their organic traffic crater by 47% overnight. Not gradually. Not over a quarter of strategic pivot decisions. Overnight. Their Slack channel erupted like someone had unplugged the internet.

Here's the thing nobody wants to admit at the standup meeting: they'd built an absolutely gorgeous single-page application. React, Vue, Svelte - doesn't matter. It loaded fast for users, felt snappy, made the engineers high-five each other. It was also completely invisible to half the internet. Specifically, the half that matters: search engines during their first crawl pass.

This is the web development equivalent of throwing a beautiful party in a house with all the curtains drawn and the door locked. Sure, everyone inside is having a great time, but nobody driving by has any idea it exists.

The Detection Phase: When Your Dashboard Started Screaming

The incident timeline looked like this:

  1. 14:30 UTC - Monday: Traffic looked normal. Analytics dashboard was doing its thing.
  2. 03:15 UTC - Tuesday: An automated crawler (the kind search engines use, not the creepy kind) hit their site and found... basically nothing. Just a loading spinner and some HTML scaffolding.
  3. 06:45 UTC - Tuesday: Google's second-phase crawl finally executed all that JavaScript and saw the real content. Too late. First impressions had already tanked their indexability score.
  4. 10:00 UTC - Tuesday: The team noticed Search Console showing a weird dip. Started digging.
  5. 14:00 UTC - Tuesday: Full panic. Someone finally asked, "Wait... do search engines actually see our content on the first pass?"

Industry data shows that roughly 30-40% of web traffic still comes from search engines that don't handle JavaScript the way Google does. Some enterprise crawlers, accessibility tools, and regional search engines? They're still working on two-phase crawling. For many of them, that first phase is the only one that matters.

The postmortem revealed the culprit: they'd shipped a beautiful client-rendered SPA with zero server-side rendering or prerendering. The HTML that went out to crawlers was basically a fancy receipt that said, "The real party is in the JavaScript bundle." But not every crawler waits around for the music to start.

The Root Cause Was Hiding in Plain Sight

Here's where it gets embarrassing: they'd actually known this was a thing. Everyone knows this. It's in every web development article ever written, right there between "use semantic HTML" and "please stop using Comic Sans." But between sprints and feature requests and that one engineer who kept insisting "Google handles JavaScript just fine," it never made it to the priority board.

The blame game wasn't even interesting - there wasn't one. Just a collective realization that they'd built a Ferrari with no wheels and wondered why it wasn't winning races.

Two-phase crawling sounds fancy, but it's just crawler logic 101: Phase one scans the raw HTML (the skeleton). Phase two, if the crawler bothers with it, executes JavaScript (the meat). Google does phase two. Bing does phase two. But many others? They're like your uncle who shows up to dinner, sees the appetizers, and leaves before the main course.

The Fix: Not As Complicated As You'd Think

They had three options, ranked by effort:

  1. Prerendering - Generate static HTML for key pages at build time. Fast, cheap, works great for content that doesn't change every five seconds.
  2. Server-side rendering (SSR) - Render pages on the server before sending them to browsers. More complex, more powerful, basically cooking dinner before guests arrive instead of ordering takeout.
  3. Hybrid approach - Prerender the high-traffic stuff, keep the interactive bits client-rendered. Nuance and sophistication. Boring but effective.

They went with option three, obviously. Within two weeks, their crawlability went from "invisible ghost town" to "functional website." Traffic recovered in 30 days. Not back to 100% because Google had already downgraded their indexing score like a restaurant health inspector, but close enough.

The Lesson (Before You Make The Same Mistake)

The real horror isn't that client-rendered content is bad. It's that it's invisibly bad. Your site works perfectly in your browser. Users love it. But search engine crawlers? They're basically showing up to your JavaScript party too early, seeing an empty room, and leaving a bad review on the way out.

Don't be that company with a beautiful SPA that nobody can find. Run a quick scan on your own site right now - view the source, see what actual HTML a crawler would receive. If it's basically empty and you're relying on JavaScript to do the heavy lifting, you've got a problem that your analytics dashboard just hasn't caught up with yet.

Check your site's actual rendered HTML today. Use tools that simulate crawlers. See if your carefully crafted content actually exists in the version that search engines see on their first visit. Because if it doesn't, you're not invisible - you're just not invited to the party that matters.

Disclaimer: This article is for informational purposes only and does not constitute legal, professional, or compliance advice. SCOUTb2 is an automated scanning tool that helps identify common issues but does not guarantee full compliance with any standard or regulation.

SEOJavaScriptSPAserver-side rendering

Stop finding issues manually

SCOUTb2 scans your entire site for accessibility, performance, and SEO problems automatically.