Communitygithub.com

Patrones Nuxt 4

Patrones para aplicaciones Nuxt 4 que garantizan seguridad en hidratación, rendimiento, reglas de ruta, carga diferida y obtención de datos segura para SSR con useFetch y useAsyncData. Úsalo al construir o revisar una app Nuxt 4, o al depurar desajustes de hidratación y obtención de datos segura para SSR.

¿Qué es Patrones Nuxt 4?

Este skill proporciona una guía completa de patrones y mejores prácticas para construir aplicaciones Nuxt 4 con renderizado híbrido (SSR), reglas de ruta avanzadas y obtención de datos segura para el lado del servidor. Está diseñado para desarrolladores que trabajan con Nuxt 4 y necesitan evitar desajustes de hidratación, optimizar el rendimiento mediante carga diferida (lazy loading) e hidratación perezosa (lazy hydration), y decidir la estrategia de renderizado adecuada para cada grupo de rutas (prerender, SWR, ISR, solo cliente). El skill explica cómo usar correctamente `useFetch` y `useAsyncData` para que los datos obtenidos en SSR se reutilicen en el cliente sin peticiones duplicadas, y cómo aplicar `routeRules` en `nuxt.config.ts` para controlar el almacenamiento en caché y la generación de páginas estáticas o dinámicas. También cubre técnicas de carga diferida de componentes con el prefijo `Lazy`, hidratación bajo demanda con directivas como `hydrate-on-visible`, y un checklist de revisión para garantizar que el marcado de la primera renderización SSR coincida con la renderización en el cliente. Es compatible con cualquier proyecto Nuxt 4 y es especialmente útil durante fases de construcción, revisión de código o depuración de problemas de rendimiento e hidratación.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/affaan-m/everything-claude-code/tree/main/skills/nuxt4-patterns

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

¿Qué hace Patrones Nuxt 4?

Úsalo al construir o depurar aplicaciones Nuxt 4 con SSR, renderizado híbrido, reglas de ruta u obtención de datos a nivel de página.

Cuándo activarlo

  • Desajustes de hidratación entre el HTML del servidor y el estado del cliente
  • Decisiones de renderizado a nivel de ruta como prerender, SWR, ISR o secciones solo cliente
  • Trabajo de rendimiento en torno a carga diferida, hidratación perezosa o tamaño de payload
  • Obtención de datos de página o componente con useFetch, useAsyncData o $fetch
  • Problemas de enrutamiento de Nuxt relacionados con parámetros de ruta, middleware o diferencias SSR/cliente

Seguridad en hidratación

  • Mantén la primera renderización determinista. No pongas Date.now(), Math.random(), APIs solo del navegador ni lecturas de almacenamiento directamente en el estado de plantilla renderizado por SSR.
  • Mueve la lógica solo del navegador detrás de onMounted(), import.meta.client, ClientOnly o un componente .client.vue cuando el servidor no pueda producir el mismo marcado.
  • Usa el composable useRoute() de Nuxt, no el de vue-router.
  • No uses route.fullPath para impulsar el marcado renderizado por SSR. Los fragmentos de URL son solo de cliente, lo que puede crear desajustes de hidratación.
  • Trata ssr: false como una vía de escape para áreas verdaderamente solo del navegador, no como una corrección predeterminada para desajustes.

Obtención de datos

  • Prefiere await useFetch() para lecturas de API seguras para SSR en páginas y componentes. Reenvía los datos obtenidos en el servidor al payload de Nuxt y evita una segunda obtención en la hidratación.
  • Usa useAsyncData() cuando el obtenedor no sea una simple llamada $fetch(), cuando necesites una clave personalizada o cuando estés componiendo múltiples fuentes asíncronas.
  • Dale a useAsyncData() una clave estable para la reutilización de caché y un comportamiento de actualización predecible.
  • Mantén los manejadores de useAsyncData() libres de efectos secundarios. Pueden ejecutarse durante SSR e hidratación.
  • Usa $fetch() para escrituras activadas por el usuario o acciones solo del cliente, no para datos de página de nivel superior que deban hidratarse desde SSR.
  • Usa lazy: true, useLazyFetch() o useLazyAsyncData() para datos no críticos que no deban bloquear la navegación. Maneja status === 'pending' en la interfaz de usuario.
  • Usa server: false solo para datos que no sean necesarios para SEO o la primera pintura.
  • Reduce el tamaño del payload con pick y prefiere payloads más superficiales cuando la reactividad profunda sea innecesaria.
const route = useRoute()

const { data: article, status, error, refresh } = await useAsyncData(
  () => `article:${route.params.slug}`,
  () => $fetch(`/api/articles/${route.params.slug}`),
)

const { data: comments } = await useFetch(`/api/articles/${route.params.slug}/comments`, {
  lazy: true,
  server: false,
})

Reglas de ruta

Prefiere routeRules en nuxt.config.ts para la estrategia de renderizado y caché:

export default defineNuxtConfig({
  routeRules: {
    '/': { prerender: true },
    '/products/**': { swr: 3600 },
    '/blog/**': { isr: true },
    '/admin/**': { ssr: false },
    '/api/**': { cache: { maxAge: 60 * 60 } },
  },
})
  • prerender: HTML estático en tiempo de compilación
  • swr: sirve contenido en caché y revalida en segundo plano
  • isr: regeneración estática incremental en plataformas compatibles
  • ssr: false: ruta renderizada solo en cliente
  • cache o redirect: comportamiento de respuesta a nivel de Nitro

Elige reglas de ruta por grupo de rutas, no globalmente. Las páginas de marketing, catálogos, paneles de control y APIs generalmente necesitan estrategias diferentes.

