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.