¿Cómo perfilarías una pantalla React lenta antes de tocar código?
¿Cómo perfilarías una pantalla React lenta antes de tocar código? en React: criterios sobre rendimiento y profiling, errores comunes y respuesta práctica con...
Detrás de "¿Cómo perfilarías una pantalla React lenta antes de tocar código?" suele haber una tensión real en React entre rendimiento y profiling.
En un nivel intermedio interesa ver si colocas bien los límites de "Cómo perfilarías una pantalla React lenta antes de tocar código", justificas por qué eliges ese patrón y explicas cómo lo mantendrías legible para el equipo.
Qué evalúa el entrevistador
- Si distingues qué parte de "Cómo perfilarías una pantalla React lenta antes de tocar código" pertenece a rendimiento y cuál debería resolverse en profiling.
- Si conviertes la respuesta en criterios observables: límites claros, impacto en el mantenimiento y forma de detectar regresiones.
- Si entiendes qué dispara trabajo real de render o hidratación y cuándo merece la pena optimizar frente a cuándo solo estás moviendo complejidad.
Respuesta sólida
- Explica qué unidad quieres volver a pintar, conservar o diferir y por qué esa decisión mejora la experiencia sin complicar el árbol.
- Relaciona la solución con claves, memoización, detección de cambios, hidratación o virtualización solo si el cuello de botella está realmente ahí.
- Si propones optimización, acompáñala de una forma de medirla con herramientas o métricas visibles.
Compromisos y errores comunes
- Optimizar sin perfilar antes suele desplazar la complejidad hacia el componente sin tocar el verdadero cuello de botella.
- Forzar memoización, cachés o control fino del render donde no hace falta complica la depuración y suele envejecer mal.
Ejemplo de código
No se trata de memorizar esta implementación, sino de enseñar cómo ordenar el flujo de rendimiento en React sin mezclar responsabilidades ni perder de vista profiling.
import { memo, useMemo, useState } from 'react';
const ProductList = memo(function ProductList({ products }: { products: string[] }) {
return <ul>{products.map((product) => <li key={product}>{product}</li>)}</ul>;
});
export function SearchPanel({ products }: { products: string[] }) {
const [query, setQuery] = useState('');
const visibleProducts = useMemo(
() => products.filter((product) => product.toLowerCase().includes(query.toLowerCase())),
[products, query],
);
return (
<>
<input value={query} onChange={(event) => setQuery(event.target.value)} />
<ProductList products={visibleProducts} />
</>
);
}
En entrevista yo usaría un ejemplo de este tamaño para "Cómo perfilarías una pantalla React lenta antes de tocar código": suficiente para demostrar criterio y lo bastante pequeño como para discutir riesgos y variantes sin perderse.
Ejemplo o caso real
Yo lo bajaría a un escenario reconocible de React: una pieza donde "Cómo perfilarías una pantalla React lenta antes de tocar código" aparece de forma recurrente, ya ha dejado señales en revisión o en soporte y mezcla rendimiento con profiling. Si la decisión mejora claridad, observabilidad y velocidad de cambio en ese trozo, entonces merece escalarla; si no, la dejaría local y documentada.
Frase corta de entrevista
Si una decisión de React no mejora claridad, coste de cambio o fiabilidad, probablemente aún no merece existir.
Marcarla como leída actualiza tu progreso.