4 min readSEO
Why Google can't see your AI-built site, and how to fix it
Apps from Lovable, Bolt and v0 often send search engines an empty page. How to check yours, why it happens, and the fixes that work.
Most apps built with Lovable or Bolt are single-page React apps: the server sends an almost empty HTML file, and JavaScript draws the page in the browser. Google can run that JavaScript, but later and less reliably, and link previews and most AI crawlers don’t run it at all. The fix is to send real HTML for every page you want people to find.
Check what search engines see
- View the page sourceRight-click your page and choose View Page Source (not Inspect). If you see
<div id="root"></div>and a few script tags, but none of your headline, a crawler that doesn’t run JavaScript sees an empty page. - Ask Google directlyIn Search Console, use URL Inspection on a page, then Test live URL and View tested page. It shows the HTML Google rendered and a screenshot of what it saw.
- Compare titles across pagesIf every page has the same
<title>and description in the source, Google sees one page many times, and you compete with yourself. - Paste a link into Slack or LinkedInThe preview card shows what your page tells the world without JavaScript. The same card for every page, or none, means social apps can't see your content.
# What a crawler gets before any JavaScript runs
curl -s https://your-app.com/pricing | grep -iE "<title>|<h1"Why it happens
A Vite and React app from an AI tool has one index.html with one empty div. React Router decides what to show once the JavaScript has loaded. The server answers every address with that same file and a 200 status, even addresses that don’t exist, which Google reports as "soft 404s".
Google does render JavaScript, but it queues pages for rendering, so indexing is slower, and anything that fails in its renderer is missing. Titles set by JavaScript only exist after that step. Other crawlers are less patient: link previews read the raw HTML, and the crawlers behind AI assistants mostly don't run JavaScript. An empty shell means you can be invisible when someone asks ChatGPT or Perplexity for a tool like yours.
Fixes, from quick to thorough
- Give every page its own title and descriptionA head manager like react-helmet-async sets them per route. It helps Google, which runs JavaScript, but not link previews or AI crawlers. A start, not the fix.
- Prerender the public pagesBuild real HTML for the pages people search for (home, pricing, features, blog) when you deploy, with a static generation plugin for Vite or a prerender step. Pages behind sign-in don’t need it.
- Move the public pages to a framework that renders on the serverNext.js, Astro or React Router in framework mode send finished HTML. Keep the AI-built app behind sign-in as it is, on
app.yourdomain.comor under/app. - Send real 404sConfigure your host so addresses that don't exist return a 404 status, not your home page with a 200.
- Add a sitemap and robots.txtList every public address in
/sitemap.xml, point to it from/robots.txt, and submit it in Search Console. - Use real linksNavigation should be
<a href>links. A button that changes the page with JavaScript is a dead end to a crawler.
What I'd do first
If the app is the product and the website is how people find it, the cheapest win is usually to split them: a server-rendered site for the pages that need to be found, and the AI-built app behind sign-in, where search engines don’t matter. That is often days of work, not a rewrite. My post on fixing or rewriting covers how to tell.
Then the routine part: submit the sitemap, check the Page indexing report in Search Console every week or two, and fix what it lists. Speed matters too. A page that takes ten seconds on a mid-range phone loses visitors whether Google finds it or not. Rendering, titles, sitemaps and speed are all part of my audit.
Questions people ask
- Is Lovable bad for SEO?
- Not on purpose, but its default setup, a single-page React app, sends search engines an almost empty page. Google can still index it after running the JavaScript, more slowly; other crawlers often can’t. Prerendering or a server-rendered marketing site fixes it.
- Does Google index JavaScript websites?
- Yes. Google renders JavaScript, but in a second pass that can lag behind, and errors in that step leave content out. Link previews and most AI crawlers don't run JavaScript at all, so real HTML is still the safe choice.
- How long does it take Google to index a new site?
- From days to a few weeks, and there's no way to force it. Submit your sitemap in Search Console and use Request indexing in URL Inspection for your most important pages.
- Do I need Next.js for SEO?
- No. You need finished HTML in the first response. Next.js is one way to get it; Astro, React Router in framework mode, or prerendering a Vite app are others.