Next.js 15 Revolutionizes SEO with Server Components for 55 Million Dynamic Pages
April 19, 2026
Per-page OpenGraph images are generated at request time and then cached by Next.js for shared links.
Internal API access is handled via rewrites to proxy requests to internal endpoints, preventing CORS issues and shielding internal IPs.
Static generation of all pages (55 million paths) is infeasible, and ISR cold starts are prohibitive; the approach favors on-demand SSR with Server Components.
The main development is that Next.js 15 App Router enables SEO-friendly Server Components, server-generated metadata, effective caching, granular code splitting, and seamless URL canonicalization for sites with millions of dynamic pages.
Server-generated JSON-LD is injected into the head from a reusable JsonLd component to support rich results.
Aggressive code-splitting uses dynamic imports and lazy loading so only above-the-fold content loads initially, with heavier components loaded on demand.
Performance metrics show LCP around 1.2 seconds, FID about 50 milliseconds, CLS near 0.02, TTFB around 200 milliseconds, and initial JS ~45KB gzipped, aided by server rendering, on-demand loading, and caching.
The data fetcher getEmpresa is cached with React cache to avoid redundant requests between metadata generation and page rendering.
The architecture relies on a Pure Server Component model where page.tsx renders on the server and generateMetadata handles SEO metadata without client code.
The case study focuses on a Brazilian company directory with 55 million dynamic pages needing per-page dynamic title, description, OpenGraph image, JSON-LD, canonical URL, and server-rendered content for SEO.
Middleware enforces canonical URLs for CNPJ routes by redirecting to the canonical digit-only form with a 301 status.
Summary based on 1 source