Skip to content
NeuralSkills
Revision de Codigo

Revision de Componentes Frontend

Revisa componentes React/Vue: prop drilling, gestion de estado, re-renders innecesarios y composicion.

Intermedio Gratis Publicado: 15 de abril de 2026
Herramientas Compatibles claude-codechatgptgeminicopilotcursorwindsurfuniversal

El Problema

Los componentes frontend empiezan simples y crecen hasta ser masas enredadas. Un componente “simple” de tarjeta acumula 15 props, 3 hooks useState, 2 efectos useEffect y estilos inline. Los props perforan 4 niveles de anidamiento porque “el context parecia excesivo.” Cada tecla en un input de busqueda re-renderiza 200 elementos de lista porque la funcion de filtro se recrea en cada render.

El Prompt

Revisa los siguientes componentes frontend. Actua como un arquitecto frontend evaluando escalabilidad, rendimiento y composicion limpia.

FRAMEWORK: [React / Vue / Svelte / Astro]
TIPO DE COMPONENTE: [ej. formulario, tabla de datos, navegacion, widget de dashboard]

CODIGO:
[pegar codigo del componente aqui]

Evalua en estas dimensiones:

1. **Responsabilidad del Componente**
   - Cada componente hace una cosa (presentacion O logica, no ambas)?
   - Los componentes tienen menos de 150 lineas?
   - Deberia dividirse en container (logica) + presentational (UI)?

2. **Props & API**
   - La interfaz de props es limpia (menos de 7 props)?
   - Los props perforan 3+ niveles (deberia usar context/store)?
   - Los callback props son estables (envueltos en useCallback)?

3. **Gestion de Estado**
   - El estado esta lo mas cerca posible de donde se usa?
   - El estado derivado se computa (useMemo) en vez de sincronizar con useEffect?
   - Hay variables de estado redundantes que pueden derivarse de otras?

4. **Rendimiento de Renderizado**
   - Los items de lista estan envueltos en React.memo?
   - Las computaciones costosas estan memoizadas?
   - Las dependencias de useEffect incluyen referencias inestables?

5. **Efectos Secundarios**
   - Los useEffects tienen funciones de limpieza?
   - Los fetch estan deduplicados (useSWR/React Query en vez de useEffect raw)?
   - Hay estados de loading/error/empty para datos async?

6. **Composicion**
   - El arbol de componentes es plano o profundamente anidado?
   - Se usan slots/children/render props para composicion flexible?

Para cada problema, proporciona:
- **Componente**: Nombre y archivo
- **Severidad**: Reescribir / Refactorizar / Optimizacion / Estilo
- **Problema**: Por que dana escalabilidad o rendimiento
- **Fix**: Codigo refactorizado

Ejemplo de Salida

## Revision de Componentes Frontend: 5 problemas encontrados

### Refactorizar: Prop Drilling por 4 Niveles
Componente: App → Layout → Sidebar → NavItem (prop user)
Fix: Usar React context:
  const UserContext = createContext<User | null>(null);

### Optimizacion: Lista Re-renderiza en Cada Tecla
Fix:
  const filtered = useMemo(
    () => results.filter(r => r.name.includes(query)),
    [results, query]
  );

### Refactorizar: useEffect Sincronizando Estado Derivado
Codigo:
  const [fullName, setFullName] = useState('');
  useEffect(() => setFullName(first + ' ' + last), [first, last]);
Fix: Derivar directamente: const fullName = `${first} ${last}`;

Cuando Usar

Ejecutar al revisar PRs de componentes, cuando una pagina se siente lenta, o cuando un componente ha crecido mas de 200 lineas. Esencial al construir un design system.

Tips Pro

  • Incluir el arbol de componentes — muchos problemas viven en la relacion entre componentes, no dentro de uno solo.
  • Perfilar antes de memoizar — usar React DevTools Profiler para identificar bottlenecks reales de re-render.
  • Pedir plan de descomposicion — “Descompone esto en capas de atomic design: atomos, moleculas, organismos.”