Your Lovable Site Looks Great. Google Sees an Empty Page.
You built it in an afternoon, it looks professional, and it gets zero Google traffic. The problem is not your content or a penalty. It is how AI builders deliver your pages to crawlers. Here is the diagnosis, a 60-second test, and the fix.

Hassan Jamal·Jul 12, 2026·10 min read
Your browser runs JavaScript, so the site looks fine to you
Key Facts
- •Lovable, Bolt, and Replit generate client-side rendered React apps: the server sends a nearly empty HTML shell and JavaScript paints the content in the visitor's browser
- •As of June 2026, no major AI crawler executes JavaScript: GPTBot, ClaudeBot, and PerplexityBot read raw HTML only, so a client-side rendered site is invisible to AI answers
- •Google can render JavaScript, but slowly and unreliably, so CSR React sites index late, partially, or not at all
- •The durable fix is migrating to server-rendered Next.js: your React components port over, and the server sends finished HTML to every visitor and every bot
You built your site, it looks great in your browser, and everyone you send the link to can see it. Then you Google your business name and find nothing. Weeks later, still nothing.
We can show you why with one simple test. When a robot visits your website, whether that is Google's crawler or ChatGPT's, it does not open the page the way you do. It knocks on your server's door, asks “what have you got for this page?”, and reads whatever text comes back. No browser, no waiting, no running your code.
We just asked our own homepage that question, the same way OpenAI's robot would:
1curl -A "GPTBot" https://www.pandacodegen.com/
Back came 747,347 bytes of HTML: our pricing, our founders' names, our 90+ PageSpeed guarantee, every FAQ. Everything, readable, without running a single line of JavaScript. The command works on any site, including yours.
Ask a default Lovable, Bolt, or plain React site the same question, and this is the entire reply:
1<!DOCTYPE html>2<html>3 <head><script src="/assets/index-4f2a.js"></script></head>4 <body><div id="root"></div></body>5</html>
About one kilobyte. An empty div and a script tag. That div is where your entire website is supposed to appear, after JavaScript runs. But the crawler never runs it. To Google's first pass, and to ChatGPT, Claude, and Perplexity permanently, your site is a blank page with a loading spinner.
That is the whole mystery. Your site is not penalized, not sandboxed, not too new. It is invisible.
Most AI app builders deliver your website like a meal kit instead of a cooked meal. The server sends raw ingredients and a recipe card (the JavaScript), and every visitor's browser has to cook the page itself. That is client-side rendering. Human browsers cook it without complaining, so the site looks fine to you. Robots won't cook: Google gets around to it eventually, slowly and not always, and AI crawlers like ChatGPT's and Claude's never cook at all. They open the box, see raw ingredients instead of a page, and recommend the competitor whose site arrived ready to eat. The fix is server-side rendering: migrate to Next.js and the kitchen (your server) sends everyone a finished page. Same recipe, cooked before delivery.
Why is my Lovable site not showing on Google?
Because Lovable builds client-side rendered React single-page apps by default, and client-side rendering hides your content from crawlers. The site works in your browser because your browser executes JavaScript. Crawlers mostly do not.
This catches a lot of smart people off guard, and the numbers explain why. AI app builders are a roughly $4.7 billion market, 63% of their users are not developers, and Lovable alone raised $330M at a $6.6B valuation in late 2025. The pitch is “describe your app, ship it today,” and for the app part, it delivers. We said as much in our guide to hiring cheap web developers: vibe coding is genuinely cheap to start. The part nobody mentions in the demo video is that “ship it” and “be found” are different problems.
To be clear about what is NOT wrong: your domain is fine, your content is fine, and you did not get penalized. The HTML your server sends to crawlers is simply empty. Fix the rendering and the rest of your SEO finally has something to work with.
First, rule out the boring causes (2 minutes)
Rendering is the big structural problem, but before you blame architecture, check four small things that produce the same symptom:
- ✓Your site is days old. Google takes days to weeks to index a brand-new domain even when everything is perfect. No sitemap trick beats waiting.
- ✓No Search Console property. Add your domain to Google Search Console, submit the sitemap, and use URL Inspection plus Request Indexing on your key pages.
- ✓A leftover noindex. View source and search for "noindex". Staging settings have shipped to production before.
- ✓Two competing addresses. See the lovable.app trap below.
Lovable publishes your site to a yoursite.lovable.app subdomain first. If you connected a custom domain later and both stayed live, Google often keeps indexing and promoting the old lovable.app URL instead of your real domain. There are Google support threads from frustrated owners about exactly this. The fix: make the lovable.app version point to your custom domain as the canonical, or redirect it entirely, so Google consolidates to one address.
If all four check out and you are still invisible weeks later, the architecture is your answer, so keep reading.
What is client-side rendering, and why does it hide your site?
Client-side rendering (CSR) means the server sends a skeleton and the visitor's browser assembles the page. Server-side rendering (SSR) means the server assembles the page and sends finished HTML. Same React components, opposite delivery order, and the difference decides whether a crawler sees your content or an empty div.
- , Server sends an empty div plus script tags
- , Headline, prices, testimonials absent until JavaScript runs
- , Bytes of readable content: near zero
- , AI crawlers see a blank page, permanently
- +Server sends the full finished page
- +Headline in an h1, prices in the markup, FAQs as text
- +Our homepage sends 747 KB of readable HTML
- +Every bot and every visitor gets the same content
One nuance so we are being fair: modern CSR is fine for things that live behind a login. Dashboards, internal tools, the app part of your app. Nobody needs Google to index your settings page. The problem is using CSR for the public marketing site, the pages that exist specifically to be found.
Do AI crawlers read JavaScript? (No. Here is the June 2026 list.)
As of June 2026, none of the major AI crawlers execute JavaScript:
- ✓GPTBot, OAI-SearchBot, ChatGPT-User (OpenAI): raw HTML only
- ✓ClaudeBot, Claude-SearchBot (Anthropic): raw HTML only
- ✓PerplexityBot: raw HTML only
- ✓Meta-ExternalAgent, Bytespider: raw HTML only
- ✓Google Gemini: the one exception, because it rides Googlebot's rendering infrastructure
Vercel's crawler study found something almost funny: ChatGPT's crawler downloads JavaScript files (about 11.5% of its requests) and Claude's does too (about 23.8%). They fetch the files. They just never execute them. The content your JavaScript would have painted stays painted nowhere.
And this traffic is no longer a rounding error. The same study measured nearly 1.3 billion combined fetchesfrom the major AI crawlers, over a quarter of Googlebot's volume. Your buyers ask ChatGPT who to hire and Perplexity what to buy. If your site is CSR, the answer engines are building their answers from an empty page, which means the answer is your competitor.
This is the exact machinery behind getting cited by AI search, and it is why PandaCodeGen builds every site server-rendered: a crawler that reads only raw HTML still gets the whole page. Our own site is already cited by ChatGPT, Claude, and Perplexity, and readable raw HTML is step zero of how.
Google now grades this readiness directly. In May 2026, PageSpeed Insights added an Agentic Browsing category that scores whether AI agents can read and act on your site. We publish our receipts: pandacodegen.com scores 3 of 3 on Agentic Browsing, right next to its 90+ PageSpeed score.