Carga diferida y rendimiento

  • Nuxt ya divide el código de las páginas por ruta. Mantén los límites de ruta significativos antes de micro-optimizar divisiones de componentes.
  • Usa el prefijo Lazy para importar dinámicamente componentes no críticos.
  • Renderiza condicionalmente componentes diferidos con v-if para que el chunk no se cargue hasta que la interfaz realmente lo necesite.
  • Usa hidratación perezosa para contenido no visible en pantalla o interfaz interactiva no crítica.
<template>
  <LazyRecommendations v-if="showRecommendations" />
  <LazyProductGallery hydrate-on-visible />
</template>
  • Para estrategias personalizadas, usa defineLazyHydrationComponent() con una estrategia de visibilidad o inactividad.
  • La hidratación perezosa de Nuxt funciona en componentes de un solo archivo. Pasar nuevas props a un componente hidratado perezosamente activará la hidratación de inmediato.
  • Usa NuxtLink para la navegación interna para que Nuxt pueda precargar los componentes de ruta y los payloads generados.

Lista de verificación de revisión

  • La primera renderización SSR y la renderización del cliente hidratada producen el mismo marcado
  • Los datos de página usan useFetch o useAsyncData, no $fetch de nivel superior
  • Los datos no críticos son diferidos y tienen una interfaz de usuario de carga explícita
  • Las reglas de ruta coinciden con los requisitos de SEO y frescura de la página
  • Las islas interactivas pesadas se cargan de forma diferida o se hidratan perezosamente

Individual skills in this repo

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

accessibility

Design, implement, and audit inclusive digital products using WCAG 2.2 Level AA. Use when building or auditing UI that must meet WCAG 2.2 Level AA, or when reviewing a change for keyboard, contrast, or screen-reader support.

affaan-m/claude-api

Anthropic Claude API patterns for Python and TypeScript. Covers Messages API, streaming, tool use, vision, extended thinking, batches, prompt caching, and Claude Agent SDK. Use when building applications with the Claude API or Anthropic SDKs.

affaan-m/everything-claude-code

End-to-end marketing campaign planning and execution. Covers audience research, positioning, campaign angle definition, landing page copy, email sequences, social posts, ad copy, short-form video scripts, and content calendars. Use as the orchestration layer for multi-channel product launches. Use when planning or executing a multi-channel product launch, or producing landing page, email, social, or ad copy.

affaan-m/everything-claude-code

Development conventions and patterns for everything-claude-code. JavaScript project with conventional commits.

affaan-m/everything-claude-code-conventions

Development conventions and patterns for everything-claude-code. JavaScript project with conventional commits.

affaan-m/frontend-design

Create distinctive, production-grade frontend interfaces with high design quality. Use when the user asks to build web components, pages, or applications and the visual direction matters as much as the code quality.

affaan-m/gget

gget CLI and Python workflow for quick genomic database queries, sequence lookup, BLAST-style searches, enrichment checks, and reproducible bioinformatics evidence logs.

affaan-m/literature-review

Systematic literature-review workflow for academic, biomedical, technical, and scientific topics, including search planning, source screening, synthesis, citation checks, and evidence logging.

affaan-m/motion-ui

Production-ready UI motion system for React/Next.js. Use when implementing animations, transitions, or motion patterns.

affaan-m/project-guidelines-example

Example project-specific skill template based on a real production application.

affaan-m/pubmed-database

Direct PubMed and NCBI E-utilities search workflows for biomedical literature, MeSH queries, PMID lookup, citation retrieval, and API-backed literature monitoring.

affaan-m/scholar-evaluation

Structured scholarly-work evaluation for papers, proposals, literature reviews, methods sections, evidence quality, citation support, and research-writing feedback.

affaan-m/uspto-database

USPTO patent and trademark data workflow for official record lookup, PatentSearch queries, TSDR checks, assignment data, and reproducible IP research logs.

agent-architecture-audit

Full-stack diagnostic for agent and LLM applications. Audits the 12-layer agent stack for wrapper regression, memory pollution, tool discipline failures, hidden repair loops, and rendering corruption. Produces severity-ranked findings with code-first fixes. Essential for developers building agent applications, autonomous loops, or any LLM-powered feature. Use when an agent or LLM feature misbehaves and the failing layer is unknown, or before shipping an agent stack.

agent-eval

Head-to-head comparison of coding agents (Claude Code, Aider, Codex, etc.) on custom tasks with pass rate, cost, time, and consistency metrics. Use when choosing between coding agents, or when a change to an agent setup needs measured pass rate, cost, and time rather than an impression.

agent-harness-construction

Design and optimize AI agent action spaces, tool definitions, and observation formatting for higher completion rates. Use when defining or revising an agent

agentic-engineering

Operate as an agentic engineer using eval-first execution, decomposition, and cost-aware model routing. Use when planning or executing engineering work that agents will carry out end to end.

agentic-os

Build persistent multi-agent operating systems on Claude Code. Covers kernel architecture, specialist agents, slash commands, file-based memory, scheduled automation, and state management without external databases. Use when building a persistent multi-agent system on Claude Code with its own memory, commands, and scheduling.

agent-introspection-debugging

Structured self-debugging workflow for AI agent failures using capture, diagnosis, contained recovery, and introspection reports. Use when an agent run fails and you need a reproducible diagnosis instead of a retry.

agent-payment-x402

Add x402 payment execution to AI agents with per-task budgets, spending controls, and non-custodial wallets. Supports Base through agentwallet-sdk and X Layer through OKX Payments / OKX Agent Payments Protocol. Use when an agent must pay for something itself and needs per-task budgets, spending controls, and a non-custodial wallet.

Skills relacionados