Next.jsJuly 17, 2026 · 9 min

The Next.js technical SEO checklist for SaaS that actually ranks

Technical SEO on Next.js isn't a plugin you install — it's decisions you make about rendering, metadata, structured data and internal links. This is the checklist I actually apply (this site is the working example): each item ties an engineering choice to a ranking or conversion outcome.

1. Pick the right rendering per route

Static (SSG) for content that rarely changes — fastest, most cacheable, best for landing and blog pages. ISR when content updates periodically but you still want static speed. Dynamic (SSR) only when the page is genuinely per-request. The mistake is making everything dynamic 'to be safe' — you throw away cacheability and hurt both speed and crawl efficiency.

2. Own your metadata and canonicals

Every route sets a unique title and description, a self-referencing canonical, and — if you serve multiple languages — a correct hreflang set. Next.js's Metadata API makes this per-route and composable. Duplicate or missing canonicals are one of the most common reasons SaaS pages cannibalize each other in the index.

3. Structured data (JSON-LD) for rich results

Emit the schema that matches the page: Organization/Person site-wide, Service or Product on commercial pages, Article/BlogPosting on posts, FAQPage where you have real Q&A, and BreadcrumbList everywhere. This is what earns rich snippets and feeds AI search engines a clean, machine-readable version of your content.

// Per-route metadata + canonical (App Router)
export function generateMetadata({ params }) {
  const url = `${SITE}/features/${params.slug}`;
  return {
    title: `${feature.name} — Acme`,
    description: feature.summary,
    alternates: { canonical: url },
    openGraph: { url, type: 'website' },
    robots: { index: true, follow: true },
  };
}

4. Core Web Vitals are a ranking and conversion lever

  • LCP: render the hero on the server, preload the LCP image, avoid client-side data fetches for above-the-fold content.
  • CLS: reserve space for images and embeds (width/height or aspect-ratio) so nothing jumps.
  • INP: keep the client bundle small — server components by default, 'use client' only at the leaves that need interactivity.

Speed is money, not vanity: faster pages measurably lift signup and checkout conversion. A Core Web Vitals fix is a growth task, not just a Lighthouse score.

5. Don't orphan your pages

A page in the sitemap but linked from nowhere is a soft-orphan — discovered weakly and ranked poorly. Every page needs a real in-content link from an indexed page: an index/hub page that lists items, a footer directory, and cross-links between related pages. The sitemap aids discovery; internal links pass authority.

Key takeaways

  • Choose SSG/ISR/SSR deliberately per route — don't default everything to dynamic.
  • Unique metadata, self-canonical, correct hreflang on every page.
  • Emit page-appropriate JSON-LD for rich results and AI-search citation.
  • Engineer LCP/CLS/INP as conversion levers; link every page so nothing is orphaned.

FAQ

Is Next.js good for SEO?

Yes — it's one of the best frameworks for it, because server rendering, per-route metadata, structured data and image optimization are first-class. But SEO isn't automatic; you still have to choose the right rendering, set canonicals, emit structured data and build clean internal links. The framework enables it; the engineering delivers it.

ISR vs SSR for SEO — which ranks better?

Neither ranks 'better' by type; correctness and speed do. Use SSG/ISR wherever content allows, because cached static pages are faster and more crawl-efficient, which helps. Reserve SSR for genuinely per-request pages. A fast ISR page beats a slow SSR one.

AA
Ali Asghar

Senior software engineer & technical lead — 6+ years shipping production multi-tenant SaaS, payments and AI integration in Next.js, Node & TypeScript.

Keep reading
What actually matters running the Next.js App Router in productionServer-side conversion tracking: recovering the revenue GA4 can't see