El Código Muerto No Debería Existir: Cómo Eliminamos 28k Líneas de Código, Un Knip a la Vez

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

¿Alguna vez te has preguntado cuánto de tu base de código está simplemente... ahí, sin hacer nada? En Sentry, nosotros también lo hicimos, y la respuesta fue más de lo que esperábamos. En esta charla, compartiré cómo utilizamos Knip, una herramienta poderosa para detectar archivos, exportaciones y dependencias no utilizadas, para despejar nuestra base de código frontend. Aprenderás sobre los pasos prácticos que tomamos para identificar y eliminar de manera segura el código muerto, cómo integramos Knip en nuestros flujos de trabajo, sobre casos límite inesperados y lo que aprendimos en el camino. Ya sea que estés manteniendo un monolito masivo o simplemente buscando ordenar, esta sesión te dará estrategias prácticas, y tal vez un poco de inspiración, para comenzar a despejar tu propia base de código, un Knip a la vez.

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

Dominik Dorfmeister
Dominik Dorfmeister
35 min
11 Jun, 2026

Comments

Sign in or register to post your comment.
Video Summary and Transcription
La charla se centra en cómo Sentry permite un envío eficiente al construir un sistema de diseño con componentes consistentes y establecer restricciones de codificación. TypeScript ayuda a comprender el impacto del código y mantener la higiene del código. La herramienta KNIP ayuda a detectar y eliminar código no utilizado de manera eficiente. La limpieza continua del código es facilitada por KNIP, mejorando el mantenimiento del código. KNIP ayuda a optimizar la utilización del código, manejar desafíos y automatizar la revisión del código. Se discuten la extensión del análisis de KNIP, el análisis entre archivos con TypeScript y ESLint, los falsos negativos en la configuración de KNIB y el impacto del tree shaking de los empaquetadores.

1. Introduction to React Summit and Chase Nation

Short description:

El orador se presenta como un ingeniero de software llamado Dominik. Mencionan su presencia en línea, blog y la biblioteca de código abierto que mantienen. El enfoque está en discutir KNIP y la eliminación de código muerto, destacando la importancia de habilitar un envío eficiente y consistente para los equipos de producto en Sentry a través de un enfoque de ingeniería de diseño.

He estado en esta conferencia durante los últimos cuatro años, así que esta es mi quinta vez en React Summit y Chase Nation. Pero en realidad es la primera vez que doy una charla en persona aquí. Así que estoy realmente feliz y emocionado de hablarles sobre KNIP y la eliminación de código muerto hoy. Mi nombre es Dominik. Soy un ingeniero de software de Viena. Y como acabas de decir, también puedes encontrarme como tk.dodo en línea casi en todas partes, principalmente en Blue Sky estos días. Y también escribo un blog en tk.dodo.eu, principalmente sobre TypeScript y React.

Y por supuesto también sobre React Query o 10-Stack Query, que es la biblioteca de código abierto que he estado manteniendo durante los últimos cinco años. Ahora, una pregunta rápida. Levanta la mano si has trabajado con 10-Stack Query o React Query antes. Oh, eso es un montón de manos. Eso es genial. Siempre me encanta ver eso. Sin embargo, no estoy aquí para hablar sobre 10-Stack o React Query hoy. Tengo algunas pegatinas de 10-Stack si quieres. Así que puedes venir a mí después y tomarlas.

Y también hay algunas charlas más mañana sobre 10-Stack. Pero hoy quiero hablarles sobre algo diferente porque a principios del año pasado, me uní al equipo de ingeniería de diseño en Sentry, donde no estamos trabajando directamente en una parte específica del producto, sino que nuestro objetivo es hacer que el envío suceda. Queremos permitir que otros equipos envíen de manera eficiente. Y en ese sentido, nuestro equipo realmente apunta a hacer posibles dos cosas. Queremos facilitar a los equipos de producto el envío de las cosas correctas de manera eficiente y consistente.

2. Efficient Shipping and Code Maintenance at Sentry

Short description:

