24 puntos por xguru 2025-02-03 | 15 comentarios | Compartir por WhatsApp
  • El autor, Felix Rieseberg, ha participado en el desarrollo de Electron durante más de 10 años como co-maintainer
  • Electron permite implementar la UI con tecnologías web y, si hace falta, mezclar libremente código nativo
  • Muchas apps (Visual Studio Code, Slack, Discord, Figma, ChatGPT, Claude, Notion, 1Password, Docker Desktop, etc.) adoptan Electron
  • Este documento repasa los principales malentendidos sobre Electron y explica por qué se tomaron estas decisiones

Electron enfrenta JavaScript y el código nativo

  • A menudo se dice que "Electron solo usa JavaScript, así que se queda atrás frente a lo nativo"
  • En realidad, Electron permite usar junto con JavaScript código nativo como C++, Objective-C y Rust
  • Por ejemplo, 1Password escribió la mayor parte de su código en Rust y usa Electron para la UI
  • La fortaleza de Electron es la flexibilidad para mezclar tanto código nativo como se necesite y aprovechar tecnologías web en la capa de UI
  • También existen demos que ofrecen UI nativa de forma parcial usando SwiftUI, GTK, Win32, etc.

Las apps web son malas

  • Existe la idea de que "todas las apps nativas siempre son mejores", pero la realidad del mercado no es tan simple
  • Mission Control de NASA, Bloomberg Terminal, los kioscos de McDonald’s y Dragon 2 de SpaceX también usan tecnologías web basadas en Chromium
  • Las tecnologías web son las más ampliamente utilizadas en todo el mundo, y una app web bien implementada puede ofrecer una gran experiencia de usuario
  • Decir que "las apps web las hace gente sin suficiente nivel" es una simplificación que no considera los requisitos del entorno de uso ni el contexto en el que eligen los desarrolladores

El WebView del sistema operativo tiene mejor rendimiento

  • Hay quienes sostienen que el WebView integrado en macOS, Windows o Linux suele ser mejor
  • En la práctica, Slack usó al principio MacGap (basado en WebView), pero terminó adoptando Electron (Chromium) por problemas de rendimiento
  • El motor Chromium moderno consume más recursos, pero también es una de las piezas que recibe la optimización más activa
  • El WebView integrado en el sistema operativo puede mostrar un menor uso de memoria gracias a recursos compartidos, pero en la práctica muchas veces está aislado por motivos de seguridad y estabilidad
  • Con Electron se puede gestionar directamente la versión más reciente del motor, lo que permite mantener estabilidad y seguridad de manera independiente

El tamaño del bundle importa

  • En general, las apps de Electron pesan entre 100 y 300 MB, y este punto suele recibir críticas
  • Sin embargo, los usuarios tienden a priorizar mucho más otros factores como funciones, comodidad y estabilidad que el tamaño de la app
  • Por ejemplo, ver Netflix en 4K puede consumir varios GB por hora, y una actualización de Call of Duty puede llegar a cientos de GB
  • Al final, comparado con la satisfacción real del usuario, el tamaño de la app suele ser un factor relativamente menos importante

Vencer a Electron

  • Electron comenzó como un esfuerzo open source de personas con la meta de "hacer una buena app de escritorio"
  • Electron nació en un contexto con pocos competidores y hasta hoy ha seguido ofreciendo suficientes funciones y estabilidad
  • Para "vencer" a Electron, hay que crear una plataforma que haga mejor lo que Electron ya hace
  • Los maintainers de Electron recibirán con gusto una alternativa mejor si llega a aparecer

15 comentarios

 
joone 2025-05-24

Compararlo con Call of Duty se siente un poco fuera de tema.
Vale la pena revisar Teams, que dejó Electron y se cambió a WebView,
https://techcommunity.microsoft.com/discussions/microsoftteams/…

 
pmc7777 2025-02-04

Ojalá Tauri madure pronto. Aunque yo ya lo uso muy bien.

 
coma333 2025-02-04

Parece que fue ayer cuando todavía era Atom Shell... ha evolucionado muchísimo.

 
tsboard 2025-02-04

Aunque hay varios puntos de crítica, al ver el nivel de acabado de la app de VS Code que usamos todos los días, queda bastante claro que el mérito de Electron no es menor.

 
akintos 2025-02-03

Tengo casi 10 apps de Electron instaladas en la PC; a este punto, parece que ya debería ser un framework que se instala por separado.

 
freedomzero 2025-02-03

Entre el tamaño del bundle y ver esos procesos ~~ Helper devorándose la memoria, no queda más que suspirar.

 
nullvana 2025-02-03

Estoy considerando tauri como alternativa, pero me preocupa que al momento de distribuirlo haya casos raros en los que no funcione correctamente. (Por el recuerdo de una vez que sufrí muchísimo al distribuir un programa en entorno win32 que hacía referencia a DLL registradas por defecto como msxml.dll; al final lo empaqueté de forma interna para distribuirlo... y me preocupa que pueda surgir un problema similar)

Como dicen del lado de Electron, probablemente lo correcto sea simplemente olvidarse del tamaño, pero el tamaño del bundle es demasiado grande.

 
aaaapple123 2025-02-05

Parece que ese es el problema con Tauri..

Como el WebView y los programas integrados son distintos según la plataforma, ese es el mayor problema. Uno no sabe qué puede pasar después de desplegarlo.

Pero si se intenta incluir el propio WebView dentro de Tauri, el tamaño del bundle termina siendo incluso mayor que el de Electron..

Por eso, en el desarrollo de apps cross-platform para producción, sigo pensando que Tauri todavía no está lo suficientemente maduro.

 
secret3056 2025-02-03

Los kioscos de McDonald’s son... mmm.... no sé si serán un buen ejemplo.

 
tsboard 2025-02-04

A mí también se me pasó esa misma idea por la cabeza. ¿Será que los kioscos de McDonald's en el extranjero son algo distintos? Me surgió esa duda por un momento jaja

 
dicebattle 2025-02-03

jajajaja, yo también pensé exactamente lo mismo

 
savvykang 2025-02-03

Parece que reducir el uso de memoria sería el mayor desafío, pero da pena que ninguno de los interesados parezca tener incentivos para llevarlo a cabo.

 
rtyu1120 2025-02-03

También existen ejemplos de demostración que ofrecen una UI nativa parcial utilizando SwiftUI, GTK, Win32, etc.

En el texto venía enlazado el código real de la demo, así que lo revisé, y no da la impresión de que sea algo tan sencillo como para decir que se puede usar junto de forma muy simple. Por ahora, parece que hay que darle valor más bien al hecho de que sea posible...

 
lamanus 2025-02-03

Parece que, en general, sí es cierto que las apps son grandes...

 
dohyun682 2025-02-03

Sí, supongo que ahí sí reconocen sin más el tamaño del bundle.