Fix “homepage URL is unresponsive” on Bolt
A Bolt app rejected for an unresponsive homepage is almost always the single-page-app shell problem — the page that renders for you is not the HTML Google fetches.
Bolt produces a Vite single-page app served from Bolt's hosting on a shared *.bolt.host subdomain. The initial HTML is an empty container that becomes your landing page only after the JavaScript bundle runs. Google's checker reads the raw response, finds no real content, and marks the homepage unresponsive.
Each fix below traces to a requirement Google publishes.
Nothing here is our opinion. Every requirement links to Google’s own page — open it and verify the fix yourself before you resubmit.
“Your homepage must return meaningful, server-rendered HTML to an automated fetch — a JS-only shell, a bot challenge, a robots block, or an invalid TLS certificate all read as 'unresponsive'.”
“Your homepage must be publicly accessible without login — a bare sign-in screen is rejected.”
“After you submit, changing the app name, logo, homepage, policy URL, or authorized domains restarts the review — freeze branding until you're approved.”
Do these in order, on Bolt.
- 01
See the crawler's view
Run curl -A "Googlebot" -L https://yourdomain.com. An empty div plus a script tag is the smoking gun; a 403 or challenge page is a different cause on the same rejection.
- 02
Put real text into index.html
Unlike prompt-only builders, Bolt exposes your project files: open index.html in the editor and put your app description and a visible privacy-policy link into the static HTML (or add a pre-rendered landing page). Vite serves index.html as the raw response, so text there is exactly what the crawler reads before any JavaScript runs.
- 03
Allow crawler user-agents
Make sure your host isn't returning 403s to non-browser user-agents. Google's fetch must get the real page, not a block.
- 04
Confirm, then resubmit
Re-run the curl check and only resubmit when the raw HTML is meaningful. Then freeze branding so the resubmission isn't reset.
See exactly what Google’s crawler sees — free.
Paste your URL and scopes. The pre-check fetches your homepage the way Google does, finds your privacy-policy link, and flags the blockers this rejection is about — in seconds, no signup.
Straight answers.
Is Bolt's hosting the cause of the rejection?
No — the Vite SPA shell is. The raw HTML served from *.bolt.host is an empty container until JavaScript runs. Put real descriptive text into index.html (or a pre-rendered landing page) so the homepage reads without JavaScript.
How do I know if it's the shell or a bot challenge?
The curl -A Googlebot output tells you: an empty div means the SPA shell; a 403 or 'checking your browser' page means a challenge blocking the crawler.