El equipo de Sentry se enfoca en construir un sistema de diseño para permitir un envío eficiente asegurando una biblioteca de componentes consistentes con buenas APIs, documentación y accesibilidad. Trabajan en establecer restricciones como TypeScript, linting, estructura de proyectos y documentación para mejorar la base de código en general. Abordando el impacto del código no utilizado, enfatizan la importancia de mantener la higiene del código para prevenir la sobrecarga cognitiva y las ralentizaciones en el desarrollo.

Y al mismo tiempo, guiarlos para no enviar cosas incorrectas o inconsistentes y llevarlos a ese pozo de éxito por defecto. Y para llegar allí, una gran parte del trabajo de nuestro equipo es construir un sistema de diseño, que es una biblioteca de componentes consistentes con buenas APIs y documentación y seguridad de tipos y accesibilidad incorporada. Porque esos componentes necesitan ser fácilmente descubribles para que los desarrolladores de productos puedan componerlos y enviarlos rápidamente sin romper cosas.

Y para el segundo punto, estamos trabajando activamente en restricciones. Eso significa configurar TypeScript y linting, pero también la estructura del proyecto y la documentación y la enseñanza y también las habilidades de IA hoy en día juegan un gran papel en eso. Así que, en resumen, intentamos llevar la base de código general de Sentry que ha crecido orgánicamente durante los últimos 10 años a una buena forma para que tanto los humanos como sus agentes puedan enviar rápido. Y eso significa que tenemos que tocar muchas partes de la base de código regularmente.

Por ejemplo, mi primer PR en Sentry tocó más de 900 archivos porque habilité la configuración del compilador no implicit any, lo cual me sorprendió mucho que no estuviera activado, para ser honesto. Y mientras hacía esto y algunas otras mejoras, a veces me preguntaba si tal vez debería, ya sabes, verificar la cordura de las cosas que estaba tocando o al menos averiguar dónde se usan. Y a veces resulta que no se usaban en absoluto.

Así que cuando introduje el plugin ESLint query para verificar si los hooks de React query están funcionando eficientemente, obtuve un montón de violaciones, como en este hook, e intenté arreglarlas. Y después de luchar con esto por un tiempo, quise averiguar dónde se usaba. Y resulta que no se usaba en absoluto en la base de código. Así que pensé para mí mismo, OK, eso es todo. No más. Esto me está ralentizando. Estoy perdiendo mucho tiempo aquí. Tengo que limpiar la casa porque el código no utilizado tiene un costo real. Significa que los desarrolladores pasarán tiempo leyendo y tratando de entenderlo, tal vez incluso refactorizando código que no debería estar allí en primer lugar.

Y creo que esto se vuelve aún más importante en la era de la IA, donde generar código extra es fácil, pero mantenerlo a lo largo del tiempo es realmente difícil, y cada línea de código no utilizada podría aún consumir tokens o inflar la ventana de contexto de los agentes. Y las actualizaciones de bibliotecas o cambiar las reglas de lint se vuelven más dolorosas cuanto más usos tenemos, porque esas herramientas no se preocupan si el código se usa o no. Si existe, tiene que estar libre de errores. Y podría incluso aumentar nuestro tamaño de paquete si no se elimina correctamente con tree-shaking, por ejemplo, si tenemos módulos con efectos secundarios.

Así que, en general, creo que el código no utilizado es un dolor. Aumenta la carga cognitiva. Y por eso deberíamos preocuparnos por ello. Nos ralentizará. Entonces, ¿cómo terminamos aquí? Bueno, me gusta pensar que los ingenieros son generalmente seres responsables que les gusta limpiar después de sí mismos, pero en verdad, tenemos que ser constantemente recordados sobre las formas más básicas de limpieza. Y creo que con razón estamos impulsados por errores, porque TypeScript nos da mucha confianza. Toma todas esas dependencias que solían estar en nuestra cabeza, y las hace explícitas en el código.

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

