¿Por qué creé SVGToSvelte? ¿Por qué creé SVGToSvelte?
Creé svgtosvelte para simplificar los flujos de trabajo SVG mediante la producción de componentes nativos de Svelte 5 sin dependencias en tiempo de ejecución, con resultados predecibles y automatización compatible con CI para una integración perfecta en proyectos de Vite.
Published: 7 de agosto de 2026 - Updated: 7 de agosto de 2026
Author: Jorge Acosta
Reading Time: 3mins

Cuando Svelte 5 finalmente alcanzó su versión estable, me encontré en una encrucijada que muchos desarrolladores compartían: quería migrar mis proyectos para aprovechar el potencial de Runes, pero no existía una solución nativa para gestionar iconos SVG en esta nueva era. Las herramientas que solía usar (como svelvg) estaban basadas en la sintaxis de Svelte 4, lo que me obligaba a elegir entre quedarme atrás o llenar mi nuevo código con patrones heredados como export let y $$restProps.
No quería parches; quería una herramienta que hablara el lenguaje de Svelte 5 desde el primer día, y al ver esa carencia, decidí crear svgtosvelte.
El fin del retraso en la compilación para desarrolladores
Una de las razones principales por las que decidí lanzar esta herramienta ahora es la evolución de Vite. Históricamente, usar grandes colecciones de iconos era una pesadilla para los desarrolladores. Si intentabas importar iconos desde un archivo central (una "exportación de barril"), Vite se ralentizaba después de importar más de 100 iconos en modo desarrollo, lo que provocaba retrasos extremos o incluso errores de memoria insuficiente.

Para evitar esto, muchos recurrimos a la importación directa, apuntando a la ruta exacta del archivo .svelte, lo que hacía que el código fuera frágil y difícil de mantener. Sin embargo, las optimizaciones recientes de Vite han cambiado las reglas del juego. Ahora Vite puede gestionar estas dependencias de forma mucho más inteligente durante los arranques en frío, eliminando las enormes cascadas de red. svgtosvelte llega precisamente a este hito tecnológico, permitiéndonos usar importaciones directas sin sacrificar la velocidad de desarrollo.
Evolución técnica: De AST (V1) a velocidad pura (V2)
En mi búsqueda de eficiencia, la arquitectura de la herramienta tuvo que evolucionar. Mi primera versión (V1) siguió el camino tradicional: procesaba el SVG generando un Árbol de Sintaxis Abstracta (AST) para transformarlo. Si bien era robusto, resultaba computacionalmente costoso.

Para la versión 2 (V2), decidí reescribir todo desde cero, eliminando todas las dependencias de compilación pesadas. En lugar de analizar un AST, svgtosvelte ahora trabaja directamente con la cadena SVG utilizando expresiones regulares y manipulación de cadenas altamente optimizadas. Los resultados validaron este enfoque:
- Velocidad: El proceso ahora es aproximadamente 6 veces más rápido.
- Eficiencia: Puede procesar 1024 iconos en solo 0,5 segundos, en comparación con los 3 segundos que requería la V1.
- Cero dependencias: La herramienta es un binario ultrarrápido sin dependencias de análisis en tiempo de ejecución.
| Métricas | V1 | V2 (Basado en String) |
|---|---|---|
| Tiempo por icono | ~2.9ms | ~0.49ms |
| Deps | +2 Pesadas | 0 (Cero-deps) |
| Enfoque | Parse → Walk → Build | Manipulacion con Regex/String |
Automatización a escala
Cuando se trabaja con sistemas que contienen miles de iconos, como el conjunto FluentUI, la conversión manual simplemente no es una opción. Necesitaba una CLI que pudiera inyectar masivamente atributos como fill="currentColor", generar definiciones de TypeScript automáticamente y garantizar que cada componente respondiera perfectamente. Cada segundo cuenta en una acción de GitHub.
En definitiva, este proyecto nació de la necesidad personal de consistencia y rendimiento. No se trata solo de convertir archivos; se trata de proporcionar la infraestructura para que cualquier desarrollador pueda centrarse en crear interfaces increíbles en Svelte 5, sabiendo que sus recursos gráficos son tan modernos y eficientes como el resto de su aplicación.
Conclusión
svgtosvelte se creó para resolver un problema práctico: convertir iconos SVG en componentes nativos de Svelte 5 con rapidez, sencillez y sin problemas de compatibilidad. Al pasar de un enfoque basado en AST a un flujo de trabajo optimizado con cadenas y expresiones regulares, ofrece mejoras sustanciales en el rendimiento durante la compilación, cero dependencias en tiempo de ejecución y automatización compatible con CI (CLI, definiciones de TypeScript y atributos automáticos). Para los equipos que modernizan proyectos Svelte, elimina las dificultades en el manejo de iconos y se adapta perfectamente a grandes conjuntos de iconos. Si buscas una conversión de SVG a componentes rápida y predecible que se integre en los flujos de trabajo modernos de Vite, vgtosvelte es una opción práctica que prioriza el rendimiento.
I build products for the web, experiment with ideas, and document what I learn along the way. This blog is my personal notebook of projects, tools, interfaces, and everything I discover while trying to create better experiences. Some posts come from real problems I’ve faced while building, others come from simple curiosity and the desire to understand how things work.
Have something you want to build? Tell me about your idea — maybe we can create something interesting together.