Guides

Why your Bolt.new site isn't on Google (and the 10-minute fix)

You built something real in Bolt.new, put it on a custom domain, and waited. A week later, searching for your own site name brings up nothing, Google Search Console says "Discovered – currently not indexed," and links you share on X or Slack show up with no title or image. Your site works fine in a browser. So what's going on?

The short version

Most Bolt.new projects are single-page apps (SPAs), usually Vite + React. When anyone asks your server for a page, it sends back a nearly empty HTML file, something like this:

<body>
  <div id="root"></div>
  <script type="module" src="/assets/index-a1b2c3.js"></script>
</body>

Your browser downloads that JavaScript, runs it, and draws the page. A person never notices. A crawler that doesn't run JavaScript, or runs it late, sees an empty <div> with no headings, no text, and no links to your other pages.

Doesn't Google run JavaScript?

Google can, but not right away and not for every page. Googlebot first reads the raw HTML, then puts JavaScript pages in a queue to render later. For a brand-new site with no links pointing to it, that can mean a long wait, pages that get crawled but not indexed, and titles or descriptions that only exist after the script runs getting ignored.

Plenty of other readers don't run JavaScript at all:

How to check your own site in 30 seconds

  1. Open your site, right-click, and choose View Page Source (not Inspect). If you see your real headline and paragraphs, crawlers can read them. If you only see <div id="root"></div> and script tags, they can't.
  2. In Google Search Console, use URL Inspection and then View crawled page to see the HTML Google stored.
  3. Or run a free CrawlFixer scan. It fetches your page the way a crawler does, with and without JavaScript, and shows you exactly what's missing: text, title, description, canonical, social tags, robots.txt, and sitemap.

Your options

1. Rebuild with server-side rendering. Moving to a framework like Next.js, Remix, or Astro renders HTML on the server. It's the "proper" fix, but for a vibe-coded app it often means rewriting routing and data loading, which defeats the point of building it in Bolt.

2. Pre-render at build time. Static-site plugins can snapshot each route during the build. This works for a handful of fixed pages but breaks down with dynamic routes, logged-in content, or pages that change often, and you have to wire it into a build you didn't write.

3. Prerender at the edge (the 10-minute fix). A prerendering service sits in front of your site. When a crawler visits, it gets a fully rendered HTML snapshot of the page. When a person visits, they get your normal app, untouched. Google describes this setup as dynamic rendering and treats it as fine as long as crawlers and people see the same content.

That third option is what CrawlFixer does. You keep building in Bolt, and you change one DNS record:

Setup details are in Connecting your domain. You'll need a custom domain; free platform addresses like *.bolt.new or *.netlify.app can't be connected directly.

While you're at it: three quick wins

See what Google sees

Don't guess. Paste your URL into the free scan on crawlfixer.com (no signup) and you'll see what crawlers get from your Bolt site in under a minute. If it comes back empty, the fix is one DNS record away. Plans start at $12/month per site.

CrawlFixer is not affiliated with Bolt, StackBlitz, Google, or Netlify.