Zum Hauptteil springen

S3 Bucket Migration

· Die Lesezeit beträgt 2 min

Electron is changing its primary S3 bucket, you may need to update your build scripts


What is happening?

A significant amount of Electron's build artifacts are uploaded to an S3 bucket called gh-contractor-zcbenz. As part of ongoing infrastructure/ownership migrations that started way back in 2020, we will be changing everything that used gh-contractor-zcbenz from its old home in S3 to a new storage system hosted at https://artifacts.electronjs.org. The path prefix that most of our assets use is changing slightly as well. Examples are included below:

Before: https://gh-contractor-zcbenz.s3.amazonaws.com/atom-shell/dist/v17.0.0/node.lib After: https://artifacts.electronjs.org/headers/dist/v17.0.0/node.lib

The important things here are the Hostname changed and the /atom-shell prefix changed. Another example, this time for debug symbols:

Before: https://gh-contractor-zcbenz.s3.amazonaws.com/atom-shell/symbols/path/to/symbol.pdb After: https://artifacts.electronjs.org/symbols/path/to/symbol.pdb

Again, the hostname changed and the /atom-shell prefix was changed.

How might this impact you?

Anyone using standard build tooling such as electron-rebuild, electron-packager or @electron/get won't have to do anything. This should be the majority of people.

For anyone directly referencing the S3 bucket, you must update your reference to point at the hostname and update the path as well.

What about existing data?

Most data that existed on the gh-contractor-zcbenz bucket has been cloned into the new storage system. This means all debug symbols and all headers have been copied. If you relied on some data in that bucket that hasn't been copied over please raise an issue in electron/electron and let us know.

The current gh-contractor-zcbenz S3 bucket will not be actively deleted. However, we can't guarantee how long that bucket will be left alive. We strongly recommend updating to target the new bucket as soon as possible.

Electron 18.0.0

· Die Lesezeit beträgt 3 min

Electron 18.0.0 wurde veröffentlicht! Es enthält Upgrades auf Chromium 100, V8 10.0und Node.js 16.13.2. Lesen Sie unten für weitere Details!


Das Electron Team freut sich über die Veröffentlichung von Electron 18.0.0! Sie können es mit npm über npm install electron@latest installieren oder von unserer Release-Website herunterladen. Lesen Sie weiter für Details zu dieser Veröffentlichung und teilen Sie bitte alle Rückmeldungen, die Sie haben!

Bemerkenswerte Änderungen

Electron Release Kadenz Änderung

Ab Electron 15 wird Electron alle 8 Wochen eine neue stabile Version veröffentlichen. Lesen Sie die Details hier.

Zusätzlich hat Electron die unterstützte Version von den letzten drei Versionen auf die letzten vier Versionen bis Mai 2022 geändert. Lesen Sie unser Versionierungsdokument für detailliertere Informationen über Versionierung in Electron. Nach Mai 2022 werden wir wieder zu den neuesten drei Versionen zurückkehren.

Stack-Änderungen

Hervorgehobene Funktionen

  • ses.setCodeCachePath() API zum Setzen des Code-Cache-Verzeichnisses hinzugefügt. #33286
  • Die alte BrowserWindowProxy basierte Implementierung von window.open entfernt. Dies entfernt auch die nativeWindowOpen Option von webPreferences. #29405
  • 'focus' und 'blur' Ereignisse zu WebContents hinzugefügt. #25873
  • Ersetzungsmenürollen auf macOS hinzugefügt: showSubstitutions, toggleSmartQuotes, toggleSmartDashes, toggleTextReplacement. #32024
  • Dem app.requestSingleInstanceLock()-Flow wurde ein first-instance-ack-Ereignis hinzugefügt, mit dem Benutzer nahtlos Daten von der ersten Instanz zur zweiten Instanz übertragen können. #31460
  • Unterstützung für weitere Farbformate in setBackgroundColor hinzugefügt. #33364

Eine vollständige Liste der neuen Funktionen und Änderungen finden Sie in den 18.0.0 Versionshinweise.

Breaking & API Veränderungen

Im Folgenden finden Sie die in Electron 18 eingeführten großen Änderungen. Weitere Informationen zu diesen und zukünftigen Änderungen finden Sie auf der geplante Änderungen Seite.

Entfernt: nativeWindowOpen

Prior to Electron 15, window.open was by default shimmed to use BrowserWindowProxy. Dies bedeutete, dass window.open('about:blank') nicht funktioniert hat, um synchron Skriptfenster, neben anderen Inkompatibilitäten, zu öffnen. Seit Electron 15 ist nativeWindowOpen standardmäßig aktiviert.