Escalando Rápido – Lecciones de Ingeniería de ~15 Años de Startups Tecnológicas
React Advanced 2024React Advanced 2024
27 min
Escalando Rápido – Lecciones de Ingeniería de ~15 Años de Startups Tecnológicas
Hey, we'll discuss scaling fast and engineering lessons learned in the last 15 years of tech startups. Scaling involves three things: business, team, and tech. Business scalability relies on sales and customer acquisition costs. Engineering is a tool the business uses. Scaling the team is vital as tech problems are often people problems. Team structure affects architecture and product development process. Organize teams based on purpose, not technology. Spend less time being blocked by other teams. Ship features without getting blocked. Own your own mess. Focus on product engineering partnership. Build faster using feedback cycles. Build appropriate solutions for your use case. Let go of ego and experiment with different approaches. Engineers own their own mess. Avoid work in progress. Finish the work and focus on fixing it later. Have a conversation before writing code. Scaling the tech is easier than you think. Pick an off the shelf design. Save innovation for core parts. Pick existing solutions. Focus on solving the problem. Don't waste time trying to predict future scale. Scale will surprise you. Do what works for your business. Push back on unnecessary complexity. Understand the cost of ideas. Modify the situation to fit existing design. Architecture is like a dependency graph on your code. Reduce architectural complexity by organizing code based on what it does. Use vertical models and avoid creating excessive dependencies. On the client, use vertical modules. On the back end, consider a service-oriented architecture. Start with a monolith and transition to microservices if necessary. Use folders instead of microservices when you have a small team. Use vertical models and contract or type-driven development to define clear APIs and interfaces. Avoid highly interconnected code and duplication. Focus on data structures to avoid complexity and the need for translation layers. Building translation layers can lead to slow user experience. Vertical teams aligned with vertical code allow for fast problem-solving, full control of features, and efficient data handling. Understanding the entire domain enables faster development with fewer bugs.
Cómo automatizar cambios de código para 100 repositorios: Introducción a los Codemods
React Day Berlin 2022React Day Berlin 2022
28 min
Cómo automatizar cambios de código para 100 repositorios: Introducción a los Codemods
This Talk discusses automating code changes for Android repositories, utilizing tools like JSCodeShift and Abstract Syntax Tree. The speaker shares a real use case example of maintaining a design system library and making changes to a component. The talk emphasizes the importance of automating repetitive tasks and using the power of abstract syntax tree for code changes. The Q&A session covers topics like source code formatting, TypeScript support, and cultural embedding of code mods. The talk concludes with insights on when automation is worth it and the limitations of code mods for monorepo changes.
Arquitectura de código de próxima generación para construir aplicaciones de Node mantenibles
Node Congress 2023Node Congress 2023
30 min
Arquitectura de código de próxima generación para construir aplicaciones de Node mantenibles
Today's Talk focused on code architecture, modularization, and scaling in software development. The speaker discussed the benefits of separating code by domain and using tools like NX to improve productivity and enforce modular architecture. They also highlighted the importance of automating library creation and configuration. Additionally, the Talk covered code scaling and deployment strategies, including caching and automated code migrations. The speaker emphasized the flexibility and scalability of Fastify and the advantages of using a monorepo for front-end and back-end development.
Sub Agent Context Sharing: Cómo habilitar subagentes efectivos para codificación
AI Coding Summit 2025AI Coding Summit 2025
15 min
Sub Agent Context Sharing: Cómo habilitar subagentes efectivos para codificación
Cloud Code introduced sub-agent feature for better performance. Understanding the sub-agent concept and its role. Challenges of sub-agents in direct implementation. Parent agents' limited visibility. Efficient context management with MD files for sub-agents' tasks and reports boosting Cloud Code performance. Guidelines for creating useful sub-agents with specific MCP tools. Utilizing TweakScene MCP for scene design reference and defining rules for sub-agent tasks. Setting goals, output format, and rules for sub-agents. Building a chat GPT replica with chat.cn UI and Versatile AIS. Integration with VerCell AI SDK for seamless implementation.
El Futuro Stack de la Revisión de Código
JSNation 2023JSNation 2023
22 min
El Futuro Stack de la Revisión de Código
The Talk discusses the challenges of code reviews and the need to redefine the code review process in light of changes in software development. It emphasizes the importance of collaboration, security, performance, and clean code in the new stack of code review. The Talk also highlights the benefits of automating code review comments and optimizing the code review process. Overall, the Talk aims to build a better code review process that promotes collaboration and improves the quality of software development.
Camino a Cero Fallos de Lint: Abordando Desafíos de Calidad de Código a Gran Escala
React Summit US 2023React Summit US 2023
11 min
Camino a Cero Fallos de Lint: Abordando Desafíos de Calidad de Código a Gran Escala
This Talk discusses the journey from thousands of Lint failures to zero in a codebase at Linton that is over 80 years old. The approach involved implementing rules, incentives, and tooling to address the issue. The tool called Checkup was used to visualize ESLint failures by team and lint rule, providing accountability and responsibility. The efforts resulted in cleaning up over 6,000 lint failures, with 55 contributors, and a 30% increase in perceived code quality.

