michangarrito/orchestration/_definitions/validations/VALIDATION-FRONTEND.md
rckrdmrd a7575d6096 [GOVERNANCE] feat: Add _definitions, checklists CAPVED, _SSOT, and task templates
Propagated via automated script (scripts/propagate-governance.sh):
- orchestration/_definitions/: canonical definitions
- orchestration/directivas/checklists/: CAPVED phase checklists
- docs/_SSOT/: Single Source of Truth
- orchestration/tareas/_templates/TASK-TEMPLATE-UNIFIED/

Configured as STANDALONE project

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-18 09:35:59 -06:00

1.8 KiB

Validación Frontend - React/TypeScript

Definición Canónica

Alias: @DEF_VAL_FE Dominio: Frontend React/TypeScript


COMANDOS OBLIGATORIOS

# ANTES de marcar tarea como completada:
npm run build      # DEBE pasar sin errores
npm run lint       # DEBE pasar sin errores
npm run typecheck  # DEBE pasar sin errores (tsc --noEmit)

CRITERIOS DE ACEPTACIÓN

build:
  resultado: "Build de producción exitoso"
  sin_warnings_criticos: true
  bundle_size: "Monitorear incrementos grandes"

lint:
  resultado: "0 errores de ESLint"
  reglas_react:
    - "react-hooks/rules-of-hooks"
    - "react-hooks/exhaustive-deps"

typecheck:
  resultado: "0 errores de TypeScript"
  strict_mode: true
  no_any_implicito: true

VALIDACIONES ADICIONALES

componentes:
  - "Props tipadas correctamente"
  - "Keys únicas en listas"
  - "Manejo de loading/error states"
  - "Accesibilidad básica (aria labels)"

hooks:
  - "Dependencias completas en useEffect"
  - "Cleanup en useEffect si necesario"
  - "useMemo/useCallback donde aplique"

estado:
  - "Estado mínimo necesario"
  - "Derivar datos cuando posible"
  - "Zustand/Context correctamente usado"

api:
  - "Manejo de errores de red"
  - "Estados de carga"
  - "Cancelación de requests"

ERRORES COMUNES

- error: "React Hook useEffect has missing dependency"
  causa: "Dependencia no incluida en array"
  solucion: "Agregar dependencia o usar useCallback"

- error: "Cannot read property of undefined"
  causa: "Datos async no disponibles"
  solucion: "Optional chaining o loading state"

- error: "Each child should have unique key"
  causa: "Key faltante o duplicada en map()"
  solucion: "Usar ID único como key"

Referencia: @PERFIL_FRONTEND, @SIMCO_FRONTEND