Lesen Sie die Dokumentation für window.open in Electron für weitere Details. Entfernt in #29405

Ende der Unterstützung für 14.x.y

Electron 14.x.y hat das Ende der Unterstützung gemäß der -Unterstützungsrichtlinien des Projekts erreicht. Developers and applications are encouraged to upgrade to a newer version of Electron.

Ab Electron 15 haben wir die unterstützte Version von den letzten drei Versionen auf die letzten vier Versionen bis Mai 2022 mit Electron 19 geändert. Nach Electron 19 werden wir wieder die letzten drei Versionen unterstützen. Diese Versions-Unterstützungs-Veränderung ist Teil unserer neuen Kadenz Änderung. Bitte sehen Sie in unseren Blog-Beitrag für alle Details hier.

E15 (Sep'21)E16 (Nov'21)E17 (Feb'22)E18 (Mär'22)E19 (Mai'22)
15.x.y16.x.y17.x.y18.x.y19.x.y
14.x.y15.x.y16.x.y17.x.y18.x.y
13.x.y14.x.y15.x.y16.x.y17.x.y
12.x.y13.x.y14.x.y15.x.y--

What's Next

In the short term, you can expect the team to continue to focus on keeping up with the development of the major components that make up Electron, including Chromium, Node, and V8. Obwohl wir darauf achten, keine Versprechungen über Veröffentlichungstermine zu machen, unser Plan ist es, neue Hauptversionen von Electron mit neuen Versionen dieser Komponenten ungefähr alle 2 Monate freizugeben.

Sie finden die öffentliche Timeline von Electron hier.

Weitere Informationen über zukünftige Änderungen finden Sie auf der geplante Änderungen Seite.

Google Summer of Code 2022

· Die Lesezeit beträgt 2 min

Das Elektron Team freut sich mitteilen zu können, dass wir dieses Jahr zum ersten Mal am Google Summer of Code teilnehmen werden!


Was ist Google Summer of Code?

Google Summer of Code (GSoC) ist ein jährliches Mentoring-Programm, das Open-Source-Software-Projekte mit potenziellen Mitwirkenden verbindet. Früher nur für Studierende geöffnet, können sich jetzt alle ab 18 Jahren bei GSoC registrieren.

Weitere Informationen finden Sie auf der Summer of Code Homepage.

How do I sign up?

Sind Sie an einer Zusammenarbeit mit Electronic interessiert? Wenn Sie ein neuer oder Anfänger von Open-Source-Mitwirkender sind, freuen wir uns über Ihre Bewerbung!

Um als Electron-Beitragender für Google Summer of Code ausgewählt zu werden, müssen Sie eine Bewerbung einreichen. Anwendungen werden am 4. April 2022 geöffnet und schließen am 19. April 2022. Du kannst den Updates für Google folgen: Summer of Code Anwendungsrichtlinien hier.

Möchtest du dich bewerben? Schauen Sie sich zuerst die fünf Projektideen an, die wir vorbereitet haben. Alle aufgeführten Ideen sind derzeit offen für Vorschläge. Wir sind auch bereit, neue Ideen zu akzeptieren, die nicht auf der vorgeschlagenen Projektliste stehen.

Ihre Bewerbung sollte beinhalten:

  • Ihr Vorschlag, das ist ein schriftliches Dokument, das genau beschreibt, was Sie im Laufe des Sommers zu erreichen gedenken.
  • Dein Hintergrund als Entwickler. Wenn Sie einen Lebenslauf haben, geben Sie bitte ein Exemplar an, sonst teilen Sie uns Ihre Erfahrungen mit einem Schwerpunkt auf relevante technische Erfahrung mit.

Hier finden Sie eine detaillierte Anleitung zum Einreichen im Rahmen Ihrer Electron-Anwendung.

Sie können auch den -offiziellen GSoC-Studenten/Mitwirkenden Leitfaden für wichtige Tipps zur Vorbereitung Ihres Vorschlags lesen.

Wenn du über Projektvorschläge diskutieren oder Fragen haben möchtest, schaue in unserem #gsoc-General Discord Channel aus!

References

Electron 17.0.0

· Die Lesezeit beträgt 3 min

Electron 17.0.0 wurde veröffentlicht! Es enthält Upgrades auf Chromium 98, V8 9.8 und Node.js 16.13.0. Lesen Sie unten für weitere Details!


Das Electron Team freut sich über die Veröffentlichung von Electron 17.0.0! Sie können es mit npm über npm install electron@latest installieren oder von unserer Release-Website herunterladen. Lesen Sie weiter für Details zu dieser Veröffentlichung und teilen Sie bitte alle Rückmeldungen, die Sie haben!

Bemerkenswerte Änderungen

Electron Release Kadenz Änderung

Ab Electron 15 wird Electron alle 8 Wochen eine neue stabile Version veröffentlichen. Lesen Sie die Details hier.

Zusätzlich hat Electron die unterstützte Version von den letzten drei Versionen auf die letzten vier Versionen bis Mai 2022 geändert. Lesen Sie unser Versionierungsdokument für detailliertere Informationen über Versionierung in Electron. Nach Mai 2022 werden wir wieder zu den neuesten drei Versionen zurückkehren.

Stack-Änderungen

Hervorgehobene Funktionen

  • webContents.getMediaSourceId()hinzugefügt, kann mit getUserMedia verwendet werden, um einen Stream für einen WebContents zu erhalten. #31204
  • Veraltet webContents.getPrinters() und führt webContents.getPrintersAsync() ein. #31023
  • desktopCapturer.getSources ist jetzt nur im Hauptprozess verfügbar. #30720

Eine vollständige Liste der neuen Funktionen und Änderungen finden Sie in den 17.0.0 Versionshinweisen.

Breaking Changes

Im Folgenden finden Sie die in Electron 17 eingeführten großen Änderungen. Weitere Informationen zu diesen und zukünftigen Änderungen finden Sie auf der geplante Änderungen Seite.

desktopCapturer.getSources im Renderer

Die desktopCapturer.getSources API ist jetzt nur im Hauptprozess verfügbar. Dies wurde geändert, um die Standardsicherheit von Electron-Apps zu verbessern.

API-Änderungen

Es gab keine API-Änderungen in Electron 17.

Entfernte/Veraltete Änderungen

  • Die Verwendung der desktopCapturer.getSources API im Renderer wurde entfernt. Siehe hier für Details, wie Sie diese API in Ihrer App ersetzen können.

Ende der Unterstützung für 13.x.y

Electron 13.x.y hat das Ende der Unterstützung gemäß der Unterstützungsrichtlinien des Projekts erreicht. Developers and applications are encouraged to upgrade to a newer version of Electron.

Ab Electron 15 haben wir die unterstützte Version von den letzten drei Versionen auf die letzten vier Versionen bis Mai 2022 mit Electron 19 geändert. Nach Electron 19 werden wir wieder die letzten drei Versionen unterstützen. Diese Versions-Unterstützungs-Veränderung ist Teil unserer neuen Kadenz Änderung. Bitte sehen Sie in unseren Blog-Beitrag für alle Details hier.

E15 (Sep'21)E16 (Nov'21)E17 (Feb'22)E18 (Mär'22)E19 (Mai'22)
15.x.y16.x.y17.x.y18.x.y19.x.y
14.x.y15.x.y16.x.y17.x.y18.x.y
13.x.y14.x.y15.x.y16.x.y17.x.y
12.x.y13.x.y14.x.y15.x.y--

What's Next

In the short term, you can expect the team to continue to focus on keeping up with the development of the major components that make up Electron, including Chromium, Node, and V8. Obwohl wir darauf achten, keine Versprechungen über Veröffentlichungstermine zu machen, unser Plan ist es, neue Hauptversionen von Electron mit neuen Versionen dieser Komponenten ungefähr alle 2 Monate freizugeben.

Sie finden die öffentliche Timeline von Electron hier.

Weitere Informationen über zukünftige Änderungen finden Sie auf der geplante Änderungen Seite.

Spectron Deprecation Notice

· Die Lesezeit beträgt 2 min

Spectron will be deprecated on February 1st, 2022.


Beginning in February 2022, Spectron will be officially deprecated by the Electron team.

Why Deprecate Spectron?

While Spectron has consistently put out new releases for each new version of Electron, the project has had very little maintenance and improvements for well over a year, and currently has no full-time maintainers. With the remote module moving outside of Electron core and into an external module in Electron 14, Spectron will require a major rewrite to continue working reliably.

After reviewing several available options for Spectron's continued maintenance, the Electron team has decided to deprecate Spectron in 2022.

Deprecation Timeline

The following is our planned deprecation timeline:

  • November 2021 - January 2022: The Electron team will continue to accept pull requests from the community.
  • January 2022: A final version of announcement warning about Spectron's deprecation will be released.
  • February 1, 2022: Spectron's repo will be marked as "archived". No more pull requests will be accepted.

Following February 1st, 2022, Electron will continue to leave the Spectron repo up indefinitely, so that others are welcome to fork or use the existing code for their projects. We hope this will help provide a longer transition to any projects that may still depend on Spectron.

Alternatives to Spectron

If you're currently using Spectron in your project and would like to migrate to an alternative testing solution, you can read our guide for automated testing here.

We currently have several other recommended alternatives to Spectron, including Playwright and WebDriverIO. Official tutorials for each option can be found in our Automated Testing documentation.

What's Next

We here on the Electron team appreciate you using Spectron and Electron. We understand that many of you depend on Spectron for testing your apps, and we want to make this transition as painless for you as possible. Thank you for choosing Electron!

Electron 16.0.0

· Die Lesezeit beträgt 4 min

Electron 16.0.0 wurde veröffentlicht! Es enthält Upgrades auf Chromium 96, V8 9.6und Node.js 16.9.1. Lesen Sie unten für weitere Details!


Das Electron Team freut sich über die Veröffentlichung von Electron 16.0.0! Sie können es mit npm über npm install electron@latest installieren oder von unserer Release-Website herunterladen. Lesen Sie weiter für Details zu dieser Veröffentlichung und teilen Sie bitte alle Rückmeldungen, die Sie haben!

Bemerkenswerte Änderungen

Electron Release Kadenz Änderung

Ab Electron 15 wird Electron alle 8 Wochen eine neue stabile Version veröffentlichen. Lesen Sie die Details hier.

Zusätzlich hat Electron die unterstützte Version von den letzten drei Versionen auf die letzten vier Versionen bis Mai 2022 geändert. Lesen Sie unser Versionierungsdokument für detailliertere Informationen über Versionierung in Electron. Nach Mai 2022 werden wir wieder zu den neuesten drei Versionen zurückkehren.

Stack-Änderungen

Hervorgehobene Funktionen

  • Unterstützt nun die WebHID API. #30213
  • Datenparameter zu app.requestSingleInstanceLock hinzufügen, um Daten zwischen Instanzen zu teilen. #30891
  • Übergeben Sie securityOrigin an Medienberechtigungen Request-Handler. #31357
  • commandLine.removeSwitch hinzugefügt. #30933

Eine vollständige Liste der neuen Funktionen und Änderungen finden Sie in den 16.0.0 Versionshinweisen.

Breaking Changes

Im Folgenden finden Sie die in Electron 16 eingeführten großen Änderungen. Weitere Informationen zu diesen und zukünftigen Änderungen finden Sie auf der geplante Änderungen Seite.

Erstelle Native Module

Wenn Ihr Projekt node-gyp verwendet, um native Module zu erstellen, müssen Sie es möglicherweise mit --force-process-config aufrufen, abhängig von der Konfiguration Ihres Projekts und Ihrer Electron-Version. Weitere Informationen zu dieser Änderung finden Sie unter #2497.

Behavior Changed: crashReporter implementation switched to Crashpad on Linux

The underlying implementation of the crashReporter API on Linux has changed from Breakpad to Crashpad, bringing it in line with Windows and Mac. As a result of this, child processes are now automatically monitored, and calling process.crashReporter.start in Node child processes is no longer needed (and is not advisable, as it will start a second instance of the Crashpad reporter).

There are also some subtle changes to how annotations will be reported on Linux, including that long values will no longer be split between annotations appended with __1, __2 and so on, and instead will be truncated at the (new, longer) annotation value limit.

API-Änderungen

Es gab keine API-Änderungen in Electron 16.

Entfernte/Veraltete Änderungen

  • Die Verwendung der desktopCapturer.getSources API im Renderer ist veraltet und wird entfernt. Diese Änderung verbessert die Standardsicherheit von Electron-Apps. Siehe hier für Details, wie Sie diese API in Ihrer App ersetzen können.

Ende der Unterstützung für 12.x.y

Electron 12.x.y hat das Ende der Unterstützung gemäß der -Unterstützungsrichtlinie des Projekts erreicht. Developers and applications are encouraged to upgrade to a newer version of Electron.

Ab Electron 15 haben wir die unterstützte Version von den letzten drei Versionen auf die letzten vier Versionen bis Mai 2022 mit Electron 19 geändert. Nach Electron 19 werden wir wieder die letzten drei Versionen unterstützen. Diese Versions-Unterstützungs-Veränderung ist Teil unserer neuen Kadenz Änderung. Bitte sehen Sie in unseren Blog-Beitrag für alle Details hier.

E15 (Sep'21)E16 (Nov'21)E17 (Feb'22)E18 (Mär'22)E19 (Mai'22)
15.x.y16.x.y17.x.y18.x.y19.x.y
14.x.y15.x.y16.x.y17.x.y18.x.y
13.x.y14.x.y15.x.y16.x.y17.x.y
12.x.y13.x.y14.x.y15.x.y--

What's Next

In the short term, you can expect the team to continue to focus on keeping up with the development of the major components that make up Electron, including Chromium, Node, and V8. Obwohl wir darauf achten, keine Versprechungen über Veröffentlichungstermine zu machen, unser Plan ist es, neue Hauptversionen von Electron mit neuen Versionen dieser Komponenten ungefähr alle 2 Monate freizugeben.

Sie finden die öffentliche Timeline von Electron hier.

Weitere Informationen über zukünftige Änderungen finden Sie auf der geplante Änderungen Seite.

Ein ruhiger Ort (Dez'21)

· Die Lesezeit beträgt 2 min

Das Electron-Projekt wird für den Monat Dezember 2021 pausieren und dann im Januar 2022 in voller Geschwindigkeit zurückkehren.

über GIPHY


Was im Dezember gleich sein wird

  1. Bei Bedarf werden Tages- und andere wichtige sicherheitsrelevante Veröffentlichungen veröffentlicht. Sicherheitsvorfälle sollten über SECURITY.md gemeldet werden.
  2. Code of Conduct Berichte und Moderation werden fortgesetzt.

Was wird im Dezember anders sein

  1. Keine neuen Beta oder Stable Releases im Dezember. Keine nächtlichen Veröffentlichungen für die letzten beiden Dezemberwochen.
  2. Mit wenigen Ausnahmen, keine Pull-Request Reviews oder Merges.
  3. Keine Updates für Issue-Tracker auf Repositories.
  4. Keine Discord Debugging-Hilfe von Betreuern.
  5. Keine Updates für Inhalte der sozialen Medien.

Warum passiert das?

Kurz gesagt, während die Betreuer zufrieden sind und sich mit dem Projekt beschäftigen, ist DIE WELT MÜDE. Der Dezember ist ein ruhiger Monat für die meisten Firmen, deshalb wollen wir unseren Betreuern die Möglichkeit geben, sich wieder aufzuladen. Wir ermutigen andere Projekte, ähnliche Maßnahmen in Erwägung zu ziehen.

Sollte ich über die Zukunft von Electron besorgt sein?

Nein. Wir sind in der Lage, diesen Schritt zu gehen, weil das Projekt in guter Form ist. Alle freuen sich auf 2022, und wir erwarten gute Dinge!

Electron 15.0.0

· Die Lesezeit beträgt 4 min

Electron 15.0.0 wurde veröffentlicht! Es enthält Upgrades auf Chromium 94, V8 9.4und Node.js 16.5.0. Wir haben API-Updates zu window.open, bug fixes und allgemeinen Verbesserungen hinzugefügt. Lesen Sie unten für weitere Details!


Das Electron Team freut sich über die Veröffentlichung von Electron 15.0.0! Sie können es mit npm über npm install electron@latest installieren oder von unserer Release-Website herunterladen. Lesen Sie weiter für Details zu dieser Veröffentlichung und teilen Sie bitte alle Rückmeldungen, die Sie haben!

Bemerkenswerte Änderungen

Electron Release Kadenz Änderung

Ab Electron 15 wird Electron alle 8 Wochen eine neue stabile Version veröffentlichen. Lesen Sie die Details hier.

Zusätzlich wird Electron unterstützte Versionen von den neuesten drei Versionen auf die neuesten vier Versionen bis Mai 2022 umstellen. Lesen Sie unser Versionierungsdokument für detailliertere Informationen über Versionierung in Electron.

Stack-Änderungen

Hervorgehobene Features

  • nativeWindowOpen: true ist nicht mehr experimentell und ist nun die Standardeinstellung.
  • safeStorage string-Verschlüsselungs-API hinzugefügt. #30430
  • 'frame-created' Ereignis zu WebContents hinzugefügt, welches abgibt, wenn ein Frame auf der Seite erstellt wird. #30801
  • edge Info zum BrowserWindow will-resize Event hinzugefügt. #29199

Eine vollständige Liste der neuen Funktionen und Änderungen finden Sie in den 15.0.0 Versionshinweisen.

Breaking Changes

Im Folgenden finden Sie die in Electron 15 eingeführten großen Änderungen. Weitere Informationen zu diesen und zukünftigen Änderungen finden Sie auf der geplante Änderungen Seite.

Standard geändert: nativeWindowOpen Standard auf true

Prior to Electron 15, window.open was by default shimmed to use BrowserWindowProxy. Dies bedeutete, dass window.open('about:blank') nicht funktioniert hat, um synchron Skriptfenster, neben anderen Inkompatibilitäten, zu öffnen. nativeWindowOpen: true ist nicht mehr experimentell und ist nun die Standardeinstellung.

Lesen Sie die Dokumentation für window.open in Electron für weitere Details.

API-Änderungen

  • 'frame-created' Ereignis zu WebContents hinzugefügt, welches abgibt, wenn ein Frame auf der Seite erstellt wird. #30801
  • safeStorage string-Verschlüsselungs-API hinzugefügt. #30430
  • signal Option zu dialog.showMessageBox hinzugefügt. #26102
  • Added an Electron Fuse for enforcing code signatures on the app.asar file your application loads. Requires the latest asar module (v3.1.0 or higher). #30900
  • Added fuses to disable NODE_OPTIONS and --inspect debug arguments in packaged apps. #30420
  • Added new MenuItem.userAccelerator property to read user-assigned macOS accelerator overrides. #26682
  • Added new app.runningUnderARM64Translation property to detect when running under Rosetta on Apple Silicon, or WOW on Windows for ARM. #29168
  • Added new imageAnimationPolicy web preference to control how images are animated. #29095
  • Added support for sending Blobs over the context bridge. #29247

Entfernte/Veraltete Änderungen

Keine APIs wurden entfernt oder veraltet.

Unterstützte Versionen

Ab Electron 15 werden wir die unterstützten Versionen von den letzten drei Versionen auf die neuesten vier Versionen bis Mai 2022 mit Electron 19 umstellen. Nach Electron 19 werden wir wieder die letzten drei Versionen unterstützen. Diese Versions-Unterstützungs-Veränderung ist Teil unserer neuen Kadenz Änderung. Bitte sehen Sie in unseren Blog-Beitrag für alle Details hier.

Developers and applications are encouraged to upgrade to a newer version of Electron.

E15 (Sep'21)E16 (Nov'21)E17 (Feb'22)E18 (Mär'22)E19 (Mai'22)
15.x.y16.x.y17.x.y18.x.y19.x.y
14.x.y15.x.y16.x.y17.x.y18.x.y
13.x.y14.x.y15.x.y16.x.y17.x.y
12.x.y13.x.y14.x.y15.x.y--

What's Next

In the short term, you can expect the team to continue to focus on keeping up with the development of the major components that make up Electron, including Chromium, Node, and V8. Although we are careful not to make promises about release dates, our plan is release new major versions of Electron with new versions of those components approximately quarterly.

Sie finden die öffentliche Timeline von Electron hier.

Weitere Informationen über zukünftige Änderungen finden Sie auf der geplante Änderungen Seite.

Electron 14.0.0

· Die Lesezeit beträgt 6 min

Electron 14.0.0 wurde veröffentlicht! Es enthält Upgrades auf Chromium 93 und V8 9.3. Wir haben mehrere API-Updates, Bugfixes und allgemeine Verbesserungen hinzugefügt. Lesen Sie unten für weitere Details!


Das Electron Team freut sich über die Veröffentlichung von Electron 14.0.0! Sie können es mit npm über npm install electron@latest installieren oder von unserer Release-Website herunterladen. Lesen Sie weiter für Details zu diesem Release und teilen Sie bitte Ihr Feedback!

Bemerkenswerte Änderungen

Electron Release Kadenz Änderung

Ab September 2021 mit Electron 15 wird Electron alle 8 Wochen eine neue große stabile Version veröffentlichen. Lesen Sie die Details hier. Electron 15 will begin beta on September 1, 2021 and stable release will be on September 21, 2021. Sie finden die öffentliche Timeline von Electron hier. 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.

Stack-Änderungen

Hervorgehobene Features

  • Standard geändert: nativeWindowOpen wird nun standardmäßig auf true gesetzt. (siehe docs)
  • Unterfenster erben nicht mehr die Optionen des BrowserWindow Konstruktors von ihren Eltern. #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
  • Unterstützung für experimentelle Cookie-Verschlüsselung hinter einer Electron Fuse hinzugefügt. #29492

Eine vollständige Liste der neuen Funktionen und Änderungen finden Sie in den 14.0.0 Versionshinweisen.

Breaking Changes

Below are breaking changes introduced in Electron 14. More information about these and future changes can be found on the Planned Breaking Changes page.

Entfernt: app.allowRendererProcessReuse

The app.allowRendererProcessReuse property has been removed as part of our plan to more closely align with Chromium's process model for security, performance and maintainability.

Weitere Informationen findest du unter #18397.

Entfernt: Browserfenster-Affinität

The affinity option when constructing a new BrowserWindow has been removed as part of our plan to more closely align with Chromium's process model for security, performance and maintainability.

Weitere Informationen findest du unter #18397.

API geändert: window.open()

The optional parameter frameName no longer sets the title of the window. This behavior now follows the specification described by the native documentation for the windowName parameter.

If you were using this parameter to set the title of a window, you can instead use the win.setTitle(title) method.

Entfernt: worldSafeExecuteJavaScript

worldSafeExecuteJavaScript has been removed with no alternative. Please ensure your code works with this property enabled. It has been enabled by default since Electron 12.

Sie werden von dieser Änderung betroffen sein, wenn Sie entweder webFrame.executeJavaScript oder webFrame.executeJavaScriptInIsolatedWorld verwenden. Sie müssen sicherstellen, dass die von einer dieser Methoden zurückgegebenen Werte von der Context Bridge API unterstützt werden, da diese Methoden denselben Wert verwenden, der die Semantik übergeht.

Standardwert geändert: nativeWindowOpen ist standardmäßig auf true eingestellt

Prior to Electron 14, window.open was by default shimmed to use BrowserWindowProxy. This meant that window.open('about:blank') did not work to open synchronously scriptable child windows, among other incompatibilities. nativeWindowOpen is no longer experimental, and is now the default.

Lesen Sie die Dokumentation für window.open in Electron für weitere Details.

Entfernt: BrowserWindowConstructorOptions, die von übergeordneten Fenstern geerbt werden

Vor Electron 14 würden Fenster, die mit window.open geöffnet wurden, BrowserWindow Konstruktor Optionen wie transparent und resizable von ihrem Elternfenster erben. Mit Electron 14 wurde dieses Verhalten entfernt und Fenster werden keine BrowserWindow Konstruktor Optionen von ihren Eltern erben.

Stattdessen explizit Optionen für das neue Fenster mit setWindowOpenHandler setzen:

webContents.setWindowOpenHandler((details) => {
return {
action: 'allow',
overrideBrowserWindowOptions: {
// ...
},
};
});

Entfernt: additionalFeatures

Die veraltete additionalFeatures Eigenschaft in den new-window und did-create-window Events von WebContent wurde entfernt. Da new-window Positionsargumente verwendet, ist das Argument immer noch vorhanden, wird aber immer das leere Array [] sein. (Hinweis: das new-window Ereignis selbst ist bereits veraltet und wurde durch setWindowOpenHandler ersetzt.) Bare keys in window features will now present as keys with the value true in the options object.

// Entfernt in Electron 14
// Ausgelöst von window.open('...', '', 'my-key')
webContents.on('did-create-window', (window, details) => {
if (details.additionalFeatures.includes('my-key')) {
// ...
}
});

// Ersetzt mit
webContents.on('did-create-window', (window, details) => {
if (details.options['my-key']) {
// ...
}
});

Entfernt: remote Modul

Veraltet in Electron 12, wurde das remote Modul nun von Electron selbst entfernt und zu einem separaten Paket extrahiert, @electron/remote. Das Modul @electron/remote überbrückt JavaScript-Objekte vom Hauptprozess zum Renderer-Prozess. Dies ermöglicht den Zugriff auf reine Hauptprozess-Objekte, als ob sie im Renderer-Prozess verfügbar wären. Dies ist ein direkter Ersatz für das remote Modul. Lesen Sie das Readme des -Moduls für Migrationsanweisungen und Referenzen.

API-Änderungen

  • Added BrowserWindow.isFocusable() method to determine whether a window is focusable. #28642
  • Added WebFrameMain.visibilityState instance property. #28706
  • Added disposition, referrer and postBody to the details object passed to the window open handler registered with setWindowOpenHandler. #28518
  • Added process.contextId used by @electron/remote. #28007
  • Unterstützung für experimentelle Cookie-Verschlüsselung hinter einer Electron Fuse hinzugefügt. #29492
  • Added missing resourceType conversions for webRequest listener details: font, ping, cspReport, media, webSocket. #30050
  • Added new session.storagePath API to get the path on disk for session-specific data. #28665
  • Unterstützung für Windows Control Overlay auf macOS hinzugefügt. #29986
  • Added support for directing Chromium logging to a file with --log-file=.../path/to/file.log. Also, it's now possible to enable logging from JavaScript by appending command-line switches during the first JS tick. #29963
  • Added support for the des-ede3 cipher in node crypto. #27897
  • Added a ContextBridgeMutability feature that allows context bridge objects to be mutated. #27348

Entfernte/Veraltete Änderungen

Die folgenden APIs wurden entfernt oder sind jetzt veraltet:

  • Das remote Modul wurde entfernt, nachdem es in Electron 12 veraltet wurde. #25734
  • Unterfenster erben nicht mehr die Optionen des BrowserWindow Konstruktors von ihren Eltern. #28550
  • Veraltete additionalFeatures Eigenschaft von new-window und did-create-window WebContents Events entfernt. #28548
  • Die veralteten app.allowRendererProcessReuse und BrowserWindow affinity Optionen wurden entfernt. #26874
  • Die submitURL Option für crashReporter.start ist kein notwendiges Argument mehr, wenn uploadToServer false ist. #28105

Ende der Unterstützung für 11.x.y

Electron 11.x.y hat das Ende der Unterstützung gemäß der -Unterstützungsrichtlinien des Projekts erreicht. Developers and applications are encouraged to upgrade to a newer version of Electron.

What's Next

In the short term, you can expect the team to continue to focus on keeping up with the development of the major components that make up Electron, including Chromium, Node, and V8. Although we are careful not to make promises about release dates, our plan is release new major versions of Electron with new versions of those components approximately quarterly.

Für Informationen zu geplanten Änderungen in zukünftigen Versionen von Electron, lesen Sie unsere Planned Breaking Changes.

WebView2 and Electron

· Die Lesezeit beträgt 6 min

Over the past weeks, we’ve received several questions about the differences between the new WebView2 and Electron.

Both teams have the expressed goal of making web-tech the best it can be on the Desktop, and a shared comprehensive comparison is being discussed.

Electron and WebView2 are fast-moving and constantly evolving projects. We have assembled a brief snapshot of similarities and differences between Electron and WebView2 as they exist today.


Architecture Overview

Electron and WebView2 both build from the Chromium source for rendering web content. Strictly speaking, WebView2 builds from the Edge source, but Edge is built using a fork of the Chromium source. Electron does not share any DLLs with Chrome. WebView2 binaries hard link against Edge (Stable channel as of Edge 90), so they share disk and some working set. See Evergreen distribution mode for more info.

Electron apps always bundle and distribute the exact version of Electron with which they were developed. WebView2 has two options in distribution. You can bundle the exact WebView2 library your application was developed with, or you can use a shared-runtime version that may already be present on the system. WebView2 provides tools for each approach, including a bootstrapping installer in case the shared runtime is missing. WebView2 is shipped inbox starting with Windows 11.

Applications that bundle their frameworks are responsible for updating those frameworks, including minor security releases. For apps using the shared WebView2 runtime, WebView2 has its own updater, similar to Chrome or Edge, that runs independent of your application. Updating the application's code or any of its other dependencies is still a responsibility for the developer, same as with Electron. Neither Electron nor WebView2 is managed by Windows Update.

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

  • WebView2 Based Application Process Model:

    WebView2 Process Model Diagram

Read more about WebView2’s process model and Electron’s process model here.

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
Build DependencyChromiumEdge
Source Available on GitHubJaNein
Shares Edge/Chrome DLLsNeinYes (as of Edge 90)
Shared Runtime Between ApplicationsNeinOptional
Application APIsJaNein
Node.jsJaNein
SandboxOptionalImmer
Requires an Application FrameworkNeinJa
Unterstützte PlattformenMac, Win, LinuxWin (Mac/Linux planned)
Process Sharing Between AppsNieOptional
Framework-Updates verwaltet vonAnwendungWebView2

Performance Discussion

When it comes to rendering your web content, we expect little performance difference between Electron, WebView2, and any other Chromium-based renderer. 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.

Zusammenfassung

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.

Special thanks to the WebView2 team for reviewing this post, and ensuring we have an up-to-date view of the WebView2 architecture. They welcome any feedback on the project.