Mejores prácticas de bibliotecas React
Un resumen condensado de las 25 mejores prácticas más importantes extraídas de cada página en esta sección.
Busca en todas las páginas de la documentación
Un resumen condensado de las 25 mejores prácticas más importantes extraídas de cada página en esta sección.
🤖 Read the SystemsArchitect.io Blog for over 100+ cloud architecture articles 🔥
result.toDataStreamResponse() (no result.text o NextResponse.json); de lo contrario, envías un blob JSON de respuesta completa y la UI de transmisión useChat nunca se actualiza token-por-token.maxSteps predeterminan a un solo paso, por lo que el modelo puede llamar a una herramienta pero nunca ver su resultado y la conversación se detiene - aumenta a la máxima profundidad de razonamiento que realmente deseas.generateObject({ schema }) con un esquema Zod impone la forma en la capa SDK; solicitar JSON y análisis manual es frágil y desperdicia tokens en instrucciones de formato.InvokeCommand rechaza objetos simples en tiempo de ejecución - envuelve con new TextEncoder().encode(JSON.stringify(payload)) y decodifica la respuesta simétricamente, respetando los límites de carga útil de 6 MB sincrónico / 256 KB asincrónico.FunctionError en la respuesta, no como una excepción lanzada, por lo que inspecciona el sobre de respuesta - las invocaciones asincrónicas (Event) descartan errores silenciosamente a menos que configures un DLQ.DescribeVoicesCommand antes de cambiar voces.TextType: "ssml" y debe ser XML válido dentro de <speak>...</speak> con &, <, > escapados; también evita salida pcm para navegadores ya que es audio crudo - usa mp3 u ogg_vorbis.PUT directamente a S3 para que las cargas grandes eviten el límite de cuerpo de solicitud de Next.js (1 MB predeterminado) y nunca toquen el ancho de banda del servidor.PUT y el encabezado Content-Type - y siempre establece ContentType en el comando prefirmado para que el objeto no se guarde como application/octet-stream.@aws-sdk/client-s3, client-lambda o client-polly desde un archivo "use client" - las credenciales terminan en el bundle del navegador y AWS SDK v3 hincha el JS del cliente; usa Server Actions o Route Handlers.new Date("2026-04-06") analiza cadenas ISO de solo fecha como medianoche UTC y se desplaza visiblemente en zonas no UTC, por lo que prefiere parseISO (más date-fns-tz para trabajo consciente de zona) para evitar errores silenciosos de un día fuera.MM es mes, mm es minutos y DD es inválido (usa dd) - los errores de caso se compilan correctamente y producen cadenas silenciosamente incorrectas.DragOverlay renderiza la vista previa de arrastre fuera del flujo del DOM y soluciona el problema de "salto de elementos" cuando el espacio original se colapsa; combina con opacidad reducida en el original para una visual estable.activationConstraint: { distance: 8 } (o un retraso) a PointerSensor para que un solo clic no inicie un arrastre; sin esto, cada clic en un elemento ordenable desencadena arrastres accidentales.lodash-es para que el empaquetador tree-shake las utilidades sin usar; import _ from "lodash" trae toda la construcción CJS de ~70 KB incluso para un solo ayudante.debounce(fn, 300) en línea en render devuelve una instancia nueva cada renderizado y nunca acumula llamadas; envuelve la creación en useMemo/useCallback y llama a .cancel() en la limpieza useEffect para que las invocaciones pendientes no se disparen después del desmontaje.merge(target, source) de Lodash muta su primer argumento, así que siempre pasa un nuevo {} (o cloneDeep primero) como objetivo; también prefiere structuredClone nativo sobre cloneDeep a menos que necesites soporte de función o instancia de clase.AUTH_SECRET y los secretos débiles comprometen cada sesión - genera uno con npx auth secret y usa valores distintos por entorno para que una clave de desarrollo filtrada nunca comprometa prod.jwt/session como una ampliación de módulo en types/next-auth.d.ts o TypeScript se desvía del tiempo de ejecución.globalThis para que la recarga de módulo en caliente no abra un nuevo pool de conexiones en cada guardado - sin esto la base de datos rápidamente rechaza conexiones y el servidor de desarrollo parece colgarse.Number o String antes de pasar a Componentes Cliente, y selecciona solo las relaciones que necesitas (con include/select) para evitar consultas N+1.QueryClient de TanStack Query dentro de useState(() => new QueryClient()) dentro de un proveedor cliente; un cliente a nivel de módulo en un Server Component filtra el estado de caché entre solicitudes de usuario y filtra datos entre usuarios.staleTime controla cuándo se considera que los datos son frescos y si ocurren refetches; gcTime controla cuánto tiempo las consultas inactivas permanecen en la caché - staleTime: Infinity aún permite la recolección de basura, y las mutaciones nunca auto-invalidan consultas relacionadas sin invalidateQueries explícito.Revisado por Chris St. John·Última actualización: 16 jul 2026
🤖 Read the SystemsArchitect.io Blog for over 100+ cloud architecture articles 🔥