<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Irfan Gulzar</title>
    <description>The latest articles on DEV Community by Irfan Gulzar (@irfangulzarx).</description>
    <link>https://dev.to/irfangulzarx</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3813354%2F595f3bac-c910-4370-b14d-c8fc8f1ecff6.jpg</url>
      <title>DEV Community: Irfan Gulzar</title>
      <link>https://dev.to/irfangulzarx</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/irfangulzarx"/>
    <language>en</language>
    <item>
      <title>Your Vibe-Coded Site Works. AI Search Can't See It.</title>
      <dc:creator>Irfan Gulzar</dc:creator>
      <pubDate>Thu, 22 Oct 2026 09:50:53 +0000</pubDate>
      <link>https://dev.to/irfangulzarx/your-vibe-coded-site-works-ai-search-cant-see-it-2ep5</link>
      <guid>https://dev.to/irfangulzarx/your-vibe-coded-site-works-ai-search-cant-see-it-2ep5</guid>
      <description>&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;Then they asked ChatGPT what the site was about.&lt;/p&gt;

&lt;p&gt;It had no idea the site existed. Not a wrong answer — &lt;em&gt;no&lt;/em&gt; answer at all.&lt;/p&gt;

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

&lt;h2&gt;
  
  
  The vibe stack defaults to client-side rendering
&lt;/h2&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;!doctype html&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;html&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;title&amp;gt;&lt;/span&gt;Loading...&lt;span class="nt"&gt;&amp;lt;/title&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"root"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;script &lt;/span&gt;&lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"module"&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"/src/main.tsx"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;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.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why bots don't see what you see
&lt;/h2&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;Google invests in a rendering pipeline for its index, and even &lt;em&gt;that&lt;/em&gt; 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.&lt;/p&gt;

&lt;p&gt;So the question that matters is no longer "does my site look good?" It is: &lt;strong&gt;what does my site look like with JavaScript switched off?&lt;/strong&gt; If the answer is an empty &lt;code&gt;div&lt;/code&gt;, 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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 60-second test
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;curl&lt;/code&gt; is the most honest reviewer your site will ever meet. It shows you exactly what a no-JS bot sees:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-s&lt;/span&gt; https://your-site.com | &lt;span class="nb"&gt;wc&lt;/span&gt; &lt;span class="nt"&gt;-c&lt;/span&gt;
curl &lt;span class="nt"&gt;-s&lt;/span&gt; https://your-site.com | &lt;span class="nb"&gt;head&lt;/span&gt; &lt;span class="nt"&gt;-c&lt;/span&gt; 600
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the byte count is in the low hundreds and the output is a shell with an empty root &lt;code&gt;div&lt;/code&gt;, 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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h2&gt;
  
  
  The fix — you don't have to give up the vibe
&lt;/h2&gt;

&lt;p&gt;Vibe-coding the &lt;em&gt;content&lt;/em&gt; is fine. Shipping the &lt;em&gt;rendering&lt;/em&gt; client-side is the problem. The fixes are all on the delivery layer:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Server-render or statically generate.&lt;/strong&gt; 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.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Prerender as a bridge.&lt;/strong&gt; 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.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Prioritise the pages AI needs to quote.&lt;/strong&gt; 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 &lt;em&gt;those&lt;/em&gt; pages render as HTML.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Don't rely on "Google renders JavaScript" as your safety net.&lt;/strong&gt; 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.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ship HTML, not apps
&lt;/h2&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;So here's the practical checklist before your next launch:&lt;/p&gt;

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

&lt;p&gt;Your site can be both stunning &lt;em&gt;and&lt;/em&gt; visible. It just has to arrive as a page, not a promise.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;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.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>seo</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
