ES

Chunking

This ad is not shown to multipass and full ticket holders
React Advanced
React Advanced 2026
October 23 - 26, 2026
London, UK & Online
Upcoming event
React Advanced 2026
React Advanced 2026
October 23 - 26, 2026. London, UK & Online
Bookmark
Rate this content
Sentry
Promoted
Code breaks, fix it faster

Crashes, slowdowns, regressions in prod. Seer by Sentry unifies traces, replays, errors, profiles to find root causes fast.

Get started

Examinamos cómo los bundlers colocan módulos en archivos de salida en un proceso llamado "chunking".

¿Cuáles son las métricas competitivas que pueden ser influenciadas por el chunking?

¿Por qué el chunking de CSS y JS es completamente diferente?

¿Cuáles son las consideraciones de rendimiento para aplicaciones grandes?

¿Cómo funciona el chunking de JS y el chunking de CSS en Webpack/Turbopack/Next.js (a un nivel alto)?

This talk has been presented at JSNation 2026, check out the latest edition of this JavaScript Conference.

Tobias Koppers
Tobias Koppers
28 min
11 Jun, 2026

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Tobias Koppers explica el chunking en Bundlers, enfatizando la agrupación eficiente de módulos para la optimización del rendimiento. Las estrategias involucran una agrupación inteligente de módulos, almacenamiento en caché y un equilibrio entre el conteo de solicitudes y los tamaños de descarga. La entrega de CSS a través de etiquetas link plantea complejidad en el chunking debido a las dependencias de orden. El equilibrio del chunking de CSS para reducir solicitudes implica técnicas de overshipping. Las estrategias de chunking en evolución consideran los desafíos del tiempo de compilación y el impacto de los componentes del servidor de React. Las futuras optimizaciones pueden priorizar páginas basadas en datos analíticos. Tailwind ofrece una solución para el chunking de CSS, mientras que se destaca la necesidad de futuras características de CSS con declaraciones de dependencia nativas.
Available in English: Chunking

1. Understanding Chunking in Bundlers

Short description:

Tobias Koppers discute el chunking en Bundlers, donde los módulos se colocan en archivos de salida llamados chunks basados en un gráfico de módulos. La visualización implica dibujar ciclos alrededor de los módulos, agrupándolos en archivos de salida. Los puntos de entrada y los módulos compartidos se separan en chunks distintos para una carga eficiente.

Mi nombre es Tobias Koppers, trabajo en Vercel como parte del equipo de herramientas de empaquetado, y hoy otro tema de Bundler, el chunking. Entonces, ¿qué es el chunking en realidad? Mi definición de chunking es que es un proceso en un Bundler que coloca módulos en archivos de salida. Y usualmente llamo a estos archivos de salida chunks porque, bueno, se me ocurrió este nombre. Así que básicamente es como tomamos el gráfico de módulos de tu aplicación, decidimos de alguna manera extraña cómo ponerlo en chunks, y ese es el proceso de chunking.

Si lo visualizas, podría haber un ejemplo realmente simple aquí. Así que tenemos un gráfico de módulos, uno realmente pequeño para este caso. Tenemos un montón de módulos, estos como puntos blancos. Estos módulos generalmente están conectados a través de dependencias, como import, o require, o un import asíncrono. Y estos son los bordes del gráfico. Y visualizo un borde realmente especial aquí porque es realmente especial para el chunking, hay uno rojo punteado, que es un import asíncrono, como un import dinámico o algo donde cargas algo bajo demanda.

Y también, generalmente tu gráfico de módulos tiene muchos puntos vacíos, tal vez tus páginas o esas cosas. Y aquí están las páginas más importantes de una aplicación, por supuesto, la página legal y la página de precios. Y básicamente puedes visualizar el chunking de una manera que simplemente dibujas ciclos alrededor de estos módulos. Y sí, hice esto con los ciclos de pantalla, y básicamente significa que todos estos módulos que están ciclando juntos se colocan en un archivo de salida. Y sí. Y un ejemplo como este import asíncrono aquí en el lado izquierdo, con la cosa punteada roja, se coloca en su propio chunk para que podamos cargarlo bajo demanda.

