Saltar al contenido

Tecnología · Escritorio con tecnología web

Desarrollo de apps de escritorio con Electron

Electron empaqueta una aplicación web junto con su propio navegador y con Node.js, y la convierte en un programa de escritorio para Windows, macOS y Linux. Es la tecnología de muchas aplicaciones que ya están en uso. Mantenemos y ampliamos apps en Electron, revisamos su seguridad y su consumo, y las migramos a Tauri cuando el cambio compensa.

Se combina con

Fig. 01Caja con motor propioappGuardarañadidoSOLO PASANguardar · imprimirPRINCIPAL · NODEVENTANA · WEBAPP + MOTORAPPPRINCIPAL · PUENTE · VENTANAEn bucle
La aplicación viaja con su motor dentro: a un lado el proceso que toca el sistema, al otro la ventana. Entre los dos, un puente estrecho con barrera deja pasar solo lo que se ha declarado.

Situaciones

Qué puedes resolver en una app de Electron

Casi siempre se parte de una aplicación que ya existe y funciona. Lo que se encarga es que siga funcionando bien: más segura, más ligera o con lo que le falta.

  • Una app que nadie se atreve a actualizar

    Se quedó en una versión antigua de Electron y cada subida rompe algo. Se pone al día por etapas, con pruebas que avisan de lo que cambia.

  • Una app que pesa y tarda

    Arranque lento, mucha memoria y un instalador enorme. Se mide dónde se va el tiempo y se aligera lo que se puede antes de plantear nada más drástico.

  • Una interfaz con demasiado poder

    En apps antiguas la ventana puede leer archivos y ejecutar programas directamente. Si carga contenido de fuera, es un riesgo. Se separa lo que se ve de lo que toca el sistema.

  • Una función que necesita el equipo

    Imprimir, leer un aparato, integrarse con el sistema o trabajar sin conexión. Se añade como módulo nativo, en Rust cuando conviene, sin rehacer la aplicación.

La caja abierta: el motor a un lado, la ventana al otro

Qué conviene revisar al empezar

  • Qué versión de Electron usa y cuándo se actualizó por última vez
  • Qué módulos nativos y qué dependencias tiene
  • Si la ventana carga contenido remoto o solo el propio
  • Cómo se empaqueta, se firma y se actualiza hoy

Servicios

Qué desarrollamos en Electron

Cuatro tipos de encargo. Suelen llegar en este orden: primero poner la app al día, después decidir si se queda donde está.

  • Módulo 1 · Ventana

    Mantenimiento y funciones nuevas

    Subida de versión de Electron por etapas, corrección de fallos y pantallas o funciones nuevas sobre la aplicación que ya usan tus clientes.

    Ejemplos de entregables

    • Actualización de Electron por etapas
    • Pantalla o función nueva
    • Corrección de un fallo esquivo
  • Módulo 2 · Sala de máquinas

    Rendimiento y módulos nativos

    Medición del arranque y del consumo, trabajo pesado fuera de la ventana y módulos nativos, escritos en Rust cuando hace falta velocidad o hablar con un aparato.

    Ejemplos de entregables

    • Arranque más rápido
    • Módulo nativo en Rust
    • Trabajo pesado en segundo plano
  • Módulo 3 · Puente

    Revisión de seguridad

    Aislamiento de la ventana, un puente con las únicas funciones que necesita, política de contenidos y revisión de dependencias, con un informe de lo encontrado.

    Ejemplos de entregables

    • Aislamiento de la ventana
    • Puente con funciones acotadas
    • Informe de riesgos y arreglos
  • Módulo 4 · Caja de embalaje

    Migración a Tauri

    Paso de la aplicación a Tauri conservando la interfaz: la parte de Node.js se reescribe en Rust y el instalador adelgaza. Se hace por partes y con las dos versiones comparables.

    Ejemplos de entregables

    • Estudio de viabilidad
    • Migración por pantallas
    • Las dos versiones en paralelo

Un ejemplo en funcionamiento

Endurecer una app heredada

Demostración simulada. La ventana de una app antigua carga un complemento ajeno que intenta tres cosas. Activa las protecciones una a una y vuelve a lanzarlo para ver qué deja de poder hacer.

Demostración simulada · datos de muestra

Visor de pedidos · versión heredada
  • Pedido 0141 · preparado
  • Pedido 0142 · en reparto
  • Pedido 0143 · pendiente

Complemento de terceros

Código que no has escrito tú, cargado dentro de la ventana.

Ventana abierta

Protecciones de la ventana

Lo que intenta el complemento

  1. Leer un archivo del equipo
  2. Usar las funciones internas del puente
  3. Llevar la ventana a otra web

Sin ejecutar todavía.

