RULE: Always server-render or statically generate content for AI crawlers. Never ship client-side-only HTML.

Rule: Every page of every Candid client site must serve rendered HTML at the URL — either statically generated (Next.js export, Astro, Hugo) or server-side rendered (Next.js App Router with server components, classic SSR). Never ship a single-page-app shell where content arrives via client-side JavaScript.

Why: AI crawlers (GPTBot, ClaudeBot, PerplexityBot, OAI-SearchBot) do not execute JavaScript at scale. A site that requires JS to render its content is invisible to AI engines — and increasingly invisible to AI-augmented search overall, since 48% of queries now trigger an AI Overview (see BrightEdge (Feb 2026): AI Overviews now appear on 48% of tracked queries, up from ~30% a year prior).

See AI crawlers (GPTBot, ClaudeBot, PerplexityBot) generally do not execute JavaScript — client-side React/Vue without SSR is invisible for the underlying measurement. OtterlyAI's 1M-citation study found 73% of audited sites have technical barriers blocking AI crawler access — JS-only rendering is the most common.

How to apply: Candid's default stack is Next.js 15 App Router with server components — every page renders to HTML at build time or on the server. Client components ("use client") are reserved for interactivity; the content is always in the server-rendered tree. For non-Next.js client sites, Candid migrates to a static-generation tool before any AI-visibility work begins. There is no exception.