Builtiflow
Bolt.new + SEO

Why your Bolt.new app isn't getting indexed

Bolt.new (StackBlitz) is excellent for building fast, working prototypes in the browser — but the default template renders entirely client-side, which leaves search engines and AI crawlers looking at an empty page.

Symptoms

How to tell if this is happening to you

  • Google returns zero results for "site:yourapp.netlify.app" or your custom domain weeks after launch
  • Right-click → View Page Source shows almost no text — just script tags and an empty container div
  • Links you share to Slack, X, or LinkedIn show no title, description, or preview image
  • Search Console reports pages as unindexed with no crawl errors — Google saw the page, just not the content
Root cause

Why this happens with Bolt.new specifically

Bolt.new's default scaffolds (Vite + React, or similar client-rendered templates) ship one HTML file for the whole app. Content, including page titles and text, is injected by JavaScript after the page loads in a browser.

That works perfectly for users, because their browser executes the JavaScript. It fails for most AI crawlers (the ones behind ChatGPT Search, Perplexity, Claude), which read the raw HTML response and never run your bundle. Even Googlebot's JavaScript rendering is delayed and unreliable compared to reading real HTML directly.

Because the app looks and works fine to you, this gap is easy to miss until you specifically check what a non-JavaScript request receives.

The fix

What actually fixes it

  • 1. Pre-render or server-render the routes meant to be found in search — homepage, pricing, and any content pages — so real text ships in the initial HTML response
  • 2. Give every route a unique <title>, meta description, and Open Graph tags instead of one shared set for the whole app
  • 3. Generate sitemap.xml covering every public route with an accurate last-modified date, and confirm robots.txt permits crawling
  • 4. Add self-referencing canonical tags so search engines don't split ranking signal across URL variants
  • 5. Re-check with a raw HTTP request (not a browser) to confirm the fix actually changed what crawlers receive

Copy-paste this into Cursor, Claude, or v0 to ship the fix:

bolt-seo-fix.prompt.md
You are working on a Bolt.new-built app (a client-rendered Vite + React SPA). Audit every public, indexable route — homepage, pricing, and any content pages — and confirm each one server-renders or pre-renders meaningful, route-specific HTML before hydration, not an empty container div.

For each of those routes:
1. Add or fix a unique <title>, a unique meta description, a self-referencing canonical URL, and correct Open Graph tags
2. If the route only renders client-side, add static pre-rendering or move that route to a framework with built-in SSR so the initial HTML response contains real content
3. Generate or update sitemap.xml to include every public route with an accurate lastmod date
4. Confirm robots.txt allows crawling of all of them

Report back the full list of routes you checked, which ones needed pre-rendering, and what you changed on each.

curl -s https://your-app.netlify.app | grep -i title

This is one of 43 checks in a Launch Readiness Audit.

Search visibility is one pillar. Trust, functionality, measurement, launch readiness, and compliance are the other five — and most Bolt.new apps have gaps in more than one.