Comparación entre Tauri y Electron: rendimiento, tamaño del bundle y trade-offs reales
(gethopp.app)- Mientras desarrollaban una app de control remoto de latencia ultrabaja para programación en pareja remota, adoptaron Tauri como framework de la aplicación
- Las razones de la elección fueron rendimiento, eficiencia de memoria, soporte para sidecar y más
- Gracias a un backend basado en Rust + uso del WebView del sistema, el tamaño de la app y el uso de memoria son mucho menores que en Electron
- En Tauri v2 la brecha de funciones también se está cerrando rápidamente; funciones clave como actualizaciones automáticas y sidecar ya vienen integradas
- Electron sigue siendo potente, pero para los requisitos especiales de Hopp, Tauri resultó ser una mejor opción
Por qué Hopp eligió Tauri
Contexto: elegir un framework de apps multiplataforma
- Hopp necesitaba una app de escritorio de alto rendimiento que funcionara igual en Windows, macOS y Linux
- Electron y Tauri son opciones representativas, y cada una tiene ventajas y desventajas bien definidas
- El equipo de Hopp tomó la decisión priorizando el mantenimiento a largo plazo y el rendimiento
Tauri vs. Electron: diferencias estructurales
-
Estructura de Electron
- Requiere incluir el runtime de Node.js → aumenta el tamaño de la app
- Cada ventana usa un proceso de renderizado separado (motor Chromium) → alto consumo de memoria
- La integración profunda con el sistema requiere procesos adicionales
-
Resumen de la estructura de Tauri
- El backend es un binario nativo basado en Rust → no requiere un runtime aparte
- Usa el WebView del sistema (Windows: WebView2, macOS: WKWebView, Linux: WebKitGTK)
- Tiene buena eficiencia de memoria según la cantidad de ventanas, aunque hay que gestionar problemas por diferencias entre motores de navegador
Comparación de funciones clave
- El tiempo de arranque es rápido tanto en Tauri como en Electron, y en la práctica no hay una gran diferencia perceptible
- En uso de memoria, Tauri consume mucho menos
- Tauri usó alrededor de 172MB de memoria
- Electron llegó a unos 409MB, consumiendo más del doble de memoria
- En cuanto al motor de renderizado
- Tauri usa el WebView integrado en el sistema operativo, por lo que la app es más pequeña y ligera
- Electron incluye directamente el motor Chromium dentro de la app, por lo que usa más recursos
- En lenguaje de backend
- Tauri usa Rust, lo que permite escribir código nativo de alto rendimiento
- Electron se basa en JavaScript (Node.js), algo familiar para desarrolladores web, pero con menor rendimiento relativo
- En tiempo de build inicial
- Tauri incluye compilación de Rust, así que el build inicial es más lento
- Electron, al estar basado en JS, tiene un build inicial más rápido
- En la comparación de tamaño de la app
- Tauri pesa aproximadamente 8.6MiB, por lo que es muy ligero
- Electron pesa alrededor de 244MiB, es decir, unas 28 veces más
Razones decisivas por las que Hopp eligió Tauri
-
1. Backend en Rust de alto rendimiento
- Era necesario implementar streaming de video de latencia ultrabaja basado en WebRTC
- En Electron habría que levantar un proceso aparte, pero en Tauri se puede implementar directamente en el backend de Rust
-
2. Soporte para procesos sidecar
- El streaming y el procesamiento de entrada se separan y gestionan como binarios independientes
- Tauri da soporte oficial a sidecar → facilita la gestión del ciclo de vida y la comunicación
- A futuro también consideran extenderse a Tauri egui para el renderizado del cursor
-
3. Soporte de funciones que evoluciona rápidamente
- Tauri v2 ya integra funciones clave como actualizaciones automáticas
- Aunque es más joven que Electron, su visión centrada en seguridad y rendimiento encaja con Hopp
Conclusión: ¿qué framework es mejor?
- Tanto Electron como Tauri son excelentes frameworks para apps de escritorio
- La elección puede variar según la naturaleza del proyecto
- Electron: desarrollo rápido, afinidad con JS, ecosistema amplio
- Tauri: más pequeño, más ligero, más rápido y optimizado para el rendimiento basado en Rust
- Hopp adoptó Tauri porque necesitaba un stack tecnológico centrado en rendimiento y una arquitectura con procesos separados
6 comentarios
Yo uso webui. También ocupa menos espacio y tiene muchas menos dependencias de runtime.
Estaría bien que también compararan Wails.
Yo lo interpreto al revés: en la mayoría de los casos, con Electron es suficiente.
Quizá sea porque me quedó el recuerdo de que, en los primeros tiempos de Tauri, la experiencia de comunicación entre el back y el front no era muy buena...
Parece que la diferencia en el motor del navegador es un tema importante, pero si piensas en la compatibilidad, incluida la móvil, también se siente menor.
Si el problema del tamaño de la app es grande, entonces sí o sí conviene irse por Tauri.
Parece que tendré que probarlo para ver si realmente es una buena opción en cuanto a tamaño, memoria y sidecar. ¡Gracias por la introducción!