Why it matters
Each family is at least one more font request (often 20–50 KB each), and more than two or three typefaces reads as unfocused design. Font bytes compete with the LCP image.
How to fix it
Use at most 2 families plus a mono. Prefer variable fonts when you need several weights.
Example
export const sans = Inter({ subsets: ['latin'], variable: '--font-sans' })
export const mono = JetBrains_Mono({ subsets: ['latin'], variable: '--font-mono' })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.
image-priority-deprecated`priority` on `next/image` is deprecated in Next 16missing-altImage without `alt`google-fonts-linkGoogle Fonts loaded via `<link>` / `@import`font-display`@font-face` without `font-display`script-strategyThird-party script loads too earlybrowser-global-in-renderBrowser global (`window`, `document`, `navigator`, `localStorage`) at module scope or during rendertimer-in-render`setTimeout` / `setInterval` called in a component bodymotionvalue-subscribe-in-renderMotionValue `.on("change")` subscription in a component body