Ingeniero de Software: Reparé un Paquete NPM y Salvé el Día

Hace unos días nos topamos con un muro en uno de nuestros proyectos. Una actualización de Chrome introdujo cambios internos en el renderizado que afectaron nuestra generación de PDFs en el cliente. Lo que antes tardaba unos segundos pasó a tardar entre 10 y 15 minutos, la aplicación se congelaba y la funcionalidad de documentos quedó prácticamente inservible. El causante fue la librería html2pdf.js que depende de html2canvas para convertir HTML a canvas y luego a PDF.

Probamos una generación en servidor con Puppeteer y plantillas. Funcionó para documentos simples pero falló con los más complejos. Tras investigar issues en GitHub encontramos una alternativa llamada Snapdom que podía sustituir a html2canvas. Metí mano al código fuente de html2pdf.js, identifiqué la función que realizaba el trabajo pesado con html2canvas, la reemplacé por una llamada a Snapdom, ajusté algunos parámetros y empaqueté la solución en Angular. Con cambios mínimos en nuestro código los documentos volvieron a descargarse en segundos. El arreglo real llevó un día de trabajo focalizado, mucho más eficiente que perseguir soluciones con navegadores headless.

Resumen del cambio de código: sustituir la invocación principal de html2canvas por la alternativa Snapdom, adaptar parámetros de renderizado y mantener la compatibilidad con la lógica de generación de PDF. Fue un parche puntual que devolvió la operatividad sin reescribir toda la base.

Puntos clave aprendidos: prestar atención a las advertencias de NPM porque ignorarlas puede costar caro; investigar antes de codificar porque alguien puede haber resuelto ya el problema; y aceptar soluciones temporales cuando te dan tiempo para implementar una solución a largo plazo. A veces lo más rápido no es reescribir todo sino ajustar la pieza correcta del rompecabezas.

En Q2BSTUDIO somos una empresa de desarrollo de software especializada en aplicaciones a medida y software a medida, con experiencia en inteligencia artificial, ciberseguridad y servicios cloud aws y azure. Si buscas crear proyectos robustos y escalables podemos ayudarte con soluciones de desarrollo a medida y con integración de capacidades de IA. Descubre nuestras opciones para desarrollar aplicaciones a medida en Nuestro servicio de desarrollo de aplicaciones y conoce cómo aplicamos inteligencia artificial y agentes IA para empresas en Servicios de Inteligencia Artificial. También ofrecemos servicios de ciberseguridad y pentesting, servicios de inteligencia de negocio y power bi, y automatización de procesos para optimizar operaciones.

Palabras clave que aplicamos en nuestros proyectos: aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA y power bi.

¿Alguna vez has parcheado una dependencia para salvar un proyecto? Me encantaría leer tus batallas y soluciones.