nextjs-optimization
Image, Font, Script, and Metadata optimization strategies.
Installation
Follow the repository instructions for this skill and your agent. Review the files and dependencies before adding it to your workflow.
View source ↗GuidesSkill instructions
Optimization
Priority: P1 (HIGH)
Core optimization primitives provided by Next.js. Monitor First, Optimize Later.
Monitoring (Core Web Vitals)
Before applying optimizations, identify bottlenecks using:
- LCP (Largest Contentful Paint): Initial load speed. Target < 2.5s.
- CLS (Cumulative Layout Shift): Visual stability. Target < 0.1.
- INP (Interaction to Next Paint): Responsiveness. Target < 200ms.
-
Tools: Chrome DevTools "Performance" tab,
next/speed-insights, orReact Profiler.
Images (next/image)
-
Component:
<Image src="..." alt="..." width={500} height={300} />. - Features: Automatic resizing, lazy loading, format conversion (WebP/AVIF), and CLS prevention (placeholder sizing).
-
Remote: Must configure
images.remotePatternsinnext.config.jsfor external URLs.
Fonts (next/font)
-
Local:
localFont({ src: ... }). -
Google:
Inter({ subsets: ['latin'] }). - Why: Self-hosts fonts at build time. Zero Layout Shift.
Metadata (SEO)
-
Static: Export
metadataobject fromlayout.tsxorpage.tsx.export const metadata: Metadata = { title: 'Dashboard', description: '...', }; -
Dynamic: Export
generateMetadata({ params })function.export async function generateMetadata({ params }) { const product = await getProduct(params.id); return { title: product.name }; } -
Open Graph: Use
openGraphkey for social cards.
Scripts (next/script)
-
Loading Strategy: Control when 3rd party scripts load.
-
strategy="afterInteractive"(Default): Google Analytics. -
strategy="lazyOnload": Chat widgets, low priority.
-
Examples
Read the usage examples in the source repository.
View source ↗Source history
- Indexed on
- 2026-01-20
- Index updated
- 2026-01-26
- Branch
- main
Index and sync dates describe this directory. View the source repository for code history.
GitHub ↗chat Comments (0)
Sign in to join the discussion and leave a comment.
No comments yet. Be the first to share your thoughts!