The Next.js SEO Checklist: Metadata, Sitemaps, Schema and Speed
A practical checklist for shipping SEO-ready Next.js App Router sites — metadata, canonical and hreflang, sitemaps, structured data, Core Web Vitals and edge deployment.
Next.js gives you excellent SEO building blocks out of the box, but they only work if you wire them up deliberately. This is the checklist I follow when shipping production sites with the App Router — including this one.
1. Use the Metadata API everywhere
Every route should export metadata or generateMetadata. Define a title template once in the root layout and give each page a unique title and description.
export const metadata = {
title: { default: "Jane Doe — Web Developer", template: "%s | Jane Doe" },
description: "SEO-ready websites built with Next.js.",
metadataBase: new URL("https://example.com"),
};
Setting metadataBase lets you use relative URLs for canonical and Open Graph images.
2. Canonical URLs and hreflang
Duplicate URLs split ranking signals. Set alternates.canonical on every page. For multilingual sites, add alternates.languages so each locale points to the others — and include an x-default.
alternates: {
canonical: "/en/blog/my-post",
languages: { tr: "/tr/blog/yazim", en: "/en/blog/my-post", "x-default": "/tr/blog/yazim" },
}
3. A dynamic sitemap and robots.txt
Use app/sitemap.ts and app/robots.ts. When content lives in a database, generate the sitemap from it so new posts appear automatically, with accurate lastModified dates.
4. Structured data (JSON-LD)
Add JSON-LD with a <script type="application/ld+json"> tag inside your page component:
PersonorOrganizationon the home pageWebSitefor the site entityBlogPostingfor articles (headline, dates, author, image)BreadcrumbListfor nested pages
Validate with Google's Rich Results Test.
5. Render content on the server
Server Components send real HTML on the first response, which crawlers can read immediately. Keep client components for interactivity only — this also reduces JavaScript and helps INP.
6. Open Graph and social previews
Provide openGraph and twitter metadata with a 1200×630 image. Articles should use type: "article" with publishedTime and modifiedTime.
7. Core Web Vitals
- Use
next/fontto self-host fonts and avoid layout shift. - Give every image explicit dimensions; prioritize the LCP image.
- Avoid heavy third-party scripts or load them with
next/scriptand a lazy strategy. - Aim for LCP ≤ 2.5 s, INP ≤ 200 ms and CLS ≤ 0.1 at the 75th percentile.
8. Clean, stable URLs
Keep slugs short and lowercase. When you restructure, add permanent (301/308) redirects from old URLs — never let years of accumulated links fall into 404s.
9. Deploy close to your users
Edge platforms such as Cloudflare Workers serve pages from data centers near each visitor, which noticeably reduces server response time worldwide.
10. Measure
Verify the site in Google Search Console, submit the sitemap and watch the Page Indexing and Core Web Vitals reports after every major release.
Wrapping up
SEO in Next.js is less about tricks and more about consistent fundamentals: unique metadata, clean URLs, server-rendered content, structured data and speed. If you'd like help auditing or building an SEO-ready Next.js site, get in touch.
- #Next.js
- #SEO
- #App Router
- #Structured Data