Nada de esto se ejecuta en tu equipo: la ventana, el complemento y sus intentos están simulados en tu navegador. Las tres protecciones existen en Electron con esos efectos y son lo primero que revisamos en una app heredada.

Integración

Cómo encaja con tus sistemas

Una app de Electron tiene dos mitades que conviene no mezclar: la ventana, que es una página web, y el proceso principal, que es quien toca el sistema.

De dónde viene

ElectronApp de escritorio en Electronventana web y proceso principal

A dónde llega

Dependencias que conviene revisar

  • Qué dependencias no tienen mantenimiento o tienen avisos de seguridad
  • Qué módulos nativos hay que recompilar en cada subida de versión
  • Qué certificados y qué servicio de actualización se usan
  • Qué parte del código depende de funciones de Node dentro de la ventana

Cómo trabajamos y qué entregamos

Cómo trabajamos un encargo en Electron

  1. 01

    Revisión inicial

    Miramos la app: versión de Electron, dependencias, cómo se empaqueta y qué puede hacer la ventana.

  2. 02

    Alcance

    Escribimos qué se actualiza, qué se arregla y en qué orden, y qué se deja como está.

  3. 03

    Primera entrega

    Una versión instalable con el primer bloque de cambios y las pruebas que los cubren.

  4. 04

    Validación

    La pruebas en los equipos de tus usuarios, con sus datos y sus aparatos, antes de publicarla a todos.

  5. 05

    Documentación

    El estado en que queda la app, lo que conviene vigilar y cómo se sube de versión la próxima vez.

Qué recibes al cerrar el encargo

  • El código actualizado en tu repositorio
  • Instaladores firmados para cada sistema
  • El informe de seguridad y de rendimiento
  • La lista de lo que queda fuera y por qué

Preguntas

Preguntas sobre Electron

¿Falta la tuya? Escríbela a info@veodar.com y te respondemos con una pregunta concreta, no con un dossier.

¿Sigue teniendo sentido Electron?

Sí. Es maduro, tiene un ecosistema enorme y da el mismo resultado en los tres sistemas porque lleva su propio motor. Su precio es el peso y el consumo. Para una app que ya existe, mantenerla suele ser lo sensato; para una nueva, comparamos con Tauri antes de decidir.

¿Cuándo compensa migrar a Tauri?

Cuando el tamaño del instalador o la memoria son un problema real para tus usuarios, o cuando la app necesita un núcleo más rápido o más seguro. No compensa si depende mucho de módulos de Node sin equivalente o si lo que hay funciona y apenas cambia.

¿Es insegura una app de Electron?

No por serlo. El riesgo está en configuraciones antiguas que dan a la ventana acceso directo al sistema y en dependencias sin actualizar. Con la ventana aislada, un puente acotado y las dependencias al día, es tan segura como cualquier otra aplicación de escritorio.

¿Cada cuánto hay que actualizar Electron?

Electron saca versiones mayores varias veces al año y solo mantiene las últimas, porque sigue el calendario del navegador que lleva dentro. Una app que se queda atrás acumula fallos de seguridad sin parche, así que conviene tener un ritmo de actualización, aunque sea pausado.

¿Podéis añadir un módulo en Rust a una app de Electron?

Sí. Node.js admite módulos nativos y Rust es una buena forma de escribirlos: se compilan para cada sistema y la app los usa como cualquier otra biblioteca. Es un paso intermedio habitual antes de una migración, o en lugar de ella.

¿Se puede reducir el consumo sin cambiar de tecnología?

A menudo sí. Arranque diferido, menos ventanas abiertas, trabajo pesado fuera de la interfaz y dependencias más ligeras dan margen. Lo primero es medir; a veces con eso basta y la migración deja de hacer falta.

Actualizado:

Otras tecnologías

Con qué se combina

Todas las tecnologías
  • Apps de escritorio con TauriAplicaciones para Windows, macOS y Linux con interfaz web y núcleo en Rust: instaladores ligeros y permisos acotados. Nuevas o migradas desde Electron.
  • Desarrollo en RustAplicaciones, servicios y módulos que no pueden fallar ni ir lentos. Programamos en Rust el núcleo de tu producto o la pieza que hoy lo frena.
  • Backend con Node.jsAPIs, conexiones entre sistemas y procesos en segundo plano. Automatizamos el intercambio de información entre tu web y tus herramientas de gestión.

Empezar

Cuéntanos en qué estado está tu app de Electron.

Con la versión que usa y lo que más te preocupa de ella nos basta para una primera respuesta.

Qué ayuda a valorarlo

  • Qué versión de Electron usa
  • Qué te preocupa: seguridad, peso, fallos
  • Qué módulos nativos tiene
  • Cómo se distribuye y se actualiza

¿Antes de escribir? Mira cómo presupuestamos un proyecto o las soluciones por área de la empresa.

Fig. 07Manipulador MorseH · O · L · A