⚛️ Protocolo Antigravity: Skill Frontend (React)
Core Principle: Componentes puros, predecibles y compostables. UI declarativa sobre imperativa.
1. Stack & Principios
- React: Functional Components + Hooks (Prohibido Class Components).
- TypeScript: Strict Mode.
anyestá prohibido (usarunknowno generics). - Styling: Tailwind CSS (Utility-first).
2. Estructura de Archivos (Feature-First)
Organizar el código por funcionalidad ("Features") en lugar de por tipo técnico.
src/
features/
auth/
components/ # Componentes exclusivos de Auth
hooks/ # Hooks exclusivos de Auth
types/ # Interfaces de Auth
dashboard/
components/ # Componentes UI compartidos (Button, Input)
hooks/ # Hooks compartidos
3. Diseño de Componentes
- SRP: Un componente hace una cosa. Si tiene demasiados
useEffecto estados, divídelo. - Contenedor vs Presentacional: Separar lógica (hooks, data fetching) de vista (JSX, estilos).
- Props: Interfaces explícitas. Usar destructuring. Evitar prop-drilling excesivo (usar Context o Composition).
4. Estado y Hooks
- useState: Para estado local UI simple.
- useReducer: Para estado complejo interdependiente.
- Context: Para estado global temático o de sesión (evitar abusar para data frecuente).
- Custom Hooks: Extraer lógica reutilizable siempre (
useForm,useFetch).
5. Rendimiento
- Re-renders: Entender cuándo y por qué ocurre un render.
- Memoización: Usar
useMemoyuseCallbacksolo ante problemas de performance medidos, o para estabilidad referencial en dependencias de efectos. - Code Splitting:
React.lazypara rutas y modales pesados. - Imágenes:
loading="lazy", formatos modernos (WebP), dimensiones explícitas.
6. JSX Limpio
- Condicionales: Ternarios para casos simples. Short-circuit (
&&) con cuidado (cuidado con0). - Listas:
keyúnica y estable (IDs de DB, no índices de array). - No Lógica en View: Extraer cálculos complejos fuera del return.
7. Tailwind Best Practices
- Usar clases utilitarias directamente.
- Extraer a componentes (
<Button>) para reutilización, NO usar@applyindiscriminadamente. - Mantener consistencia con
tailwind.config.js(colores, espaciado).
8. Testing Check
- ¿Testeas lo que el usuario ve (Behavior), no la implementación interna?
- ¿Cubres casos de éxito y error?
- ¿Componentes accesibles (roles ARIA)?
9. Tooling & Calidad
Consulta la skill
quality-assurancepara detalles de configuración.
- Linter: ESLint obligatorio (
npm run lint). Prohibido ignorar reglas de hooks. - Formatting: Prettier (
npm run format). - Commits: Pre-commit hooks activados.
Recuerda: El frontend es lo que el usuario toca. Haz que se sienta sólido, rápido y profesional.