Skip to content

AI visibility · Next.js (App Router)

My content only renders with JavaScript in Next.js (App Router)

Google renders JavaScript. Most AI crawlers do not — GPTBot, ClaudeBot and CCBot read the HTML your server sends and nothing more. To them the page is blank, so nothing on it can ever be quoted or cited. This is the single largest AI-visibility problem a site can have, and it is invisible in every classic SEO tool.

The fix for Next.js (App Router)

13x detects your framework from the response and hands you this version rather than the generic one — below 50% confidence it hedges and gives you the generic one instead.

Next.js server-renders by default, so an empty HTML response means something is opting out. Look for:

tsx code
// 1. "use client" at the top of a page or layout that does not need it.
//    It does not prevent SSR, but combined with a client-only data fetch it
//    produces an empty first paint.

// 2. Content behind a mount check — this renders nothing on the server:
const [mounted, setMounted] = useState(false);
useEffect(() => setMounted(true), []);
if (!mounted) return null;          // ← the crawler stops here

// 3. next/dynamic with ssr disabled around real content:
const Content = dynamic(() => import("./content"), { ssr: false });

Fetch data in the server component instead and pass it down as props, so the HTML contains the text.

On a different stack? The general version of this fix explains what 13x checks and why it matters, without assuming a framework.

Check your Next.js (App Router) site

113 deterministic checks against your live URL, in about 30 seconds. Framework detected from the response, so every fix comes back in the form your stack actually uses.

No signup. Results in 30 seconds.

The same fix, other stacks