Why it matters
Without page-level metadata every route shares the root layout's title and description: duplicate titles in search results, weak link previews, and AI answers can't tell pages apart.
How to fix it
Export metadata (static) or generateMetadata (dynamic) with a unique title, description and alternates.canonical from the page, or from a layout that owns the segment.
Example
export const metadata: Metadata = {
title: 'Pricing',
description: 'Plans for teams of every size.',
alternates: { canonical: '/pricing' },
}References
More lint rules
void lint reports 67 rules in this category. Static source checks with no browser: Tailwind v4 silent failures, Next.js 16 API traps, React render-body bugs, accessibility markup, SEO files and motion hygiene.
vh-heroHero sized with `100vh` / `h-screen`will-change-static`will-change` applied statically to many elementsz-index-soupMany distinct z-index valueshardcoded-colorsHard-coded colors in components instead of tokensmissing-metadata-baseRoot layout metadata has no `metadataBase`canonical-in-root-layoutCanonical URL set in the root layoutog-merge-drops-parentPage `openGraph` replaces the layout's (shallow merge drops images/siteName)not-found-in-suspense`notFound()`/`redirect()` inside a component rendered under `<Suspense>`