Code Splitting con React.lazy y Suspense

Optimiza tiempos de carga inicial dividiendo bundles y cargando componentes bajo demanda con React.lazy y Suspense.

En apps grandes, enviar todo el JavaScript en la carga inicial penaliza Time to Interactive y experiencia en redes lentas.

Code splitting divide el código en chunks para cargar solo lo necesario en cada momento.

React.lazy permite importar componentes de forma diferida, y Suspense define qué mostrar mientras ese chunk llega.

La clave no es dividir por dividir, sino identificar pantallas o módulos pesados que no deben bloquear el arranque.

  • Reducir JS inicial acelera primer render útil, especialmente en dispositivos modestos.
  • Separar rutas o módulos pesados evita que usuarios descarguen código que quizá nunca usarán.
  • Esto mejora no solo velocidad percibida, también consumo de datos en móvil.
  • Combinar splitting con caching de chunks puede mejorar visitas recurrentes.
  • Import dinámico + Suspense = carga diferida controlada.

Qué ganas con code splitting

Reducir JS inicial acelera primer render útil, especialmente en dispositivos modestos.

Separar rutas o módulos pesados evita que usuarios descarguen código que quizá nunca usarán.

Esto mejora no solo velocidad percibida, también consumo de datos en móvil.

Combinar splitting con caching de chunks puede mejorar visitas recurrentes.

Patrón base con React.lazy

Import dinámico + Suspense = carga diferida controlada.

Criterios de implementación

Divide por valor de negocio y comportamiento de navegación, no por moda.

Si fragmentas demasiado, puedes introducir latencia repetida en navegación interna.

El equilibrio ideal depende del patrón real de uso de tu aplicación.

  • Rutas poco frecuentes candidatas a lazy.
  • Módulos de administración o analytics suelen pesar más.
  • Fallbacks breves y claros para evitar parpadeos molestos.
  • Mide con Lighthouse/DevTools antes y después.
React
21

Code Splitting con React.lazy y Suspense

Optimiza tiempos de carga inicial dividiendo bundles y cargando componentes bajo demanda con React.lazy y Suspense.

Código del tema: Componentes, estado y render declarativo

📘 Teoría

Qué ganas con code splitting

Reducir JS inicial acelera primer render útil, especialmente en dispositivos modestos.

1

Separar rutas o módulos pesados evita que usuarios descarguen código que quizá nunca usarán.

2

Esto mejora no solo velocidad percibida, también consumo de datos en móvil.

3

Combinar splitting con caching de chunks puede mejorar visitas recurrentes.

Patrón base con React.lazy

Import dinámico + Suspense = carga diferida controlada.

Componente lazy
import { lazy, Suspense } from 'react';

const ReportsPage = lazy(() => import('./pages/ReportsPage'));

function App() {
  return (
    <Suspense fallback={<p>Cargando módulo...</p>}>
      <ReportsPage />
    </Suspense>
  );
}

Criterios de implementación

Divide por valor de negocio y comportamiento de navegación, no por moda.

Si fragmentas demasiado, puedes introducir latencia repetida en navegación interna.

El equilibrio ideal depende del patrón real de uso de tu aplicación.

  • Rutas poco frecuentes candidatas a lazy.
  • Módulos de administración o analytics suelen pesar más.
  • Fallbacks breves y claros para evitar parpadeos molestos.
  • Mide con Lighthouse/DevTools antes y después.

🧪 Aprende probando

Ejemplo Ejemplo: rutas lazy en dashboard Carga diferida de páginas secundarias para aligerar bundle inicial.

🏁 Retos

Reto Reto: convierte import estático a lazy Sustituye la importación directa de `AdminPage` por `React.lazy`.

🧰 Recursos

Test

Comprueba tus conocimientos con un test sobre React.

Test de React

¿Qué es esto?

Soy Cristian Eslava y a veces hago webs para procrastinar yo y vosotros 😉.

Esta la hice en febrero de 2026 para facilitar el aprendizaje de mis alumnxs. Aprender desarrollo web practicando. La idea es que crezca semanalmente con nuevos temas, tests y retos.

Inspirado en MDN, en W3Schools, en Codepen, en el crack de Manz y en mil sitios de documentación sobre desarrollo web. Quería aportar además de bloques teóricos con ejemplos, la gamificación de los retos y el sistema de test que ya tenía en culTest .

Si te gustó, si no te gustó, si quieres saludarme, o invitarme a 🍻 no dudes en escribirme en cristianeslava@gmail.com .