Electron 28 introduce el soporte para ESM, mejoras de soporte para Wayland y mas
La nueva versión de Electron 28 ya fue liberada y el cambio significativo en el número de versión se debe a una actualización del código base Chromium 120, Node.js 18.18.2 y el motor JavaScript V8 12.0, además de que se implementan algunos cambios importantes, asi como la adición de nuevas características, correcciones de errores y más.
Para quienes desconocen de Electron, deben saber que este permite crear cualquier aplicación gráfica utilizando tecnologías de navegador, cuya lógica se define en JavaScript, HTML y CSS, y la funcionalidad se puede ampliar a través de un sistema de complementos.
Los desarrolladores tienen acceso a los módulos de Node.js, así como a una API extendida para crear diálogos nativos, integrar aplicaciones, crear menús contextuales, integrarse con el sistema de visualización de notificaciones, manipular ventanas e interactuar con los subsistemas de Chromium.
Principales novedades de Electron 28
Sin duda, uno de los cambios más importantes que se destaca de este lanzamiento es la adición del soporte para módulos JavaScript ESM (módulos ECMAScript), creados de acuerdo con la especificación ECMAScript 6 y utilizados en aplicaciones web basadas en navegador (anteriormente, Electron solo admitía módulos CommonJS específicos de Node.js). Los módulos ESM se pueden utilizar tanto en el propio Electron como en controladores basados en la API UtilityProcess. Además de ello, también se ha agregado soporte para módulos EMS a Electron Forge, la herramienta todo en uno para empaquetar y distribuir aplicaciones de Electron.
Otro de los cambios que se destaca en este lanzamiento de Electron 28, es que en Linux, se implementó el procesamiento de la variable de entorno ELECTRON_OZONE_PLATFORM_HINT , lo que facilita la habilitación del soporte del protocolo Wayland en aplicaciones basadas en la plataforma Electron (puede hacerlo sin agregar el indicador «–ozone-platform-hint» al archivo) Se ha mejorado el rendimiento de fork()y execve() en la API child_process en Linux.
En MacOS, la nueva versión de Electron 28 introduce varias correcciones de las cuales se destaca la solución a un problema de rendimiento, se corrigió la aplicación que activaba incorrectamente las ventanas del panel en macOS Sonoma, se solucionó un problema por el cual BrowserWindows podía fallar en macOS con frame:false y roundedCorners:false al pasar a pantalla completa y ahora la asignación de partición fue reactivada en macOS.
Ademas de ello, la configuración predeterminada de WebContents.backgroundThrottling se cambió a «false«, lo que deshabilita la limitación de la velocidad de fotogramas al representar contenido utilizando el objeto BrowserWindow.
Hablando sobre BrowserWindow, ya han pasado a ser eliminados los métodos BrowserWindow.getTrafficLightPosition()y BrowserWindow.setTrafficLightPosition() los cuales primero fueron marcados como obsoletos en Electron 24 y fueron reemplazados por BrowserWindow.setWindowButtonPosition y BrowserWindow.getWindowButtonPosition().
De los demás cambios que se destacan:
- Se agregó API para ayudar a las aplicaciones a saber cuándo evitar fondos semitransparentes.
- Se agregaron varias propiedades al objeto «display», incluidas detected, maximumCursorSizey nativeOrigin
Se ha descontinuado ipcRenderer.sendTo y en su lugar se debe usar MessageChannel - Se ha descontinuado la compatibilidad con eventos de scroll-touch
- Eventos agregados mouse-entery mouse-leavede bandeja para Windows
- Se agregó la opción generateTaggedPDF para permitir a webContents.printToPDF() la generación de archivos PDF etiquetados
- Se agregó la propiedad tabbingIdentifier a BrowserWindow.
- Se agregó el evento de clic central del mouse al ícono de la bandeja.
- Se agregó soporte para varias claves de manifiesto de extensiones más, incluidas host_permissions, authory short_name.
- Se solucionó un problema por el cual chrome://gpu no se podía cargar.
- Se corrigió la regresión del rendimiento de la ventana opaca en DWM
- Se agregó la capacidad de enviar encabezados HTTP con webContents.downloadURL()
- Compatibilidad mejorada con módulos CommonJS en scripts de precarga en espacio aislado pasando dummy module.exports.
- Sesolucionó un problema por el cual los aceleradores que representaban claves DOM no se convertían correctamente a formato webContents.sendInputEvent().
Finalmente si estás interesado en conocer más al respecto de esta nueva versión, puedes consultar los detalles en el siguiente enlace.
¿Como obtener Electron en Linux?
Para poder ejecutar aplicaciones y/o poder trabajar con Electron dentro de Linux, solamente debemos de contar con Node.JS instalado en el sistema y su gestor de paquetes NPM.
Para la instalación de la última versión basta con teclear el siguiente comando:
npm install electron@latest