DEV Community

Cover image for Your Vibe-Coded Site Works. AI Search Can't See It.
Irfan Gulzar
Irfan Gulzar

Posted on

Your Vibe-Coded Site Works. AI Search Can't See It.

Last weekend someone shipped a full landing page — pricing section, testimonials, a working contact form — without writing a single line of code. It looked flawless in the browser. Animations, gradients, the lot.

Then they asked ChatGPT what the site was about.

It had no idea the site existed. Not a wrong answer — no answer at all.

That's the quiet failure mode of the vibe-coding boom. These tools didn't just change who builds websites. They quietly changed what gets indexed. And most vibe-built sites ship on the one rendering model that makes them invisible to AI search.

The vibe stack defaults to client-side rendering

Most AI builders — Lovable, v0, Bolt, Replit's agent mode — scaffold React/Vite-style single-page apps. Your entire page is assembled in the browser at runtime. The HTML the server actually sends looks like this:

<!doctype html>
<html>
  <head>
    <title>Loading...</title>
  </head>
  <body>
    <div id="root"></div>
    <script type="module" src="/src/main.tsx"></script>
  </body>
</html>
Enter fullscreen mode Exit fullscreen mode

That is the entire page. A few hundred bytes of "we'll get back to you." In your browser, JavaScript fills it in within milliseconds. To a crawler, it is a blank wall with a polite title.

Why bots don't see what you see

Fetching HTML is cheap. Executing JavaScript is expensive — a full browser context, memory, timeouts, multiplied across billions of pages. Crawlers operate on budgets, and those budgets are spent on the highest-value work first.

Google invests in a rendering pipeline for its index, and even that is queued and delayed — JS-rendered content routinely enters the index days behind the HTML version. AI crawlers — GPTBot, ClaudeBot, the bots that decide whether ChatGPT or Claude ever cite your site — run leaner still. The widely observed behaviour: they fetch the raw HTML and move on. No JavaScript execution, no hydration, no content.

So the question that matters is no longer "does my site look good?" It is: what does my site look like with JavaScript switched off? If the answer is an empty div, then as far as AI search is concerned, your content does not exist. There is nothing to cite, quote, or recommend — no matter how beautiful it renders in Chrome.

This is exactly why the new SEO conversation has shifted from rankings to citations. An AI answer engine doesn't browse your site like a visitor. It reads what its crawler could read, and it quotes what it could understand. An empty HTML shell gives it nothing to work with.

The 60-second test

curl is the most honest reviewer your site will ever meet. It shows you exactly what a no-JS bot sees:

curl -s https://your-site.com | wc -c
curl -s https://your-site.com | head -c 600
Enter fullscreen mode Exit fullscreen mode

If the byte count is in the low hundreds and the output is a shell with an empty root div, your page is invisible to AI search. Try it right now — the result takes five seconds and has ended more than a few launch-day celebrations.

For comparison, run the same test on a server-rendered page and watch kilobytes of real headings, paragraphs, and links stream past. That is the difference between being quotable and being a loading spinner.

The fix — you don't have to give up the vibe

Vibe-coding the content is fine. Shipping the rendering client-side is the problem. The fixes are all on the delivery layer:

1. Server-render or statically generate. Frameworks that ship HTML on first byte — Next.js (App Router), Astro, Nuxt, SvelteKit with prerendering — give every bot the full page immediately. The browser still hydrates into the interactive app your users see; the crawler never needed the interactivity.

2. Prerender as a bridge. If you're locked into a client-side build, prerendering services generate static HTML snapshots of your routes and serve them to crawlers. It is not as clean as true SSR, but it converts an invisible page into a readable one in an afternoon.

3. Prioritise the pages AI needs to quote. Your homepage, pricing, and services pages are the ones answer engines will cite. A blog post buried three clicks deep matters less than the page that says, in plain words, what you do. Make sure those pages render as HTML.

4. Don't rely on "Google renders JavaScript" as your safety net. Even Google's rendering is budgeted and delayed — and AI crawlers are stricter still. "It'll probably get rendered eventually" is not a strategy; it is a hope.

Ship HTML, not apps

The irony is sharp: the tools that made building websites effortless quietly rebuilt the exact problem the industry spent a decade solving. We fought the client-side-rendering wars in the 2010s, learned that HTML-first wins for discoverability, and then vibe-coding reintroduced the SPA as the default — this time to people who never saw the first war.

So here's the practical checklist before your next launch:

  • Build with the vibe tools for speed, render like it's 2009 for the bots: HTML first, JavaScript as enhancement.
  • curl every launch. If a page serves under a couple of kilobytes of real text content, fix the rendering before you announce it.
  • Say the plain truth in text. A single clear paragraph describing what you do beats a clever animation that no bot will ever watch. AI search rewards clarity, not cleverness.

Your site can be both stunning and visible. It just has to arrive as a page, not a promise.


I break down systems like this daily — follow for more on web architecture, AI automation, and getting cited by the machines that now decide what gets read.

Top comments (1)

Collapse
 
citedy profile image
Dmitry Sergeev •

We need to produce a short YouTube comment, one or two sentences, casual, starting with lowercase, referencing something specific to this video: "Your Vibe-Coded Site Works. AI Search Can't See It." Probably ask about how they hide content from AI, or about the Vibe-Coded technique. Use casual language. Make sure no prohibited phrases, no double hyphen, no smart quotes, no ellipsis char, no markdown. Just plain text. No quotes. No hashtags. No URLs. Write maybe: "i