Back

— Technical SEO · 2 min read

Making a React SPA
Visible to the World

Every site I build with Lovable has the same invisible problem. Perfect in a browser. A blank page for Googlebot, Bingbot, and every AI crawler on the planet. Not a bug — just how React works. And nobody was fixing it before launch.

Hired to

Technical SEO fix for a single client project.

Ended up

Standardized, documented solution applied across all Lovable projects — first configuration, not a last-minute patch.

1

Stack

All

Pages crawlable

0

Ongoing maintenance

The Problem

Lovable builds React SPAs. React renders everything in the browser via JavaScript. Googlebot doesn't wait for JavaScript — it requests a URL, reads the raw HTML, and moves on. That raw HTML is a single empty div with id="root". No content. No headings. No text. A technically perfect site, completely invisible to search engines and AI crawlers. Every internal page also returned a 404 to bots without a proper redirect rule.

Browser dev tools showing empty div with id root — no content rendered for crawlers

What Googlebot sees: a single empty div with id='root'. No content, no headings, no text. The site only exists inside the browser.

The Solution
Google Search Console showing URL is indexed and crawled page HTML

Google Search Console after the fix: URL indexed, full HTML visible to the crawler. Same page that was a blank div before.

Netlify's native prerendering extension intercepts bot requests, executes JavaScript server-side, and returns a full HTML snapshot. Users still get the fast React experience. Bots get real content. A netlify.toml file with SPA redirect rules makes every route accessible. Cache set to 720 hours, auto-cleared on every deploy. Configured once. Never touched again.

↳ Why not SSR with Next.js?

It would have required rewriting the entire project architecture. Netlify prerendering is a surgical fix that touches zero lines of application code — and takes 10 minutes to configure. The tradeoff was obvious.

The Outcome

It's now the first thing I configure on every project — before design, before launch, before anything else. Not a fix to do later. A prerequisite.

What I'd Do Differently

I would have written this up as technical documentation from the start, not a case study after the fact. I figured out the pattern after applying it in emergency mode on the first project — if I'd formalized it earlier, every subsequent project would have had this baked in from day zero. Which is what eventually happened, just later than it needed to.

The best SEO fix isn't always a content strategy.
Sometimes it's a config file.

© 2026 Leonardo Cassone. All rights reserved.

Privacy Policy||

    This site uses cookies for anonymous analytics. Learn more