Y tenemos como todos los puntos de entrada siendo sus propios chunks porque entonces podemos cargarlos independientemente de las otras páginas. Y también podrías, como en este ejemplo, también puse como el área del medio de módulos que son compartidos por estos dos puntos de entrada en sus propios chunks, para que podamos compartir eso. Pero sí, es realmente complicado. Puedes idear muchas formas diferentes de ciclar estos módulos. Y sí, ese es el proceso de chunking, no de ciclado. Sí.

2. Optimizing Chunking Process

Short description:

El chunking de una buena manera implica considerar métricas de rendimiento que influyen en cómo se forman los chunks. Comprender los grupos de chunks y métricas como el tamaño de descarga y el conteo de solicitudes por grupo de chunks es crucial para optimizar el rendimiento.

¿Y cómo hacer chunking de una buena manera? Así que sí. Una cosa es que puedes mirar las métricas. Así que la mayoría de las veces, nos preocupamos por las métricas de rendimiento. Así que estas métricas básicamente influyen en cómo dividimos las cosas en chunks. Y antes de que miremos las métricas, queremos ver otro término que es grupos de chunks. Y digo que los grupos de chunks son básicamente un conjunto de chunks que se cargan juntos que podrían ser en una carga inicial de página, cargas estos 10 chunks en etiquetas de script.

Y ese es un grupo de chunks de carga inicial. Pero también es como otros tipos de grupos de chunks, como en una importación dinámica, hay un grupo de chunks de carga asíncrona donde cargas estos chunks juntos como un grupo. O una navegación entre dos páginas es también como un grupo de chunks. Y realmente queremos mirar algunas métricas. Una métrica es el tamaño de descarga. Y con tamaño de descarga, no me refiero al tamaño del bundle porque la gente a menudo ve el tamaño del bundle como este es el tamaño de la carpeta que el bundler, la carpeta de salida que el bundler produce. Pero el tamaño total de esa carpeta, eso realmente importa.

Podría importar para el tiempo de compilación de tu aplicación, pero no importa para el rendimiento percibido por el usuario. Lo que realmente importa es el tamaño de descarga por grupo de chunks. Esta carga inicial de página tiene tantos bytes descargados o estas cargas bajo demanda de tantos bytes descargados o esta navegación tiene tantos bytes descargados. Así que realmente, realmente queremos mirar estas métricas en un sentido de por grupo de chunks. Y similar para la segunda métrica, que es el conteo de solicitudes. El conteo de solicitudes obviamente no es bueno si haces muchas solicitudes porque cada solicitud tiene un overhead.

QnA

Available in other languages:

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

