AI crawlers fetch your HTML and stop. If your content only exists after JavaScript runs, they see an empty page. Here is how to check, and how to fix it.
A single-page app sends the browser a near-empty HTML shell and builds the page in JavaScript. That works fine for people. It does not work for the crawlers that feed AI answers.
The crawlers behind AI citations, OAI-SearchBot for ChatGPT, Claude-SearchBot, and PerplexityBot, fetch your URL, read the bytes that come back, and move on. They do not run your JavaScript. Googlebot does run it, but on a second pass that happens later and is not guaranteed. So the version of your page that reaches an answer engine is the shell: a title, a root div, and nothing to quote.
curl -s https://yoursite.com | wc -wcurl -s https://yoursite.com | grep -i "<h1". No match means the crawler never sees what the page is about.The fix is always the same shape: produce the HTML before the response leaves the server.
getStaticProps. Nuxt: nuxt generate or SSR. SvelteKit: the default server renderer. Astro: static by default. A plain Vite or Create React App build: add a prerender step that renders each public route to its own HTML file at build time.Server rendering makes your content readable. It does not make it worth citing. The content still has to answer the question someone asked.
Geoify checks all of this on your site and ranks what to fix first. Run the free scan.