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?
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.
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:
<div id="root"></div> and script tags, they can't.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:
www CNAME customers.crawlfixer.com at your domain provider.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.
<title> and meta description. In an SPA, these are often the same on every route, or only set by JavaScript.<a href="/pricing">) for navigation, not buttons with click handlers, so crawlers can find your other pages.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.