El Futuro de las Herramientas de Rendimiento
JSNation 2022JSNation 2022
21 min
El Futuro de las Herramientas de Rendimiento
Top Content
Today's Talk discusses the future of performance tooling, focusing on user-centric, actionable, and contextual approaches. The introduction highlights Adi Osmani's expertise in performance tools and his passion for DevTools features. The Talk explores the integration of user flows into DevTools and Lighthouse, enabling performance measurement and optimization. It also showcases the import/export feature for user flows and the collaboration potential with Lighthouse. The Talk further delves into the use of flows with other tools like web page test and Cypress, offering cross-browser testing capabilities. The actionable aspect emphasizes the importance of metrics like Interaction to Next Paint and Total Blocking Time, as well as the improvements in Lighthouse and performance debugging tools. Lastly, the Talk emphasizes the iterative nature of performance improvement and the user-centric, actionable, and contextual future of performance tooling.
No REST para Cap'n Web
Node Congress 2026Node Congress 2026
23 min
No REST para Cap'n Web
Top Content
Kenton Varda advocates for using CapnWeb, an RPC protocol, over REST for web APIs, emphasizing benefits for humans and AI agents. CapnWeb simplifies client-server communications by treating them as function calls. TypeScript type checking ensures method accuracy in CapnWeb across JavaScript runtimes. Stubs in CapnWeb allow method calls to execute on remote objects and simulate all possible method names for remote calls. Converting REST APIs to CapnWeb streamlines code and improves API calls. CapnWeb enhances API functionality with object-specific RPC sessions and promises pipelining for multilevel API optimization. AI agent security challenges are addressed with sandboxing and token protection in CapnWeb. CapnWeb capabilities for AI agents include passing restricted CapnWeb stubs and exploring capability-based security with CapnProto.
Rome, ¡una cadena de herramientas moderna!
JSNation 2023JSNation 2023
31 min
Rome, ¡una cadena de herramientas moderna!
Top Content
Rome is a toolchain built in Rust that aims to replace multiple tools and provide high-quality diagnostics for code maintenance. It simplifies tool interactions by performing all operations once, generating a shared structure for all tools. Rome offers a customizable format experience with a stable formatter and a linter with over 150 rules. It integrates with VCS and VLSP, supports error-resilient parsing, and has exciting plans for the future, including the ability to create JavaScript plugins. Rome aims to be a top-notch toolchain and welcomes community input to improve its work.
Conquistando la Complejidad: Refactorización de Proyectos JavaScript
JSNation 2024JSNation 2024
21 min
Conquistando la Complejidad: Refactorización de Proyectos JavaScript
Top Content
Today's Talk explores the complexity in code and its impact. It discusses different methods of measuring complexity, such as cyclomatic complexity and cognitive complexity. The importance of understanding and conquering complexity is emphasized, with a demo showcasing complexity in a codebase. The Talk also delves into the need for change and the role of refactoring in dealing with complexity. Tips and techniques for refactoring are shared, including the use of language features and tools to simplify code. Overall, the Talk provides insights into managing and reducing complexity in software development.
Mejorando la Felicidad del Desarrollador con IA
React Summit 2023React Summit 2023
29 min
Mejorando la Felicidad del Desarrollador con IA
Top Content
GitHub Copilot is an auto-completion tool that provides suggestions based on context. Research has shown that developers using Copilot feel less frustrated, spend less time searching externally, and experience less mental effort on repetitive tasks. Copilot can generate code for various tasks, including adding modals, testing, and refactoring. It is a useful tool for improving productivity and saving time, especially for junior developers and those working in unfamiliar domains. Security concerns have been addressed with optional data sharing and different versions for individuals and businesses.
Automatiza el Navegador con la API de Renderizado del Navegador de Workers
JSNation 2024JSNation 2024
20 min
Automatiza el Navegador con la API de Renderizado del Navegador de Workers
The Talk discusses browser automation using the Worker's Browser Rendering API, which allows tasks like navigating websites, taking screenshots, and creating PDFs. Cloudflare integrated Puppeteer with their workers to automate browser tasks, and their browser rendering API combines remote browser isolation with Puppeteer. Use cases for the API include taking screenshots, generating PDFs, automating web applications, and gathering performance metrics. The Talk also covers extending sessions and performance metrics using Durable Objects. Thank you for attending!

Workshops on related topic

Pragmática 101 sobre Herramientas JS Personalizadas para tu Proyecto
JSNation US 2025JSNation US 2025
122 min
Pragmática 101 sobre Herramientas JS Personalizadas para tu Proyecto
Featured Workshop
Will Klein
Will Klein
Vamos a desmitificar los secretos de las herramientas modernas de JavaScript. En este masterclass, aprenderás cómo funcionan los linters, compiladores y transformaciones de código. Darás tus primeros pasos construyendo tus propias herramientas de desarrollo, escribiendo una regla de ESLint, un plugin de compilador y una transformación de código. Aprende estas habilidades para ayudar a tu equipo y profundizar tu comprensión de los lenguajes de computadora.Plan del Masterclass:Una vista previa de cómo se pueden usar los ASTsUn breve recorrido de cómo funcionan los compiladoresUna introducción a trabajar con un ASTEl secreto para hacer miles de cambios en segundosCómo aplicar esta habilidad
Soluciona el 100% de tus errores: Cómo encontrar problemas más rápido con la Reproducción de Sesiones
JSNation 2023JSNation 2023
44 min
Soluciona el 100% de tus errores: Cómo encontrar problemas más rápido con la Reproducción de Sesiones
WorkshopFree
Ryan Albrecht
Ryan Albrecht
¿Conoces ese molesto error? ¿El que no aparece localmente? Y no importa cuántas veces intentes recrear el entorno, no puedes reproducirlo. Has revisado las migas de pan, leído la traza de pila y ahora estás jugando al detective para unir los tickets de soporte y asegurarte de que sea real.
Únete al desarrollador de Sentry, Ryan Albrecht, en esta charla para aprender cómo los desarrolladores pueden utilizar la Reproducción de Sesiones, una herramienta que proporciona reproducciones de video de las interacciones de los usuarios, para identificar, reproducir y resolver errores y problemas de rendimiento más rápido (sin golpear tu cabeza contra el teclado).