Change8

v43.0.0

Breaking Changes
📦 electronView on GitHub →
4 breaking25 features🔧 16 symbols

Summary

Version v43.0.0 introduces major stack upgrades and numerous features, including improved app startup performance via Node.js startup snapshots and V8 bytecode caching. Breaking changes include default download folder behavior and rounded corners for Linux frameless windows.

⚠️ Breaking Changes

  • File downloads will now open by default in the user's Downloads folder (or Home directory if Downloads doesn't exist).
  • If a `nativeImage` was passed an image with a color profile, its pixel values will now be normalized to SRGB, ensuring visually identical images after color space application receive similar pixel values when converted to a `nativeImage`.
  • On Linux, frameless windows now have rounded corners by default. This can be disabled on all platforms by setting `roundedCorners: false` on the window.
  • Support for `showHiddenFiles` in the `dialog` API has been removed on Linux.

Migration Steps

  1. If you rely on file downloads opening in a specific location other than the user's Downloads folder, be aware that they now default there.
  2. If you were relying on specific pixel values after color profile application on `nativeImage` conversion, re-evaluate your comparison logic due to SRGB normalization.
  3. If you use frameless windows on Linux, they will now have rounded corners by default. If this is undesirable, set `roundedCorners: false` in the window configuration.
  4. If you were using `dialog.showOpenDialog({ properties: ['showHiddenFiles'] })` on Linux, this functionality has been removed and must be handled differently.

✨ New Features

  • Added Clone method to WebContents.
  • Added JS stack trace to crash reports on renderer OOM.
  • Added Linux support for `app.getApplicationInfoForProtocol()`.
  • Added Notification.remove(), removeAll(), and removeGroup() static methods for macOS.
  • Added `Notification.getHistory()` for macOS, allowing developers to restore all delivered notifications still present in Notification Center.
  • Added `accessibilityLabel` property to `MenuItem` constructor options and properties for defining screen-reader-friendly labels.
  • Added `allowExtensions` privilege to `protocol.registerSchemesAsPrivileged()` to enable Chrome extensions on custom protocols.
  • Added `app.configureWebAuthn()` to enable the Touch ID platform authenticator for WebAuthn on macOS, and a `select-webauthn-account` session event for choosing between multiple discoverable credentials.
  • Added `globalShortcut.setSuspended()` and `globalShortcut.isSuspended()` methods to temporarily suspend and resume global shortcut handling.
  • Added `id` and `groupId` options to the Notification constructor on macOS for custom identifiers and visual grouping.
  • Added `nv12` OSR pixel format support for professional use.
  • Added `view.setBackgroundBlur`.
  • Added `webContents.copyVideoFrameAt(x, y)` and `webContents.saveVideoFrameAs(x, y)` methods.
  • Added id, groupId, and groupTitle support for Windows notifications.
  • Added nativeTheme.shouldDifferentiateWithoutColor on macOS.
  • Added session support to net module requests from utility process.
  • Added support for heap profiling via `contentTracing.enableHeapProfiling()`.
  • Added support for importing shared textures using the nv16 pixel format.
  • Added support for the `urgency` option in Notifications on Windows.
  • Added support for using a proxy during yarn install.
  • Allowed the `--experimental-inspector-network-resource` Node.js flag to be passed through Electron.
  • Enabled ThinLTO on macOS builds.
  • Enabled profile-guided optimization for V8 builtins in release builds, improving JavaScript builtin performance (Array, String, RegExp, etc.).
  • SF Symbol customisation support added.
  • Fixed contentTracing module to capture Node.js trace categories.

Affected Symbols