Saltar al contenido principal

Electron 16.0.0

· 4 lectura mínima

¡Electron 16.0.0 ha sido liberado! Incluye actualizaciones a Chromium 96, V8 9.6y Node.js 16.9.1. ¡Lea a continuación para más detalles!


El equipo de Electron esta emocionado de anunciar el lanzamiento de Electron 16.0.0! You can install it with npm via npm install electron@latest or download it from our releases website. Continue reading for details about this release and please share any feedback you have!

Electron Release Cadence Change

A partir de Electron 15, Electrón lanzará una nueva versión, más estable y mejorada. You can read the full details here.

Additionally, Electron has changed supported versions from latest three versions to latest four versions until May 2022. See our versioning document for more detailed information about versioning in Electron. After May 2022, we will return to supporting latest three versions.

Notable Changes

  • Now supports the WebHID API. #30213
  • Add data parameter to app.requestSingleInstanceLock to share data between instances. #30891
  • Pass securityOrigin to media permissions request handler. #31357
  • Add commandLine.removeSwitch. #30933

Vea la notas de lanzamiento 16.0.0 para la lista completa de nuevas características y cambios.

Un lugar tranquilo (Dic'21)

· 2 lectura mínima

El proyecto de Electron realizará una pausa para el mes de diciembre de 2021, para después regresar a toda velocidad en enero de 2022.

vía GIPHY


Lo que será igual en diciembre

  1. Los lanzamientos de día cero y los lanzamientos principales relacionados con la seguridad se publicarán según sea necesario. Los incidentes de seguridad se deben reportar a través de SECURITY.md.
  2. Los reportes del Código de Conducta y moderación continuarán.

Lo que será diferente en diciembre

  1. No se publicarán versiones estables o de prueba en diciembre. No se publicarán las versiones anticipadas durante las últimas dos semanas de diciembre.
  2. Con algunas excepciones, no se realizará la revisión o fusión de pull requests.
  3. No se actualizará el rastreador de incidencias en ningún repositorio.
  4. No se ayudará con la depuración en Discord por parte de los encargados.
  5. No se publicarán actualizaciones de contenido en las redes sociales.

¿Por qué sucede esto?

En resumen, mientras los mantedores están felices y conectados con el proyecto, EL MUNDO ESTÁ CANSADO. Diciembre es un mes tranquilo para la mayoría de las compañías, por lo que queremos darle a los mantenedores una oportunidad de recargar. Animamos a otros proyectos a considerar medidas similares.

¿Debo preocuparme por el futuro de Electron?

No. Somos capaces de tomar este paso porque el proyecto se encuentra en buena forma. Todos esperan el 2022 y ¡esperamos que vengan buenas cosas!

Electron 15.0.0

· 5 lectura mínima

¡Electron 15.0.0 ha sido liberado! Incluye actualizaciones a Chromium 94, V8 9.4y Node.js 16.5.0. We've added API updates to window.open, bug fixes, and general improvements. ¡Lea a continuación para más detalles!


El equipo de Electron esta emocionado de anunciar el lanzamiento de Electron 15.0.0! You can install it with npm via npm install electron@latest or download it from our releases website. Continue reading for details about this release and please share any feedback you have!

Electron Release Cadence Change

Starting with Electron 15, Electron will release a new major stable version every 8 weeks. You can read the full details here.

Additionally, Electron will be changing supported versions from latest three versions to latest four versions until May 2022. See our versioning documentfor more detailed information about versioning in Electron.

Notable Changes

  • nativeWindowOpen: true is no longer experimental, and is now the default.
  • Added safeStorage string encryption API. #30430
  • Added 'frame-created' event to WebContents which emits when a frame is created in the page. #30801
  • Added resize edge info to BrowserWindow's will-resize event. #29199

Vea la notas de lanzamiento 15.0.0 para la lista completa de nuevas características y cambios.

Electron 14.0.0

· 8 lectura mínima

¡Electron 14.0.0 ha sido liberado! It includes upgrades to Chromium 93 and V8 9.3. We've added several API updates, bug fixes, and general improvements. ¡Lea a continuación para más detalles!


El equipo de Electron esta emocionado de anunciar el lanzamiento de Electron 14.0.0! You can install it with npm via npm install electron@latest or download it from our releases website. Continue reading for details about this release and please share any feedback you have!

Electron Release Cadence Change

Beginning in September 2021 with Electron 15, Electron will release a new major stable version every 8 weeks. You can read the full details here. Electron 15 comenzará la versión beta el 1 de septiembre de 2021 y la versión estable estará en 21 de septiembre de 2021. Puede encontrar Temporización lineal público de Electron aquí. Additionally, Electron will be changing supported versions from latest three versions to latest four versions until May 2022. See see our versioning document for more detailed information about versioning in Electron.

Notable Changes

  • Default Changed: nativeWindowOpen now defaults to true. (see docs)
  • Child windows no longer inherit BrowserWindow construction options from their parents. #28550
  • Added new session.storagePath API to get the path on disk for session-specific data. #28665
  • Added process.contextId used by @electron/remote. #28007
  • Added experimental cookie encryption support behind an Electron Fuse. #29492

Vea la notas de lanzamiento 14.0.0 para la lista completa de nuevas características y cambios.

WebView2 y Electron

· 6 lectura mínima

En las últimas semanas, hemos recibido varias preguntas sobre las diferencias entre el nuevo WebView2 y Electron.

Ambos equipos tienen el objetivo expreso de hacer que la tecnología web sea la mejor posible en el escritorio, y se está discutiendo una comparación exhaustiva compartida.

Electrón y WebView2 son proyectos en constante evolución. Hemos realizado un breve resumen de las similitudes y diferencias entre Electron y WebView2 tal y como existen en la actualidad.


Visión general de la Arquitectura

Electrón y WebView2 se desarrollan bajo la fuente de Chromium para renderizar contenido web. Estrictamente hablando, WebView2 se construye a partir de la fuente de Edge, pero Edge se construye utilizando una bifurcacion/fork de la fuente de Chromium. Electron no comparte ninguna DLL con Chrome. Los binarios de WebView2 se enlazan con Edge (canal estable a partir de Edge 90), por lo que comparten disco y algún conjunto de trabajo. Ver Modo de distribución Evergreen para más información.

Las aplicaciones de Electron siempre empaquetan y distribuyen la versión exacta con la cual fueron desarrolladas. WebView2 tiene dos opciones de distribución. Puedes empaquetar la versión exacta de la biblioteca de WebView2 con la que tu aplicación fue desarrollada, o puedes usar un entorno de ejecución que esté instalado en el sistema. WebView2 brinda herramientas para cada enfoque, incluyendo un instalador de arranque en el caso de que el entorno de ejecución compartido no esté disponible. WebView2 viene preinstalado de forma nativa a partir de Windows 11.

Las aplicaciones que empaquetan sus frameworks son responsables de la actualización de dichos frameworks, incluidas las versiones menores de seguridad. Para apps que utilicen el entorno de ejecución compartido de WebView2, WebView2 cuenta con su propio actualizador similar a Chrome o Edge que se ejecuta de forma independiente a tu aplicación. Actualizar el código de la aplicación o cualquiera de sus dependencias siguen siendo responsabilidad del desarrollador, al igual que con Electron. Windows Update no gestiona ni Electron ni WebView2.

Both Electron and WebView2 inherit Chromium’s multi-process architecture - namely, a single main process that communicates with one-or-more renderer processes. These processes are entirely separate from other applications running on the system. Every Electron application is a separate process tree, containing a root browser-process, some utility processes, and zero or more render processes. WebView2 apps that use the same user data folder (like a suite of apps would do), share non-renderer processes. WebView2 apps using different data folders do not share processes.

  • ElectronJS Process Model:

    ElectronJS Process Model Diagram

  • Modelo de procesos de aplicaciones basadas en WebView2:

    Diagrama del modelo de procesos de WebView2

Conoce más sobre el Modelo de procesos de WebView2 y del Modelo de procesos de Electron aquí.

Electron provides APIs for common desktop application needs such as menus, file system access, notifications, and more. WebView2 is a component meant to be integrated into an application framework such as WinForms, WPF, WinUI, or Win32. WebView2 does not provide operating system APIs outside the web standard via JavaScript.

Node.js is integrated into Electron. Electron applications may use any Node.js API, module, or node-native-addon from the renderer and main processes. A WebView2 application does not assume which language or framework the rest of your application is written in. Your JavaScript code must proxy any operating system access through the application-host process.

Electron strives to maintain compatibility with the web API, including APIs developed from the Fugu Project. We have a snapshot of Electron’s Fugu API compatibility. WebView2 maintains a similar list of API differences from Edge.

Electron has a configurable security model for web content, from full-access to full-sandbox. WebView2 content is always sandboxed. Electron has comprehensive security documentation on choosing your security model. WebView2 also has security best practices.

The Electron source is maintained and available on GitHub. Applications can modify can build their own brands of Electron. The WebView2 source is not available on GitHub.

Quick Summary:

ElectronWebView2
Dependencia de compilaciónChromiumBorde
Código fuente disponible en GitHubNo
Comparte DLLs de Edge/ChromeNoSí (a partir de Edge 90)
Runtime compartido entre aplicacionesNoOpcional
API de la aplicaciónNo
Node.jsNo
SandboxOpcionalSiempre
Requiere un framework de aplicaciónNo
Plataformas soportadasMac, Windows, LinuxWindows (Mac/Linux previstos)
Uso compartido de procesos entre aplicacionesNuncaOpcional
Actualizaciones del framework gestionadas porAplicaciónWebView2

Discusión sobre el rendimiento

Cuando de trata de renderizar tu contenido web, esperamos que exista poca diferencia de rendimiento entre Electron, WebView2 y cualquier otro motor de renderizado basado en Chromium. We created scaffolding for apps built using Electron, C++ + WebView2, and C# + WebView2 for those interested to investigate potential performance differences.

There are a few differences that come into play outside of rendering web content, and folks from Electron, WebView2, Edge, and others have expressed interest in working on a detailed comparison including PWAs.

Inter-Process Communication (IPC)

There is one difference we want to highlight immediately, as we believe it is often a performance consideration in Electron apps.

In Chromium, the browser process acts as an IPC broker between sandboxed renderers and the rest of the system. While Electron allows unsandboxed render processes, many apps choose to enable the sandbox for added security. WebView2 always has the sandbox enabled, so for most Electron and WebView2 apps IPC can impact overall performance.

Even though Electron and WebView2 have a similar process models, the underlying IPC differs. Communicating between JavaScript and C++ or C# requires marshalling, most commonly to a JSON string. JSON serialization/parsing is an expensive operation, and IPC-bottlenecks can negatively impact performance. Starting with Edge 93, WV2 will use CBOR for network events.

Electron supports direct IPC between any two processes via the MessagePorts API, which utilize the structured clone algorithm. Applications which leverage this can avoid paying the JSON-serialization tax when sending objects between processes.

Resumen

Electron and WebView2 have a number of differences, but don't expect much difference with respect to how they perform rendering web content. Ultimately, an app’s architecture and JavaScript libraries/frameworks have a larger impact on memory and performance than anything else because Chromium is Chromium regardless of where it is running.

Un agradecimiento especial al equipo de WebView2 por revisar este artículo, y asegurarse de que contamos con una visión actualizada de la arquitectura de WebView2. Agradecen además cualquier sugerencia sobre el proyecto.

Nueva cadencia de liberación de Electron

· 6 lectura mínima

A partir de septiembre de 2021, Electron lanzará una nueva versión principal estable cada 8 semanas.


En 2019, Electron comenzó un ciclo de 12 semanas para cada lanzamiento para coincidir con el ciclo de 6 semanas de Chromium. Recientemente, tanto Chrome como Microsoft anunciaron cambios que nos hicieron reconsiderar la cadencia de lanzamiento actual de Electron:

  1. Chromium planea lanzar un nuevo hito cada 4 semanas, comenzando con Chrome 94 el 21 de septiembre de 2021. Esta frecuencia también añade una nueva opción de Estabilidad Ampliada cada 8 semanas, que contendrá todas las correcciones de seguridad actualizadas.

  2. La tienda de Microsoft exigirá que las aplicaciones basadas en Chromium no tengan más de dos años de antigüedad. Por ejemplo, si la última versión principal publicada de Chromium es la 85, cualquier navegador basado en Chromium debe estar al menos en la versión 83 o superior. Esta norma incluye las aplicaciones Electron.

Empezando en septiembre de 2021, Electrón lanzará una nueva versión mayor estable cada 8 semanas, coincidiendo con las 8 semanas de Extensión de Lanzamientos Estables de Chromium.

Nuestro primer lanzamiento con la Extensión de Lanzamientos Estables de Chromium será Electrón 15 en el 21 de septiembre de 2021.

Sabiendo que un cambio en la frecuencia de lanzamiento afectará a otras aplicaciones posteriores, queríamos informar a nuestra comunidad de desarrolladores lo antes posible. Siga leyendo para conocer más detalles sobre nuestro calendario de lanzamientos para 2021.

Electron 15: Alpha temporal

Dado que nuestro lanzamiento original de Electron 15 apuntaba a una versión no estable extendida (las versiones estables extendidas de Chromium se basan en sus versiones pares), tuvimos que cambiar nuestra fecha original de lanzamiento. Sin embargo, una aplicación de Electron debe utilizar las dos versiones principales más recientes de Chromium para ser aceptada en la tienda de Microsoft, lo que hacía insostenible la espera de dos versiones de Chromium.

Con estos dos requisitos, nuestro equipo se enfrentó a un dilema de tiempos. Mover Electron 15 para incluir Chromium M94 permitiría a los desarrolladores de aplicaciones entrar en la primera versión estable extendida de Chromium; sin embargo, también acortaría el ciclo de beta estable a solo 3 semanas.

Para ayudar con este cambio, Electron ofrecerá una construcción alfa temporal, solo para la versión de Electron 15. Esta versión alfa permitirá a los desarrolladores disponer de más tiempo para probar y planificar el lanzamiento de Electron 15, con una versión más estable que las actuales versiones.

La compilación del canal alfa se lanzará para Electron 15 el 20 de julio de 2021. Pasará a una versión beta el 1 de septiembre de 2021 con un objetivo de lanzamiento estable el 21 de septiembre de 2021. Las siguientes versiones de Electron no tendrán versiones alfa.

Plan 2021 para lanzamientos

A continuación se muestra nuestro calendario de lanzamiento actual para 2021:

ElectronChromeLanzamiento alfaLanzamiento betaLanzamiento estableCiclo estable (semanas)
E13M91-2021-Mar-052021-May-2512
E14M93-2021-May-262021-Ago-3114
E15M942021-Jul-2001-Sept-202121-Sept-20219 (incluye alfa)
E16M96-2021-Sep-222021-nov-168
E17M98-2021-nov-172022-fe-0111

La incorporación del canal alfa amplía el tiempo de desarrollo antes del lanzamiento de Electron 15 de 3 a 9 semanas, más cerca de nuestro nuevo ciclo de 8 semanas, sin dejar de cumplir los requisitos para la presentación en la tienda de Windows.

Para ayudar aún más a los desarrolladores de aplicaciones, durante lo que queda de 2021 hasta mayo de 2022, también ampliaremos nuestra política de versiones soportadas de las últimas 3 versiones a las últimas 4 versiones de Electron. Eso significa que, aunque no puedas modificar inmediatamente tu calendario de actualizaciones, las versiones más antiguas de Electron seguirán recibiendo actualizaciones y correcciones de seguridad.

Responder a las inquietudes

Hay una razón por la que publicamos este post mucho antes de que esté previsto este cambio de ciclo de lanzamiento. Sabemos que un ciclo de lanzamiento más rápido tendrá un impacto real en las aplicaciones de Electron, algunas de las cuales ya pueden encontrar nuestra frecuencia de lanzamiento mayor agresiva.

A continuación hemos tratado de responder a las preocupaciones más comunes:

¿Por qué hacer este cambio? ¿Por qué no mantener la cadencia de publicación de 12 semanas?

Para entregar las versiones más actualizadas de Chromium en Electron, nuestro programa necesita seguir el suyo. Puede encontrar más información sobre el ciclo de lanzamiento de Chromium aquí.

Además, la cadencia actual de publicación de 12 semanas sería insostenible con los nuevos requisitos de presentación de Microsoft Store. Incluso las aplicaciones en la última versión estable de Electron experimentarían un período de aproximadamente dos semanas en el que su aplicación puede ser rechazada bajo los nuevos requisitos de seguridad.

Cada nueva versión de Chromium contiene nuevas características, correcciones de errores / correcciones de seguridad y mejoras de V8. Queremos que usted, como desarrolladores de aplicaciones, tenga estos cambios en el momento oportuno, para que nuestras fechas de lanzamiento estables sigan coincidiendo con todas las otras versiones estables de Chromium. Como desarrollador de aplicaciones, tendrás acceso a las nuevas características de Chromium y V8 y los arreglos mucho antes.

❓ El programa de liberación de 12 semanas existente ya se mueve rápidamente. ¿Qué pasos está dando el equipo para facilitar la actualización?

Una ventaja de lanzamientos más frecuentes es tener versiones más pequeñas. Entendemos que actualizar las versiones más importantes de Electron puede ser difícil. Esperamos que los lanzamientos más pequeños introduzcan menos cambios importantes en Chromium y Node, así como menos cambios de ruptura, por lanzamiento.

❓ ¿Habrá una versión alfa disponible para futuras versiones de Electron?

No hay planes de soportar una versión alfa permanente en este momento. Este alfa sólo está pensado para Electron 15, como una manera de ayudar a los desarrolladores a actualizarse más fácilmente en el período de lanzamiento acortado.

❓ ¿Electron extenderá el número de versiones soportadas?

Ampliaremos nuestra política de versiones soportadas desde las últimas tres versiones hasta las últimas cuatro versiones de Electron hasta mayo de 2022, con el lanzamiento de Electron 19. Después de que Electron 19 sea lanzado, volveremos a soportar las tres últimas versiones principales, así como los lanzamientos beta y nocturnos.

E13 (May'21)E14 (Ago'21)E15 (Sept'21)E16 (Nov'21)E17 (Feb'22)E18 (Mar'22)E19 (May'22)
13.x.y14.x.y15.x.y16.x.y17.x.y18.x.y19.x.y
12.x.y13.x.y14.x.y15.x.y16.x.y17.x.y18.x.y
11.x.y12.x.y13.x.y14.x.y15.x.y16.x.y17.x.y
----12.x.y13.x.y14.x.y15.x.y--

¿Preguntas?

📨 Si tienes preguntas o preocupaciones, por favor envíanos un correo electrónico a info@electronjs.org o únete a nuestro Discord. Sabemos que esto es un cambio que afectará a muchas aplicaciones y desarrolladores, y tus comentarios son muy importantes para nosotros. ¡Queremos saber tu opinión!

Electron 13.0.0

· 4 lectura mínima

¡Electron 13.0.0 ha sido liberado! It includes upgrades to Chromium 91 and V8 9.1. We've added several API updates, bug fixes, and general improvements. ¡Lea a continuación para más detalles!


El equipo de Electron esta emocionado de anunciar el lanzamiento de Electron 13.0.0! You can install it with npm via npm install electron@latest or download it from our releases website. ¡Sigue leyendo para obtener más detalles sobre esta versión, y por favor comparte tus comentarios!

Notable Changes

  • Added process.contextIsolated property that indicates whether the current renderer context has contextIsolation enabled. #28252
  • Added new session.storagePath API to get the path on disk for session-specific data. #28866
  • Deprecated the new-window event of WebContents. Es reemplazado por webContents.setWindowOpenHandler()
  • Added process.contextId used by @electron/remote. #28251

Vea la notas de lanzamiento 13.0.0 para la lista completa de nuevas características y cambios.

Electron 12.0.0

· 7 lectura mínima

¡Electron 12.0.0 ha sido liberado! Incluye actualizaciones para Chromium 89, V8 8.9 y Node.js 14.16. Hemos agregados cambios al módulo remoto, nuevos valores por defecto para contextIsolation, una nueva API webFrameMain y mejoras generales. ¡Lea a continuación para más detalles!


El equipo de Electron esta emocionado de anunciar el lanzamiento de Electron 12.0.0! You can install it with npm via npm install electron@latest or download it from our releases website. ¡Sigue leyendo para obtener más detalles sobre esta versión, y por favor comparte tus comentarios!

Electron 11.0.0

· 5 lectura mínima

¡Electron 11.0.0 ha sido liberado! Incluye actualizaciones a Chromium 87, V8 8.7, y Node.js 12.18.3. Añadimos soporte para Apple silicon, y mejoras generales. ¡Lea a continuación para más detalles!


El equipo de Electron esta emocionado de anunciar el lanzamiento de Electron 11.0.0! You can install it with npm via npm install electron@latest or download it from our releases website. La versión está llena de actualizaciones, correcciones y nuevo soporte para el hardware de Apple's M1.

¡No podemos esperar a ver lo que construyes con ellos! ¡Sigue leyendo para obtener más detalles sobre esta versión, y por favor comparte tus comentarios!

Notable Changes

Vea la notas de lanzamiento 11.0.0 para la lista completa de nuevas características y cambios.

Soporte de Apple Silicon

· 4 lectura mínima

Con el hardware de Apple Silicon que se publicará a finales de este año, ¿Cómo se ve la ruta para que tu aplicación Electron funcione en el nuevo hardware?


Con el lanzamiento de Electron 11.0.0-beta, el equipo Electron está enviando versiones de Electron que funcionan con el nuevo hardware de Apple Silicon que Apple planea enviar más adelante este año. Puedes obtener la última versión beta con npm install electron@beta o descargarla directamente desde nuestra página web de lanzamientos.

¿Cómo funciona?

A partir de Electron 11, enviaremos versiones separadas de Electron para Intel Macs y Apple Silicon Macs. Antes de este cambio, ya estábamos enviando dos artefactos, darwin-x64 y mas-x64, siendo este último para uso de compatibilidad de la App Store de Mac. Ahora estamos enviando otros dos artículos, darwin-arm64 y mas-arm64, que son los equivalentes de Apple Silicon de los principales artefactos.

¿Qué debo hacer?

Necesitarás enviar dos versiones de tu aplicación: una para x64 (Intel Mac) y otra para arm64 (Apple Silicon). La buena noticia es que electron-packager, electron-rebuild y electron-forge ya soportan la arquitectura arm64. Mientras estés ejecutando las últimas versiones de esos paquetes, tu aplicación debería funcionar sin problemas una vez que actualices la arquitectura de destino a arm64.

En el futuro, lanzaremos un paquete que te permite "combinar" tus arm64 y x64 aplicaciones en un solo binario universal, pero vale la pena señalar que este binario sería enorme y probablemente no sea ideal para enviar a los usuarios.

Actualización: Este paquete ya está disponible en @electron/universal. Puede usarlo para combinar dos aplicaciones x64 empaquetadas y arm64 en un solo binario.

Posibles problemas

Módulos nativos

Como está apuntando a una nueva arquitectura, necesitará actualizar varias dependencias que pueden causar problemas de compilación. La versión mínima de ciertas dependencias se incluye a continuación para su referencia.

DependenciaRequisitos de la versión
Xcode>=12.2.0
node-gyp>=7.1.0
electron-rebuild>=1.12.0
electron-packager>=15.1.0

Como resultado de estos requerimientos de la versión de dependencias, es posible que tengas que arreglar/actualizar ciertos módulos nativos. Una cosa importante es que la actualización de Xcode introducirá una nueva versión del SDK de macOS, que puede causar fallos en la compilación de sus módulos nativos.

¿Cómo lo compruebo?

Actualmente, las aplicaciones de Apple Silicon sólo funcionan con el hardware de Apple Silicon que no está disponible comercialmente en el momento de escribir este post en el blog. Si tienes un kit de transición de desarrollador, puedes probar tu aplicación con él. De lo contrario, tendrá que esperar a la liberación de la producción de hardware Apple Silicon para probar si su aplicación funciona.

¿Y qué ocurre con Rosetta 2?

Rosetta 2 es la última iteración de su tecnología de Rosetta que le permite ejecutar aplicaciones x64 Intel en su nuevo hardware de Apple Silicon arm64. Aunque creemos que las aplicaciones x64 Electron funcionarán en Rosetta 2, hay algunas cosas importantes a tener en cuenta (y razones por las que debería enviar un binario arm64 nativo).

  • El rendimiento de su aplicación se degradará significativamente. Electron / V8 usa la compilación JIT para JavaScript, y debido a cómo funciona Rosetta Usted ejecutará efectivamente JIT dos veces (una en V8 y otra en Rosetta).
  • Usted pierde el beneficio de la nueva tecnología en Apple Silicon, como el mayor tamaño de la página de memoria.
  • ¿Mencionamos que el rendimiento será significativamente degradado?