Can Google crawl React websites?
Yes, technically. Reliably, no. Google is the only search engine with real JavaScript rendering at scale, and even there your CSR site goes through two waves: first the raw HTML (empty, remember), then a rendering queue where a headless Chrome executes your JavaScript when resources allow. That second wave can lag by days, spend your crawl budget, and fail silently on script errors, blocked resources, or timeouts.
In practice, that means CSR React sites index late, partially, or not at all, and every content update repeats the same lottery. “Can Google crawl React?” is the wrong question. The right one is: why make the only search engine that can render JavaScript do extra unreliable work, while every AI crawler that cannot render it sees nothing? SSR removes the gamble for both.
Which AI builders have this problem? Lovable vs Bolt vs Replit vs v0
Not all AI builders output the same thing, so check yours specifically:
← Swipe to see more →
| Builder | Default output | What crawlers see |
|---|---|---|
| Lovable | React SPA, client-side rendered | Empty shell |
| Bolt.new | Vite React SPA (varies by prompt) | Usually an empty shell |
| Replit | Varies widely by stack chosen | Usually CSR for web apps |
| v0 (Vercel) | Next.js, server-rendered | Real HTML by default |
v0 is the exception because Vercel built it to output Next.js with server rendering, metadata, and structured data by default. If you are still choosing a builder and search visibility matters, that difference outweighs every other feature on the pricing page.
If you are already on Lovable or Bolt, the builders themselves are aware of the gap and keep adjusting their output options, but as of July 2026 the default export for both is still a client-side rendered SPA. Assume nothing, test your own site, which takes about a minute.
How to check if your site is invisible (the 60-second test)
Four ways, all free:
- ✓View source, not Inspect. Right-click your live site, choose "View page source" (Ctrl+U). Now Ctrl+F for your main headline. Not there? Crawlers can't see it either. (Inspect shows the page after JavaScript, which is exactly the wrong view for this.)
- ✓Curl it like a bot. Run curl -A "GPTBot" https://yoursite.com/ in a terminal. You should get your actual content back, not an empty div and script tags. This is the test we ran on ourselves at the top of this post; run it on your site and compare byte counts.
- ✓Ask Google directly. Search Console, URL Inspection, "View crawled page." The HTML tab shows literally what Googlebot received.
- ✓Pull your Agentic Browsing score. Go to pagespeed.web.dev, enter your URL, and scroll to the Agentic Browsing category. It asks the exact question this post is about: can an AI agent read your site? Ours shows 3 of 3. If your site ships as an empty shell, this is where it shows.
If these come back empty, you have your diagnosis, and it is fixable.
How to make a React site crawlable: your three real options
Option 1: Prerendering (the band-aid).A service like Prerender.io renders your pages in a headless browser and serves the static snapshot to known bots. It works, and it is the only option that keeps you fully inside your AI builder's editor. But you are now maintaining a bot-detection layer against an ever-growing list of AI user agents, your human visitors still get the slow CSR experience, and you are renting yet another subscription to patch a problem the architecture created. Reasonable stopgap, wrong long-term home.
Option 2: Migrate the app to Next.js (the real fix). Lovable and Bolt generate React, and Next.js is React with server rendering. Your components, styling, and logic largely port over; what changes is the delivery: the server now sends finished HTML to every visitor and every bot. This also fixes the speed problem CSR gives you for free, because visitors stop downloading and executing your whole app before seeing a headline. The honest cost: you leave the AI builder's chat-based editor and your site becomes a real codebase. For a marketing site that needs to be found, that trade is the whole point. Timeline-wise, an AI-built site is usually a small codebase, so expect the fast end of a normal custom-site build, not a months-long rebuild.
Option 3: Rebuild from scratch. Sometimes AI-generated code is too tangled to port economically, and a clean Next.js build with the same design is faster than surgery. We quote this honestly when we see it, and it is less common than you would fear.
Worried a migration will torch the rankings you do have? For a CSR site there is usually little indexed to lose, and proper redirects preserve what exists. We wrote up exactly how migration affects SEO if you want the full picture.
How we fix it at PandaCodeGen
PandaCodeGen migrates Lovable, Bolt, and v0 apps to server-rendered Next.js. It is the same migration work we do for WordPress and Shopify sites, just with a younger patient. The process:
- ✓Crawlability audit first. We run the same raw-HTML tests above on every page of your site and show you exactly what bots currently see. We do this live on the discovery call, free, because it takes us minutes and it should not cost you anything to learn what curl already knows.
- ✓Port, don't rewrite. Your React components move into Next.js App Router server components. Design stays, invisibility goes.
- ✓Make it citable, not just crawlable. Schema.org structured data, semantic HTML, an llms.txt manifest, and answer-first copy: the full AEO playbook that got our own site cited by ChatGPT, Claude, and Perplexity.
- ✓Guarantee it in writing. Every build ships with our written 90+ Google PageSpeed guarantee. CSR sites usually arrive scoring in the 40s and 50s; server rendering is most of the cure. MyCustomPatches came to us at PageSpeed 45 and left at 90+, with hosting costs down from $150/month to $0.
- ✓You own the repo. Fixed pricing from $1,500, full source code handover, deployed to your accounts, no monthly retainer. The subscription you cancel might be the prerendering service you never needed.
You built the site in an afternoon. Being found takes an architecture the builder didn't give you. That part is our job.
Is Your AI-Built Site Invisible?
Book a 30-minute technical discovery call, no sales pitch, and we'll run the GPTBot test on your site live, page by page.
Frequently Asked Questions
Related Articles
Will Migrating My Website Hurt My SEO? (The Honest Answer)
Done wrong, a migration can lose 50% of your traffic and take over a year to recover. Done right, you keep 95 to 100% of your rankings and your site ends up faster. Here is exactly what separates the two, the honest recovery timeline nobody mentions, and the checklist that protects your rankings.
WooCommerce Migration Cost: What You'll Actually Pay (2026)
Migrating off WooCommerce to a custom Next.js build runs $1,500 for a small store, $3,500 for a mid-size store with a CMS and blog, and $5,000 to $10,000 for full headless e-commerce. Agencies quote $15,000 to $25,000+ for the same scope. Here is what each price actually buys, what pushes the number up, and how to read a quote.
Is Your Website Ready for AI Agents? Google Now Scores It (2026)
In May 2026 Google quietly added an 'Agentic Browsing' category to PageSpeed Insights that scores whether AI agents can browse and act on your site, not just whether humans can read it. Here is what it checks, what the WebMCP layer is and why it shows as 'Not Applicable' for almost everyone, what the score means for your business, and how our own site already passes 3 out of 3.