界面已本地化;技能介绍与说明文档按所选语言由 AI 自动翻译,代码、命令、路径和专业术语保留原文,以原作者文档为准。
探索技能
数据与研究 · SKILL.md

nextjs-optimization

nextjs-optimization

【数据与研究】Optimize images, fonts, scripts, and metadata for Next.js performance and Core Web Vitals. Use when configuring next/image for LCP, next/font for zero layout shift, next/script loading strategies, or generateMetadata for SEO.

独立 GitHub 快照 · 自动分类 · 以原作者文档为准

技能说明

GitHub

name: nextjs-optimization description: Optimize images, fonts, scripts, and metadata for Next.js performance and Core Web Vitals. Use when configuring next/image for LCP, next/font for zero layout shift, next/script loading strategies, or generateMetadata for SEO. metadata: triggers: files: - '/layout.tsx' - '/page.tsx' keywords: - metadata - generateMetadata - 'next/image' - 'next/font'

Optimization

Priority: P1 (HIGH)

Core optimization primitives provided by Next.js. Monitor First, Optimize Later.

Monitoring (Core Web Vitals)

  • LCP (Largest Contentful Paint): Target < 2.5s.
  • CLS (Cumulative Layout Shift): Target < 0.1.
  • INP (Interaction to Next Paint): Target < 200ms.
  • Tools: Chrome DevTools "Performance" tab, next/speed-insights, React Profiler.

Images

Always use next/image to prevent CLS and enable automatic optimization:

See implementation examples

Fonts

Use next/font for zero layout shift — self-hosts fonts and adds font-display: swap:

See implementation examples

Metadata (SEO)

See implementation examples

Scripts

Use next/script with appropriate loading strategies:

  • beforeInteractive: Critical scripts (polyfills).
  • afterInteractive: Analytics (Google Analytics).
  • lazyOnload: Chat widgets, social embeds.

Bundle & Components

  • Analyze with @next/bundle-analyzer. Prune heavy libraries; use ESM-tree-shakable dependencies.
  • Use dynamic imports with Suspense for large components not needed at initial render.
  • Enable ppr: true (Partial Prerendering) in Next.js 15+ for static shell + dynamic islands.

Anti-Patterns

  • No <img> tag: Use next/image to prevent CLS and enable automatic optimization.
  • No Google Fonts CDN link: Use next/font to self-host and eliminate layout shift.
  • No metadata in _document.tsx: Use export const metadata or generateMetadata().
  • No 3rd-party scripts in <head>: Use next/script with appropriate strategy.
我的收藏