Why it matters
GPTBot, ClaudeBot and PerplexityBot download a page's JavaScript but do not run it, so a page that builds its text in the browser is blank to them. Google does run JavaScript, but later and not always. This counts the words in the HTML as it arrives, before any script runs.
How to fix it
Render the page's main content on the server: server-side rendering or static generation in Next.js, Nuxt, SvelteKit or Angular, or prerendering for a single-page app.