Communitygithub.com

sakilanwar12/nextjs-typescript-skills

Use ao otimizar o desempenho do Next.js — otimização de imagens/fontes, análise de bundle, importações dinâmicas, cache ISR/PPR e correções de Core Web Vitals.

O que é nextjs-typescript-skills?

Este skill fornece regras e padrões para maximizar o desempenho de aplicações Next.js com TypeScript. Ele cobre otimizações essenciais como uso de `next/image` com tamanhos explícitos e `next/font` sem bloqueio de renderização. Inclui análise de bundle com `@next/bundle-analyzer`, carregamento dinâmico com `dynamic(() => import(...), { ssr: false })` para componentes pesados no cliente, e cache agressivo com ISR (Incremental Static Regeneration) e `revalidate`. O skill também recomenda estratégias para evitar gargalos de desempenho, como paralelizar buscas em RSC e usar Suspense. Suporta as plataformas de agentes de IA que seguem a estrutura de habilidades, como Cursor e Codex, e é baseado nas melhores práticas documentadas da equipe do Next.js.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/sakilanwar12/nextjs-typescript-skills/tree/HEAD/skills/nextjs-performance

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Desempenho no Next.js

Regras

  1. Imagens: sempre next/image com sizes explícitos, priority apenas para herói LCP. Fontes: next/font (sem <link> do Google bloqueante de renderização).
  2. Meça primeiro: @next/bundle-analyzer, saída do next build, Lighthouse. Corrija o maior gargalo primeiro.
  3. dynamic(() => import(...), { ssr: false }) para widgets pesados apenas no cliente (gráficos, editores). Mantenha o JS inicial < 200KB gz sempre que possível.
  4. Faça cache agressivo: estático + revalidate (ISR) para páginas semidinâmicas; use loading.tsx/Suspense para transmitir partes lentas em vez de bloquear o TTFB.
  5. Evite cascatas: paralelize em RSC, memorize fetch repetitivo (auto-deduplicado por requisição), use unstable_cache para operações computacionais caras.

Padrões

// next/image — dimensionado, lazy por padrão
import Image from 'next/image';
<Image src="/hero.jpg" alt="Dashboard" width={1200} height={630} priority sizes="100vw" />
<Image src="/avatar.png" alt="Usuário" width={64} height={64} sizes="64px" />

// next/font — auto-hospedado, zero de CLS
import { Inter } from 'next/font/google';
const inter = Inter({ subsets: ['latin'], display: 'swap' });
export default function RootLayout({ children }: { children: React.ReactNode }) {
  return <html lang="en" className={inter.className}><body>{children}</body></html>;
}

// Widget pesado no cliente — divisão de código
import dynamic from 'next/dynamic';
const Chart = dynamic(() => import('@/components/chart'), { ssr: false, loading: () => <p>Carregando gráfico…</p> });

// ISR
export const revalidate = 60;
// next.config.js — analisador
const withBundleAnalyzer = require('@next/bundle-analyzer')({ enabled: process.env.ANALYZE === 'true' });
module.exports = withBundleAnalyzer({});
// ANALYZE=true next build

Lista de Verificação

  • Imagem herói com priority + sizes, as outras lazy?
  • next/font usado, sem links externos de fontes?
  • Componentes pesados importados dinamicamente?
  • Bundle analisado, maior importação justificada?
  • ISR/revalidate definido para páginas com cache?
  • LCP/CLS/INP verificados no Lighthouse?

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

Habilidades Relacionadas