If your marketing site is a client-side rendered React application, you are likely invisible to the AI assistants that customers are increasingly using to find local services. Carlynn Espinoza of Level Up Digital Marketing Group in San Diego highlights a critical disconnect: while humans see a fully hydrated page, AI crawlers like GPTBot and ClaudeBot often receive only an empty

. Unlike Google, which maintains a rendering queue to execute JavaScript, most AI bots read the raw HTML source exactly as curl does. If your content is injected via JavaScript after load, those bots see nothing.

The Five-Minute Diagnostic Workflow

Espinoza recommends skipping browser DevTools, which show the post-hydration DOM, and instead using curl to simulate bot traffic. By running a simple loop against user agents like "GPTBot," "ClaudeBot," and "PerplexityBot," you can instantly spot discrepancies. A 403 status code indicates a WAF or CDN block, while a tiny byte count compared to your browser view confirms that your content is missing from the initial server response. A quick grep for specific service names or phone numbers in the raw HTML output serves as a binary pass/fail test for visibility.

Fixing the Source, Not Just the Settings

The root cause is often a misplaced "use client" directive in Next.js or a lack of server-side rendering in Vite-based apps. The fix is architectural: ensure that primary marketing pages are server components that output full HTML, while interactive widgets remain client components. For teams on Vite, Espinoza suggests prerendering static routes at build time using tools like vite-plugin-ssr or Astro. It is also vital to check robots.txt and CDN settings; many sites inadvertently block AI crawlers with legacy rules or Cloudflare toggles that override file-based directives.

Why This Matters for Developers

This isn't just an SEO issue; it's a fundamental accessibility and discoverability problem. As AI assistants become the primary interface for local search, relying on JavaScript hydration for critical content is a business risk. Espinoza notes that while authenticated dashboards can remain client-heavy, public-facing pages must deliver real HTML anchors and text to be indexed by the new generation of search engines.

Key Takeaways

  • Simulate Bot Traffic: Use curl with specific user-agent strings (GPTBot, ClaudeBot) to see exactly what AI crawlers receive.
  • Check Byte Counts: A massive disparity between bot-received bytes and browser-rendered size indicates client-side rendering issues.
  • Server-Render Marketing Pages: Move "use client" directives to specific interactive components, keeping page layouts as server components.
  • Audit CDN and Robots: Cloudflare and Vercel have AI-blocking toggles that may silently disable your site for crawlers.
  • Automate in CI: Add a script to your deployment pipeline that asserts the presence of key HTML tags (like

    ) in the raw response.

The Bottom Line

Stop guessing why your site isn't cited by ChatGPT. If the bot can't read it, it doesn't exist. Run the curl test today.