Workshops on related topic

Desarrollando Aplicaciones Listas para Producción en Colaboración con Agentes de AI
React Summit 2025React Summit 2025
102 min
Desarrollando Aplicaciones Listas para Producción en Colaboración con Agentes de AI
Featured Workshop
Alex Shershebnev
Alex Shershebnev
Los asistentes de codificación ya están cambiando la forma en que desarrollamos código, y en varios años se espera que cambien completamente cómo los desarrolladores interactúan con el código y lo escriben. En esta masterclass, compartiré consejos y mejores prácticas sobre el uso de tales herramientas mientras desarrollamos la aplicación lista para producción con Zencoder.
Aporta Calidad y Seguridad al pipeline de CI/CD
DevOps.js Conf 2022DevOps.js Conf 2022
76 min
Aporta Calidad y Seguridad al pipeline de CI/CD
Workshop
Elena Vilchik
Elena Vilchik
En esta masterclass repasaremos todos los aspectos y etapas al integrar tu proyecto en el ecosistema de Calidad y Seguridad del Código. Tomaremos una aplicación web simple como punto de partida y crearemos un pipeline de CI que active el monitoreo de calidad del código. Realizaremos un ciclo completo de desarrollo, comenzando desde la codificación en el IDE y abriendo una Pull Request, y te mostraré cómo puedes controlar la calidad en esas etapas. Al final de la masterclass, estarás listo para habilitar esta integración en tus propios proyectos.
Revisión de Código Potenciada por IA
TechLead Conf Amsterdam 2026: Adopting AI in Orgs EditionTechLead Conf Amsterdam 2026: Adopting AI in Orgs Edition
77 min
Revisión de Código Potenciada por IA
Workshop
Serhii Yakovenko
Serhii Yakovenko
Todas las organizaciones de ingeniería están experimentando con asistentes de codificación de IA, pero pocas han construido integraciones de LLM de grado de producción en su infraestructura principal de desarrollo. Tengo tal experiencia, y compartiré patrones reales de la implementación de un sistema de revisión de código potenciado por IA en una organización de ingeniería de más de 400 personas (~200 desarrolladores) — cubriendo una evaluación competitiva de 4 herramientas a través de 18 dimensiones, construyendo una arquitectura de revisión basada en webhook con comandos de barra y auto-revisión, evolucionando el enriquecimiento de contexto de reglas estáticas a selección de documentos potenciada por IA, gestionando una cadena de respaldo de 4 modelos en Vertex AI, y midiendo el impacto a través de un panel de retroalimentación. Los asistentes se irán con un manual probado en batalla para integrar LLMs en sus propios flujos de trabajo de ingeniería — no como juguetes sino como infraestructura de producción.

Estructura del Masterclass
1. El Cuello de Botella de la Revisión de Código a Escala
2. Evaluación de Herramientas — 4 Candidatos, 18 Dimensiones
3. Arquitectura — Servidor Webhook & Auto-Revisión
4. Enriquecimiento de Contexto — De Reglas de Ruta a Selección de Documentos por IA
5. Estrategia de Modelos — Migración & Cadena de Respaldo
6. Midiendo el Impacto — Panel de Retroalimentación