Next.js gives you SSR for free, but a rendered page is not a ranking page. Search engines reward the details.

The checklist that moves the needle

  • Per-route generateMetadata with real titles and descriptions
  • Open Graph + Twitter cards so links look intentional
  • JSON-LD structured data for the entity type
  • A real sitemap.ts and robots.ts

Rendering strategy

Static where you can, incremental where content changes, dynamic only when you must. This portfolio revalidates every couple of minutes — fresh enough for a CMS, cheap enough to stay fast.

export const revalidate = 120;

> Fast HTML is an SEO feature. Core Web Vitals are literally a ranking signal.

Do the boring metadata work and the rankings follow.