Skip to content

Instantly share code, notes, and snippets.

@BLamy
Created July 9, 2024 22:50
Show Gist options
  • Save BLamy/b5b0100cc29e3826718a9ca53d7a5fc3 to your computer and use it in GitHub Desktop.
Save BLamy/b5b0100cc29e3826718a9ca53d7a5fc3 to your computer and use it in GitHub Desktop.
Title: Electron 22.0.0
URL Source: https://www.electronjs.org/blog/electron-22-0
Published Time: 2022-11-29T00:00:00.000Z
Markdown Content:
Electron 22.0.0 has been released! It includes a new utility process API, updates for Windows 7/8/8.1 support, and upgrades to Chromium `108`, V8 `10.8`, and Node.js `16.17.1`. Read below for more details!
* * *
The Electron team is excited to announce the release of Electron 22.0.0! You can install it with npm via `npm install electron@latest` or download it from our [releases website](https://releases.electronjs.org/releases/stable). Continue reading for details about this release.
If you have any feedback, please share it with us on Twitter, or join our community [Discord](https://discord.com/invite/electronjs)! Bugs and feature requests can be reported in Electron's [issue tracker](https://github.com/electron/electron/issues).
Notable Changes[​](https://www.electronjs.org/blog/electron-22-0#notable-changes "Direct link to Notable Changes")
------------------------------------------------------------------------------------------------------------------
### Stack Changes[​](https://www.electronjs.org/blog/electron-22-0#stack-changes "Direct link to Stack Changes")
* Chromium `108`
* [New in Chrome 108](https://developer.chrome.com/blog/new-in-chrome-108/)
* [New in Chrome 107](https://developer.chrome.com/blog/new-in-chrome-107/)
* [New in DevTools 108](https://developer.chrome.com/blog/new-in-devtools-108/)
* [New in DevTools 107](https://developer.chrome.com/blog/new-in-devtools-107/)
* Node.js `16.17.1`
* [Node 16.17.1 blog post](https://nodejs.org/en/blog/release/v16.17.1/)
* V8 `10.8`
### Highlighted Features[​](https://www.electronjs.org/blog/electron-22-0#highlighted-features "Direct link to Highlighted Features")
### UtilityProcess API [#36089](https://github.com/electron/electron/pull/36089)[​](https://www.electronjs.org/blog/electron-22-0#utilityprocess-api-36089 "Direct link to utilityprocess-api-36089")
The new `UtilityProcess` main process module allows the creation of a lightweight Chromium child process with only Node.js integration while also allowing communication with a sandboxed renderer using `MessageChannel`. The API was designed based on Node.js `child_process.fork` to allow for easier transition, with one primary difference being that the entry point `modulePath` must be from within the packaged application to allow only for trusted scripts to be loaded. Additionally the module prevents establishing communication channels with renderers by default, upholding the contract in which the main process is the only trusted process in the application.
You can read more about the [new UtilityProcess API in our docs here](https://www.electronjs.org/docs/latest/api/utility-process).
Windows 7/8/8.1 Support Update[​](https://www.electronjs.org/blog/electron-22-0#windows-7881-support-update "Direct link to Windows 7/8/8.1 Support Update")
------------------------------------------------------------------------------------------------------------------------------------------------------------
info
**2023/02/16: An update on Windows Server 2012 support**
Last month, Google announced that [Chrome 109 would continue to receive critical security fixes](https://support.google.com/chrome/a/thread/185534987) for Windows Server 2012 and Windows Server 2012 R2 until October 10, 2023. In accordance, Electron 22's (Chromium 108) planned end of life date will be extended from May 30, 2023 to October 10, 2023. The Electron team will continue to backport any security fixes that are part of this program to Electron 22 until October 10, 2023.
Note that we will not make additional security fixes for Windows 7/8/8.1. Also, Electron 23 (Chromium 110) will only function on Windows 10 and above as previously announced.
Electron 22 will be the last Electron major version to support Windows 7/8/8.1. Electron follows the planned Chromium deprecation policy, which will [deprecate Windows 7/8/8.1 support in Chromium 109 (read more here)](https://support.google.com/chrome/thread/185534985/sunsetting-support-for-windows-7-8-8-1-in-early-2023?hl=en).
Windows 7/8/8.1 will not be supported in Electron 23 and later major releases.
#### Additional Highlighted Changes[​](https://www.electronjs.org/blog/electron-22-0#additional-highlighted-changes "Direct link to Additional Highlighted Changes")
* Added support for Web Bluetooth pin pairing on Linux and Windows. [#35416](https://github.com/electron/electron/pull/35416)
* Added `LoadBrowserProcessSpecificV8Snapshot` as a new fuse that will let the main/browser process load its v8 snapshot from a file at `browser_v8_context_snapshot.bin`. Any other process will use the same path as is used today. [#35266](https://github.com/electron/electron/pull/35266)
* Added `WebContents.opener` to access window opener and `webContents.fromFrame(frame)` to get the WebContents corresponding to a WebFrameMain instance. [#35140](https://github.com/electron/electron/pull/35140)
* Added support for `navigator.mediaDevices.getDisplayMedia` via a new session handler, `ses.setDisplayMediaRequestHandler`. [#30702](https://github.com/electron/electron/pull/30702)
Breaking API Changes[​](https://www.electronjs.org/blog/electron-22-0#breaking-api-changes "Direct link to Breaking API Changes")
---------------------------------------------------------------------------------------------------------------------------------
Below are breaking changes introduced in Electron 22. You can read more about these changes and future changes on the [Planned Breaking Changes](https://github.com/electron/electron/blob/main/docs/breaking-changes.md) page.
#### Deprecated: `webContents.incrementCapturerCount(stayHidden, stayAwake)`[​](https://www.electronjs.org/blog/electron-22-0#deprecated-webcontentsincrementcapturercountstayhidden-stayawake "Direct link to deprecated-webcontentsincrementcapturercountstayhidden-stayawake")
`webContents.incrementCapturerCount(stayHidden, stayAwake)` has been deprecated. It is now automatically handled by `webContents.capturePage` when a page capture completes.
```
const w = new BrowserWindow({ show: false })- w.webContents.incrementCapturerCount()- w.capturePage().then(image => {- console.log(image.toDataURL())- w.webContents.decrementCapturerCount()- })+ w.capturePage().then(image => {+ console.log(image.toDataURL())+ })
```
#### Deprecated: `webContents.decrementCapturerCount(stayHidden, stayAwake)`[​](https://www.electronjs.org/blog/electron-22-0#deprecated-webcontentsdecrementcapturercountstayhidden-stayawake "Direct link to deprecated-webcontentsdecrementcapturercountstayhidden-stayawake")
`webContents.decrementCapturerCount(stayHidden, stayAwake)` has been deprecated. It is now automatically handled by `webContents.capturePage` when a page capture completes.
```
const w = new BrowserWindow({ show: false })- w.webContents.incrementCapturerCount()- w.capturePage().then(image => {- console.log(image.toDataURL())- w.webContents.decrementCapturerCount()- })+ w.capturePage().then(image => {+ console.log(image.toDataURL())+ })
```
#### Removed: WebContents `new-window` event[​](https://www.electronjs.org/blog/electron-22-0#removed-webcontents-new-window-event "Direct link to removed-webcontents-new-window-event")
The `new-window` event of WebContents has been removed. It is replaced by [`webContents.setWindowOpenHandler()`](https://electronjs.org/docs/latest/api/web-contents#contentssetwindowopenhandlerhandler).
```
- webContents.on('new-window', (event) => {- event.preventDefault()- })+ webContents.setWindowOpenHandler((details) => {+ return { action: 'deny' }+ })
```
#### Deprecated: BrowserWindow `scroll-touch-*` events[​](https://www.electronjs.org/blog/electron-22-0#deprecated-browserwindow-scroll-touch--events "Direct link to deprecated-browserwindow-scroll-touch--events")
The `scroll-touch-begin`, `scroll-touch-end` and `scroll-touch-edge` events on BrowserWindow are deprecated. Instead, use the newly available [`input-event` event](https://electronjs.org/docs/latest/api/web-contents#event-input-event) on WebContents.
```
// Deprecated- win.on('scroll-touch-begin', scrollTouchBegin)- win.on('scroll-touch-edge', scrollTouchEdge)- win.on('scroll-touch-end', scrollTouchEnd)// Replace with+ win.webContents.on('input-event', (_, event) => {+ if (event.type === 'gestureScrollBegin') {+ scrollTouchBegin()+ } else if (event.type === 'gestureScrollUpdate') {+ scrollTouchEdge()+ } else if (event.type === 'gestureScrollEnd') {+ scrollTouchEnd()+ }+ })
```
End of Support for 19.x.y[​](https://www.electronjs.org/blog/electron-22-0#end-of-support-for-19xy "Direct link to End of Support for 19.x.y")
----------------------------------------------------------------------------------------------------------------------------------------------
Electron 19.x.y has reached end-of-support as per the project's [support policy](https://www.electronjs.org/docs/latest/tutorial/electron-timelines#version-support-policy). Developers and applications are encouraged to upgrade to a newer version of Electron.
| E19 (May'22) | E20 (Aug'22) | E21 (Sep'22) | E22 (Nov'22) | E23 (Jan'23) |
| --- | --- | --- | --- | --- |
| 19.x.y | 20.x.y | 21.x.y | 22.x.y | 23.x.y |
| 18.x.y | 19.x.y | 20.x.y | 21.x.y | 22.x.y |
| 17.x.y | 18.x.y | 19.x.y | 20.x.y | 21.x.y |
What's Next[​](https://www.electronjs.org/blog/electron-22-0#whats-next "Direct link to What's Next")
-----------------------------------------------------------------------------------------------------
The Electron project will pause for the the month of December 2022, and return in January 2023. More information can be found in the [December shutdown blog post](https://www.electronjs.org/blog/a-quiet-place-22).
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.
You can find [Electron's public timeline here](https://www.electronjs.org/docs/latest/tutorial/electron-timelines).
More information about future changes can be found on the [Planned Breaking Changes](https://github.com/electron/electron/blob/main/docs/breaking-changes.md) page.
--- Next Release ---
Title: Electron 23.0.0
URL Source: https://www.electronjs.org/blog/electron-23-0
Published Time: 2023-02-07T00:00:00.000Z
Markdown Content:
Electron 23.0.0 has been released! It includes upgrades to Chromium `110`, V8 `11.0`, and Node.js `18.12.1`. Additionally, support for Windows 7/8/8.1 has been dropped. Read below for more details!
* * *
The Electron team is excited to announce the release of Electron 23.0.0! You can install it with npm via `npm install electron@latest` or download it from our [releases website](https://releases.electronjs.org/releases/stable). Continue reading for details about this release.
If you have any feedback, please share it with us on Twitter, or join our community [Discord](https://discord.com/invite/electronjs)! Bugs and feature requests can be reported in Electron's [issue tracker](https://github.com/electron/electron/issues).
Notable Changes[​](https://www.electronjs.org/blog/electron-23-0#notable-changes "Direct link to Notable Changes")
------------------------------------------------------------------------------------------------------------------
### Stack Changes[​](https://www.electronjs.org/blog/electron-23-0#stack-changes "Direct link to Stack Changes")
* Chromium `110`
* [New in Chrome 110](https://developer.chrome.com/blog/new-in-chrome-110/)
* [New in Chrome 109](https://developer.chrome.com/blog/new-in-chrome-109/)
* [New in DevTools 110](https://developer.chrome.com/blog/new-in-devtools-110/)
* [New in DevTools 109](https://developer.chrome.com/blog/new-in-devtools-109/)
* Node.js `18.12.1`
* [Node 18.12.1 blog post](https://nodejs.org/en/blog/release/v18.12.1/)
* V8 `11.0`
### New Features[​](https://www.electronjs.org/blog/electron-23-0#new-features "Direct link to New Features")
* Added `label` property to [`Display`](https://www.electronjs.org/docs/latest/api/structures/display) objects. [#36933](https://github.com/electron/electron/pull/36933)
* Added an `app.getPreferredSystemLanguages()` API to return the user's system languages. [#36035](https://github.com/electron/electron/pull/36035)
* Added support for the [WebUSB](https://developer.mozilla.org/en-US/docs/Web/API/WebUSB_API) API. [#36289](https://github.com/electron/electron/pull/36289)
* Added support for [`SerialPort.forget()`](https://developer.mozilla.org/en-US/docs/Web/API/SerialPort/forget) as well as a new event `serial-port-revoked` emitted on [Session](https://www.electronjs.org/docs/latest/api/session) objects when a given origin is revoked. [#35310](https://github.com/electron/electron/pull/35310)
* Added new `win.setHiddenInMissionControl` API to allow developers to opt out of Mission Control on macOS. [#36092](https://github.com/electron/electron/pull/36092)
Dropping Windows 7/8/8.1 Support[​](https://www.electronjs.org/blog/electron-23-0#dropping-windows-7881-support "Direct link to Dropping Windows 7/8/8.1 Support")
------------------------------------------------------------------------------------------------------------------------------------------------------------------
Electron 23 no longer supports Windows 7/8/8.1. Electron follows the planned Chromium deprecation policy, which will [deprecate Windows 7/8/8.1 , as well as Windows Server 2012 and 2012 R2 support in Chromium 109 (read more here)](https://support.google.com/chrome/thread/185534985/sunsetting-support-for-windows-7-8-8-1-in-early-2023?hl=en).
Breaking API Changes[​](https://www.electronjs.org/blog/electron-23-0#breaking-api-changes "Direct link to Breaking API Changes")
---------------------------------------------------------------------------------------------------------------------------------
Below are breaking changes introduced in Electron 23. You can read more about these changes and future changes on the [Planned Breaking Changes](https://github.com/electron/electron/blob/main/docs/breaking-changes.md) page.
### Removed: BrowserWindow `scroll-touch-*` events[​](https://www.electronjs.org/blog/electron-23-0#removed-browserwindow-scroll-touch--events "Direct link to removed-browserwindow-scroll-touch--events")
The deprecated `scroll-touch-begin`, `scroll-touch-end` and `scroll-touch-edge` events on BrowserWindow have been removed. Instead, use the newly available `input-event` event on WebContents.
```
// Removed in Electron 23.0-win.on('scroll-touch-begin', scrollTouchBegin)-win.on('scroll-touch-edge', scrollTouchEdge)-win.on('scroll-touch-end', scrollTouchEnd)// Replace with+win.webContents.on('input-event', (_, event) => {+ if (event.type === 'gestureScrollBegin') {+ scrollTouchBegin()+ } else if (event.type === 'gestureScrollUpdate') +{+ scrollTouchEdge()+ } else if (event.type === 'gestureScrollEnd') {+ scrollTouchEnd()+ }+})
```
End of Support for 20.x.y[​](https://www.electronjs.org/blog/electron-23-0#end-of-support-for-20xy "Direct link to End of Support for 20.x.y")
----------------------------------------------------------------------------------------------------------------------------------------------
Electron 20.x.y has reached end-of-support as per the project's [support policy](https://www.electronjs.org/docs/latest/tutorial/electron-timelines#version-support-policy). Developers and applications are encouraged to upgrade to a newer version of Electron.
| E22 (Nov'22) | E23 (Feb'23) | E24 (Apr'23) | E25 (May'23) | E26 (Aug'23) |
| --- | --- | --- | --- | --- |
| 22.x.y | 23.x.y | 24.x.y | 25.x.y | 26.x.y |
| 21.x.y | 22.x.y | 23.x.y | 24.x.y | 25.x.y |
| 20.x.y | 21.x.y | 22.x.y | 23.x.y | 24.x.y |
What's Next[​](https://www.electronjs.org/blog/electron-23-0#whats-next "Direct link to 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.
You can find [Electron's public timeline here](https://www.electronjs.org/docs/latest/tutorial/electron-timelines).
More information about future changes can be found on the [Planned Breaking Changes](https://github.com/electron/electron/blob/main/docs/breaking-changes.md) page.
--- Next Release ---
Title: Electron 24.0.0
URL Source: https://www.electronjs.org/blog/electron-24-0
Published Time: 2023-04-04T00:00:00.000Z
Markdown Content:
Electron 24.0.0 has been released! It includes upgrades to Chromium `112.0.5615.49`, V8 `11.2`, and Node.js `18.14.0`. Read below for more details!
* * *
The Electron team is excited to announce the release of Electron 24.0.0! You can install it with npm via `npm install electron@latest` or download it from our [releases website](https://releases.electronjs.org/releases/stable). Continue reading for details about this release.
If you have any feedback, please share it with us on Twitter, or join our community [Discord](https://discord.com/invite/electronjs)! Bugs and feature requests can be reported in Electron's [issue tracker](https://github.com/electron/electron/issues).
Notable Changes[​](https://www.electronjs.org/blog/electron-24-0#notable-changes "Direct link to Notable Changes")
------------------------------------------------------------------------------------------------------------------
### Stack Changes[​](https://www.electronjs.org/blog/electron-24-0#stack-changes "Direct link to Stack Changes")
* Chromium `112.0.5615.49`
* [New in Chrome 112](https://developer.chrome.com/blog/new-in-chrome-112/)
* [New in Chrome 111](https://developer.chrome.com/blog/new-in-chrome-111/)
* [New in DevTools 112](https://developer.chrome.com/blog/new-in-devtools-112/)
* [New in DevTools 111](https://developer.chrome.com/blog/new-in-devtools-111/)
* Node.js `18.14.0`
* [Node 18.14.0 blog post](https://nodejs.org/en/blog/release/v18.14.0/)
* V8 `11.2`
### Breaking Changes[​](https://www.electronjs.org/blog/electron-24-0#breaking-changes "Direct link to Breaking Changes")
#### API Changed: `nativeImage.createThumbnailFromPath(path, size)`[​](https://www.electronjs.org/blog/electron-24-0#api-changed-nativeimagecreatethumbnailfrompathpath-size "Direct link to api-changed-nativeimagecreatethumbnailfrompathpath-size")
The `maxSize` parameter has been changed to `size` to reflect that the size passed in will be the size the thumbnail created. Previously, Windows would not scale the image up if it were smaller than `maxSize`, and macOS would always set the size to `maxSize`. Behavior is now the same across platforms.
```
// a 128x128 image.const imagePath = path.join('path', 'to', 'capybara.png');// Scaling up a smaller image.const upSize = { width: 256, height: 256 };nativeImage.createThumbnailFromPath(imagePath, upSize).then((result) => { console.log(result.getSize()); // { width: 256, height: 256 }});// Scaling down a larger image.const downSize = { width: 64, height: 64 };nativeImage.createThumbnailFromPath(imagePath, downSize).then((result) => { console.log(result.getSize()); // { width: 64, height: 64 }});
```
### New Features[​](https://www.electronjs.org/blog/electron-24-0#new-features "Direct link to New Features")
* Added the ability to filter `HttpOnly` cookies with `cookies.get()`. [#37365](https://github.com/electron/electron/pull/37365)
* Added `logUsage` to `shell.openExternal()` options, which allows passing the `SEE_MASK_FLAG_LOG_USAGE` flag to `ShellExecuteEx` on Windows. The `SEE_MASK_FLAG_LOG_USAGE` flag indicates a user initiated launch that enables tracking of frequently used programs and other behaviors. [#37291](https://github.com/electron/electron/pull/37291)
* Added `types` to the `webRequest` filter, adding the ability to filter the requests you listen to.[#37427](https://github.com/electron/electron/pull/37427)
* Added a new `devtools-open-url` event to `webContents` to allow developers to open new windows with them. [#36774](https://github.com/electron/electron/pull/36774)
* Added several standard page size options to `webContents.print()`. [#37265](https://github.com/electron/electron/pull/37265)
* Added the `enableLocalEcho` flag to the session handler `ses.setDisplayMediaRequestHandler()` callback for allowing remote audio input to be echoed in the local output stream when `audio` is a `WebFrameMain`. [#37528](https://github.com/electron/electron/pull/37528)
* Allow an application-specific username to be passed to `inAppPurchase.purchaseProduct()`. [#35902](https://github.com/electron/electron/pull/35902)
* Exposed `window.invalidateShadow()` to clear residual visual artifacts on macOS. [#32452](https://github.com/electron/electron/pull/32452)
* Whole-program optimization is now enabled by default in electron node headers config file, allowing the compiler to perform opimizations with information from all modules in a program as opposed to a per-module (compiland) basis. [#36937](https://github.com/electron/electron/pull/36937)
* `SystemPreferences::CanPromptTouchID` (macOS) now supports Apple Watch. [#36935](https://github.com/electron/electron/pull/36935)
End of Support for 21.x.y[​](https://www.electronjs.org/blog/electron-24-0#end-of-support-for-21xy "Direct link to End of Support for 21.x.y")
----------------------------------------------------------------------------------------------------------------------------------------------
Electron 21.x.y has reached end-of-support as per the project's [support policy](https://www.electronjs.org/docs/latest/tutorial/electron-timelines#version-support-policy). Developers and applications are encouraged to upgrade to a newer version of Electron.
As noted in [Farewell, Windows 7/8/8.1](https://www.electronjs.org/blog/windows-7-to-8-1-deprecation-notice), Electron 22's (Chromium 108) planned end of life date will be extended from May 30, 2023 to October 10, 2023. The Electron team will continue to backport any security fixes that are part of this program to Electron 22 until October 10, 2023.
| E24 (Apr'23) | E25 (May'23) | E26 (Aug'23) |
| --- | --- | --- |
| 24.x.y | 25.x.y | 26.x.y |
| 23.x.y | 24.x.y | 25.x.y |
| 22.x.y | 23.x.y | 24.x.y |
| \-- | 22.x.y | 22.x.y |
What's Next[​](https://www.electronjs.org/blog/electron-24-0#whats-next "Direct link to 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.
You can find [Electron's public timeline here](https://www.electronjs.org/docs/latest/tutorial/electron-timelines).
More information about future changes can be found on the [Planned Breaking Changes](https://github.com/electron/electron/blob/main/docs/breaking-changes.md) page.
--- Next Release ---
Title: Electron 25.0.0
URL Source: https://www.electronjs.org/blog/electron-25-0
Published Time: 2023-05-30T00:00:00.000Z
Markdown Content:
Electron 25.0.0 has been released! It includes upgrades to Chromium `114`, V8 `11.4`, and Node.js `18.15.0`. Read below for more details!
* * *
The Electron team is excited to announce the release of Electron 25.0.0! You can install it with npm via `npm install electron@latest` or download it from our [releases website](https://releases.electronjs.org/releases/stable). Continue reading for details about this release.
If you have any feedback, please share it with us on Twitter, or join our community [Discord](https://discord.com/invite/electronjs)! Bugs and feature requests can be reported in Electron's [issue tracker](https://github.com/electron/electron/issues).
Notable Changes[​](https://www.electronjs.org/blog/electron-25-0#notable-changes "Direct link to Notable Changes")
------------------------------------------------------------------------------------------------------------------
### Highlights[​](https://www.electronjs.org/blog/electron-25-0#highlights "Direct link to Highlights")
* Implemented `net.fetch` within Electron's net module, using Chromium's networking stack. This differs from Node's `fetch()`, which uses Node.js' HTTP stack. See [#36733](https://github.com/electron/electron/pull/36733) and [#36606](https://github.com/electron/electron/pull/36606).
* Added `protocol.handle`, which replaces and deprecates `protocol.{register,intercept}{String,Buffer,Stream,Http,File}Protocol`. [#36674](https://github.com/electron/electron/pull/36674)
* Extended support for Electron 22, in order to match Chromium and Microsoft's Windows 7/8/8.1 deprecation plan. See additional details at the end of this blog post.
### Stack Changes[​](https://www.electronjs.org/blog/electron-25-0#stack-changes "Direct link to Stack Changes")
* Chromium `114`
* [New in Chrome 114](https://developer.chrome.com/blog/new-in-chrome-114/)
* [New in Chrome 113](https://developer.chrome.com/blog/new-in-chrome-113/)
* [New in DevTools 114](https://developer.chrome.com/blog/new-in-devtools-114/)
* [New in DevTools 113](https://developer.chrome.com/blog/new-in-devtools-113/)
* Node.js `18.15.0`
* [Node 18.15.0 blog post](https://nodejs.org/en/blog/release/v18.15.0/)
* V8 `11.4`
### Breaking Changes[​](https://www.electronjs.org/blog/electron-25-0#breaking-changes "Direct link to Breaking Changes")
#### Deprecated: `protocol.{register,intercept}{Buffer,String,Stream,File,Http}Protocol`[​](https://www.electronjs.org/blog/electron-25-0#deprecated-protocolregisterinterceptbufferstringstreamfilehttpprotocol "Direct link to deprecated-protocolregisterinterceptbufferstringstreamfilehttpprotocol")
The `protocol.register*Protocol` and `protocol.intercept*Protocol` methods have been replaced with [`protocol.handle`](https://www.electronjs.org/docs/latest/api/protocol#protocolhandlescheme-handler).
The new method can either register a new protocol or intercept an existing protocol, and responses can be of any type.
```
// Deprecated in Electron 25protocol.registerBufferProtocol('some-protocol', () => { callback({ mimeType: 'text/html', data: Buffer.from('<h5>Response</h5>') });});// Replace withprotocol.handle('some-protocol', () => { return new Response( Buffer.from('<h5>Response</h5>'), // Could also be a string or ReadableStream. { headers: { 'content-type': 'text/html' } } );});
```
```
// Deprecated in Electron 25protocol.registerHttpProtocol('some-protocol', () => { callback({ url: 'https://electronjs.org' });});// Replace withprotocol.handle('some-protocol', () => { return net.fetch('https://electronjs.org');});
```
```
// Deprecated in Electron 25protocol.registerFileProtocol('some-protocol', () => { callback({ filePath: '/path/to/my/file' });});// Replace withprotocol.handle('some-protocol', () => { return net.fetch('file:///path/to/my/file');});
```
#### Deprecated: `BrowserWindow.setTrafficLightPosition(position)`[​](https://www.electronjs.org/blog/electron-25-0#deprecated-browserwindowsettrafficlightpositionposition "Direct link to deprecated-browserwindowsettrafficlightpositionposition")
`BrowserWindow.setTrafficLightPosition(position)` has been deprecated, the `BrowserWindow.setWindowButtonPosition(position)` API should be used instead which accepts `null` instead of `{ x: 0, y: 0 }` to reset the position to system default.
```
// Deprecated in Electron 25win.setTrafficLightPosition({ x: 10, y: 10 });win.setTrafficLightPosition({ x: 0, y: 0 });// Replace withwin.setWindowButtonPosition({ x: 10, y: 10 });win.setWindowButtonPosition(null);
```
#### Deprecated: `BrowserWindow.getTrafficLightPosition()`[​](https://www.electronjs.org/blog/electron-25-0#deprecated-browserwindowgettrafficlightposition "Direct link to deprecated-browserwindowgettrafficlightposition")
`BrowserWindow.getTrafficLightPosition()` has been deprecated, the `BrowserWindow.getWindowButtonPosition()` API should be used instead which returns `null` instead of `{ x: 0, y: 0 }` when there is no custom position.
```
// Deprecated in Electron 25const pos = win.getTrafficLightPosition();if (pos.x === 0 && pos.y === 0) { // No custom position.}// Replace withconst ret = win.getWindowButtonPosition();if (ret === null) { // No custom position.}
```
### New Features[​](https://www.electronjs.org/blog/electron-25-0#new-features "Direct link to New Features")
* Added `net.fetch()`. [#36733](https://github.com/electron/electron/pull/36733)
* `net.fetch` supports requests to `file:` URLs and custom protocols registered with `protocol.register*Protocol`. [#36606](https://github.com/electron/electron/pull/36606)
* Added BrowserWindow.set/getWindowButtonPosition APIs. [#37094](https://github.com/electron/electron/pull/37094)
* Added `protocol.handle`, replacing and deprecating `protocol.{register,intercept}{String,Buffer,Stream,Http,File}Protocol`. [#36674](https://github.com/electron/electron/pull/36674)
* Added a `will-frame-navigate` event to `webContents` and the `<webview>` tag, which fires whenever any frame within the frame hierarchy attempts to navigate. [#34418](https://github.com/electron/electron/pull/34418)
* Added initiator information to navigator events. This information allows distinguishing `window.open` from a parent frame causing a navigation, as opposed to a child-initiated navigation. [#37085](https://github.com/electron/electron/pull/37085)
* Added net.resolveHost that resolves hosts using defaultSession object. [#38152](https://github.com/electron/electron/pull/38152)
* Added new 'did-resign-active' event to `app`. [#38018](https://github.com/electron/electron/pull/38018)
* Added several standard page size options to `webContents.print()`. [#37159](https://github.com/electron/electron/pull/37159)
* Added the `enableLocalEcho` flag to the session handler `ses.setDisplayMediaRequestHandler()` callback for allowing remote audio input to be echoed in the local output stream when `audio` is a `WebFrameMain`. [#37315](https://github.com/electron/electron/pull/37315)
* Added thermal management information to `powerMonitor`. [#38028](https://github.com/electron/electron/pull/38028)
* Allows an absolute path to be passed to the session.fromPath() API. [#37604](https://github.com/electron/electron/pull/37604)
* Exposes the `audio-state-changed` event on `webContents`. [#37366](https://github.com/electron/electron/pull/37366)
22.x.y Continued Support[​](https://www.electronjs.org/blog/electron-25-0#22xy-continued-support "Direct link to 22.x.y Continued Support")
-------------------------------------------------------------------------------------------------------------------------------------------
As noted in [Farewell, Windows 7/8/8.1](https://www.electronjs.org/blog/windows-7-to-8-1-deprecation-notice), Electron 22's (Chromium 108) planned end of life date will be extended from May 30, 2023 to October 10, 2023. The Electron team will continue to backport any security fixes that are part of this program to Electron 22 until October 10, 2023. The October support date follows the extended support dates from both Chromium and Microsoft. On October 11, the Electron team will drop support back to the latest three stable major versions, which will no longer support Windows 7/8/8.1.
| E25 (May'23) | E26 (Aug'23) | E27 (Oct'23) |
| --- | --- | --- |
| 25.x.y | 26.x.y | 27.x.y |
| 24.x.y | 25.x.y | 26.x.y |
| 23.x.y | 24.x.y | 25.x.y |
| 22.x.y | 22.x.y | \-- |
What's Next[​](https://www.electronjs.org/blog/electron-25-0#whats-next "Direct link to 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.
You can find [Electron's public timeline here](https://www.electronjs.org/docs/latest/tutorial/electron-timelines).
More information about future changes can be found on the [Planned Breaking Changes](https://github.com/electron/electron/blob/main/docs/breaking-changes.md) page.
--- Next Release ---
Title: Electron 26.0.0
URL Source: https://www.electronjs.org/blog/electron-26-0
Published Time: 2023-08-15T00:00:00.000Z
Markdown Content:
Electron 26.0.0 | Electron
===============
[Skip to main content](https://www.electronjs.org/blog/electron-26-0#__docusaurus_skipToContent_fallback)
[![Image 1: Electron homepage](https://www.electronjs.org/assets/img/logo.svg)![Image 2: Electron homepage](https://www.electronjs.org/assets/img/logo.svg) **Electron**](https://www.electronjs.org/)[Docs](https://www.electronjs.org/docs/latest/)[API](https://www.electronjs.org/docs/latest/api/app)[Blog](https://www.electronjs.org/blog)
[Tools](https://www.electronjs.org/blog/electron-26-0)
* [Electron Forge](https://electronforge.io/)
* [Electron Fiddle](https://www.electronjs.org/fiddle)
[Community](https://www.electronjs.org/blog/electron-26-0)
* [Governance](https://www.electronjs.org/governance)
* [Showcase](https://www.electronjs.org/apps)
* [Resources](https://www.electronjs.org/community)
[Releases](https://releases.electronjs.org/)[GitHub](https://github.com/electron/electron)
[English](https://www.electronjs.org/blog/electron-26-0)
* [English](https://www.electronjs.org/blog/electron-26-0)
* [Deutsch](https://www.electronjs.org/de/blog/electron-26-0)
* [Español](https://www.electronjs.org/es/blog/electron-26-0)
* [Français](https://www.electronjs.org/fr/blog/electron-26-0)
* [日本語](https://www.electronjs.org/ja/blog/electron-26-0)
* [Português](https://www.electronjs.org/pt/blog/electron-26-0)
* [Русский](https://www.electronjs.org/ru/blog/electron-26-0)
* [中文](https://www.electronjs.org/zh/blog/electron-26-0)
Search
Latest posts
##### 2024
* [Electron 31.0.0](https://www.electronjs.org/blog/electron-31-0)
* [Electron 30.0.0](https://www.electronjs.org/blog/electron-30-0)
* [Google Summer of Code 2024](https://www.electronjs.org/blog/2024-summer-of-code)
* [Electron 29.0.0](https://www.electronjs.org/blog/electron-29-0)
* [Introducing electron/rfcs](https://www.electronjs.org/blog/rfcs)
* [Statement regarding "runAsNode" CVEs](https://www.electronjs.org/blog/statement-run-as-node-cves)
##### 2023
* [Electron 28.0.0](https://www.electronjs.org/blog/electron-28-0)
* [Ecosystem 2023 Recap](https://www.electronjs.org/blog/ecosystem-2023-eoy-recap)
* [December Quiet Month (Dec'23)](https://www.electronjs.org/blog/dec-quiet-period-23)
* [Electron 27.0.0](https://www.electronjs.org/blog/electron-27-0)
* [Breach to Barrier: Strengthening Apps with the Sandbox](https://www.electronjs.org/blog/breach-to-barrier)
* [Electron 26.0.0](https://www.electronjs.org/blog/electron-26-0)
* [Electron 25.0.0](https://www.electronjs.org/blog/electron-25-0)
* [Electron 24.0.0](https://www.electronjs.org/blog/electron-24-0)
* [10 years of Electron 🎉](https://www.electronjs.org/blog/10-years-of-electron)
* [Electron 23.0.0](https://www.electronjs.org/blog/electron-23-0)
##### 2022
* [Electron 22.0.0](https://www.electronjs.org/blog/electron-22-0)
* [Farewell, Windows 7/8/8.1](https://www.electronjs.org/blog/windows-7-to-8-1-deprecation-notice)
* [A Quiet Place Part II (Dec'22)](https://www.electronjs.org/blog/a-quiet-place-22)
* [Introducing Electron Forge 6](https://www.electronjs.org/blog/forge-v6-release)
* [Maintainer Summit 2022 Recap](https://www.electronjs.org/blog/maintainer-summit-2022-recap)
* [Electron 21.0.0](https://www.electronjs.org/blog/electron-21-0)
* [Electron 20.0.0](https://www.electronjs.org/blog/electron-20-0)
* [Electron and the V8 Memory Cage](https://www.electronjs.org/blog/v8-memory-cage)
* [Electron 19.0.0](https://www.electronjs.org/blog/electron-19-0)
* [S3 Bucket Migration](https://www.electronjs.org/blog/s3-bucket-change)
* [Electron 18.0.0](https://www.electronjs.org/blog/electron-18-0)
* [Google Summer of Code 2022](https://www.electronjs.org/blog/2022-summer-of-code)
* [Electron 17.0.0](https://www.electronjs.org/blog/electron-17-0)
##### 2021
* [Spectron Deprecation Notice](https://www.electronjs.org/blog/spectron-deprecation-notice)
* [Electron 16.0.0](https://www.electronjs.org/blog/electron-16-0)
* [A Quiet Place (Dec'21)](https://www.electronjs.org/blog/a-quiet-place-21)
* [Electron 15.0.0](https://www.electronjs.org/blog/electron-15-0)
* [Electron 14.0.0](https://www.electronjs.org/blog/electron-14-0)
* [WebView2 and Electron](https://www.electronjs.org/blog/webview2)
* [New Electron Release Cadence](https://www.electronjs.org/blog/8-week-cadence)
* [Electron 13.0.0](https://www.electronjs.org/blog/electron-13-0)
* [Electron 12.0.0](https://www.electronjs.org/blog/electron-12-0)
##### 2020
* [Electron 11.0.0](https://www.electronjs.org/blog/electron-11-0)
* [Apple Silicon Support](https://www.electronjs.org/blog/apple-silicon)
* [Community Discord Server and Hacktoberfest](https://www.electronjs.org/blog/discord-hacktoberfest-2020)
* [Electron 10.0.0](https://www.electronjs.org/blog/electron-10-0)
* [Electron becomes an OpenJS Foundation Impact Project](https://www.electronjs.org/blog/electron-openjs-impact-project)
* [Google Season of Docs](https://www.electronjs.org/blog/2020-season-of-docs)
* [Electron 9.0.0](https://www.electronjs.org/blog/electron-9-0)
* [Upcoming Electron Releases](https://www.electronjs.org/blog/cadence-pause)
* [Electron 8.0.0](https://www.electronjs.org/blog/electron-8-0)
##### 2019
* [Electron joins the OpenJS Foundation](https://www.electronjs.org/blog/electron-joins-openjsf)
* [Chromium WebAudio Vulnerability Fix (CVE-2019-13720)](https://www.electronjs.org/blog/cve-2019-13720)
* [Electron 7.0.0](https://www.electronjs.org/blog/electron-7-0)
* [Electron 6.0.0](https://www.electronjs.org/blog/electron-6-0)
* [New Electron Release Cadence](https://www.electronjs.org/blog/12-week-cadence)
* [Electron 5.0.0](https://www.electronjs.org/blog/electron-5-0)
* [From native to JavaScript in Electron](https://www.electronjs.org/blog/from-native-to-js)
* [Electron Governance](https://www.electronjs.org/blog/governance)
* [Chromium FileReader Vulnerability Fix](https://www.electronjs.org/blog/filereader-fix)
* [Discontinuing support for 32-bit Linux](https://www.electronjs.org/blog/linux-32bit-support)
* [BrowserView window.open() Vulnerability Fix](https://www.electronjs.org/blog/window-open-fix)
* [Node.js Native Addons and Electron 5.0](https://www.electronjs.org/blog/nodejs-native-addons-and-electron-5)
* [Electron v5.0.0 Timeline](https://www.electronjs.org/blog/electron-5-0-timeline)
##### 2018
* [Electron 4.0.0](https://www.electronjs.org/blog/electron-4-0)
* [SQLite Vulnerability Fix](https://www.electronjs.org/blog/magellan-fix)
* [Electron App Feedback Program](https://www.electronjs.org/blog/app-feedback-program)
* [Electron 3.0.0](https://www.electronjs.org/blog/electron-3-0)
* [Using GN to Build Electron](https://www.electronjs.org/blog/gn)
* [WebPreferences Vulnerability Fix](https://www.electronjs.org/blog/web-preferences-fix)
* [Search](https://www.electronjs.org/blog/search)
* [Internationalization Updates](https://www.electronjs.org/blog/i18n-updates)
* [Electron 2.0.0](https://www.electronjs.org/blog/electron-2-0)
* [Easier AutoUpdating for Open-Source Apps](https://www.electronjs.org/blog/autoupdating-electron-apps)
* [New in Electron 2: In-App Purchases](https://www.electronjs.org/blog/in-app-purchases)
* [Webview Vulnerability Fix](https://www.electronjs.org/blog/webview-fix)
* [Website Hiccups](https://www.electronjs.org/blog/website-hiccups)
* [Protocol Handler Vulnerability Fix](https://www.electronjs.org/blog/protocol-handler-fix)
##### 2017
* [Electron 2.0 and Beyond - Semantic Versioning](https://www.electronjs.org/blog/electron-2-semantic-boogaloo)
* [Electron's New Internationalized Website](https://www.electronjs.org/blog/new-website)
* [Chromium RCE Vulnerability Fix](https://www.electronjs.org/blog/chromium-rce-vulnerability)
* [Announcing TypeScript support in Electron](https://www.electronjs.org/blog/typescript)
* [Project of the Week: Jasper](https://www.electronjs.org/blog/jasper)
* [Project of the Week: WebTorrent](https://www.electronjs.org/blog/webtorrent)
* [Touch Bar Support](https://www.electronjs.org/blog/touch-bar-support)
* [Project of the Week: Voltra](https://www.electronjs.org/blog/voltra)
* [Electron Internals: Building Chromium as a Library](https://www.electronjs.org/blog/electron-internals-building-chromium-as-a-library)
* [Project of the Week: WordPress Desktop](https://www.electronjs.org/blog/wordpress)
* [Project of the Week: Dat](https://www.electronjs.org/blog/dat)
* [Project of the Week: Ghost](https://www.electronjs.org/blog/ghost)
* [Project of the Week: Beaker Browser](https://www.electronjs.org/blog/beaker-browser)
* [Project of the Week: Kap](https://www.electronjs.org/blog/kap)
* [Electron Simple Samples](https://www.electronjs.org/blog/simple-samples)
##### 2016
* [Electron Userland](https://www.electronjs.org/blog/userland)
* [Certificate Transparency Fix](https://www.electronjs.org/blog/certificate-transparency-fix)
* [September 2016: New Apps](https://www.electronjs.org/blog/september-2016-roundup)
* [Electron's API Docs as Structured Data](https://www.electronjs.org/blog/api-docs-json-schema)
* [Electron Internals: Weak References](https://www.electronjs.org/blog/electron-internals-weak-references)
* [August 2016: New Apps](https://www.electronjs.org/blog/august-2016-roundup)
* [Accessibility Tools](https://www.electronjs.org/blog/accessibility-tools)
* [npm install electron](https://www.electronjs.org/blog/npm-install-electron)
* [Electron Internals: Using Node as a Library](https://www.electronjs.org/blog/electron-internals-using-node-as-a-library)
* [July 2016: New Apps and Meetups](https://www.electronjs.org/blog/july-2016-roundup)
* [Electron Internals: Message Loop Integration](https://www.electronjs.org/blog/electron-internals-node-integration)
* [Electron Podcasts](https://www.electronjs.org/blog/electron-podcasts)
* [Electron 1.0](https://www.electronjs.org/blog/electron-1-0)
* [What's new in Electron 0.37](https://www.electronjs.org/blog/electron-37)
* [Use V8 and Chromium Features in Electron](https://www.electronjs.org/blog/latest-v8-chromium-features)
##### 2015
* [API Changes Coming in Electron 1.0](https://www.electronjs.org/blog/electron-api-changes)
* [Mac App Store and Windows Auto Updater on Electron](https://www.electronjs.org/blog/electron-updates-mac-app-store-and-windows-auto-updater)
* [What's New in Electron](https://www.electronjs.org/blog/2015-whats-new-in-electron)
* [Electron Meetup at GitHub HQ](https://www.electronjs.org/blog/electron-meetup)
* [Electron Documentation](https://www.electronjs.org/blog/electron-doumentation)
* [Atom Shell is now Electron](https://www.electronjs.org/blog/electron)
Electron 26.0.0
===============
August 15, 2023 · 2 min read
[![Image 3: VerteDinde](https://github.com/VerteDinde.png?size=96)](https://github.com/VerteDinde)
[VerteDinde](https://github.com/VerteDinde)
Electron 26.0.0 has been released! It includes upgrades to Chromium `116.0.5845.62`, V8 `11.2`, and Node.js `18.16.1`. Read below for more details!
* * *
The Electron team is excited to announce the release of Electron 26.0.0! You can install it with npm via `npm install electron@latest` or download it from our [releases website](https://releases.electronjs.org/releases/stable). Continue reading for details about this release.
If you have any feedback, please share it with us on Twitter, or join our community [Discord](https://discord.com/invite/electronjs)! Bugs and feature requests can be reported in Electron's [issue tracker](https://github.com/electron/electron/issues).
Notable Changes[​](https://www.electronjs.org/blog/electron-26-0#notable-changes "Direct link to Notable Changes")
------------------------------------------------------------------------------------------------------------------
### Stack Changes[​](https://www.electronjs.org/blog/electron-26-0#stack-changes "Direct link to Stack Changes")
* Chromium `116.0.5845.62`
* [New in Chrome 116](https://developer.chrome.com/blog/new-in-chrome-116/)
* [New in DevTools 116](https://developer.chrome.com/blog/new-in-devtools-116/)
* Node.js `18.16.1`
* [Node 18.16.1 blog post](https://nodejs.org/en/blog/release/v18.16.1/)
* V8 `11.2`
### Breaking Changes[​](https://www.electronjs.org/blog/electron-26-0#breaking-changes "Direct link to Breaking Changes")
### Deprecated: `webContents.getPrinters`[​](https://www.electronjs.org/blog/electron-26-0#deprecated-webcontentsgetprinters "Direct link to deprecated-webcontentsgetprinters")
The `webContents.getPrinters` method has been deprecated. Use `webContents.getPrintersAsync` instead.
```
const w = new BrowserWindow({ show: false });// Deprecatedconsole.log(w.webContents.getPrinters());// Replace withw.webContents.getPrintersAsync().then((printers) => { console.log(printers);});
```
### Deprecated: `systemPreferences.{get,set}AppLevelAppearance` and `systemPreferences.appLevelAppearance`[​](https://www.electronjs.org/blog/electron-26-0#deprecated-systempreferencesgetsetapplevelappearance-and-systempreferencesapplevelappearance "Direct link to deprecated-systempreferencesgetsetapplevelappearance-and-systempreferencesapplevelappearance")
The `systemPreferences.getAppLevelAppearance` and `systemPreferences.setAppLevelAppearance` methods have been deprecated, as well as the `systemPreferences.appLevelAppearance` property. Use the `nativeTheme` module instead.
```
// DeprecatedsystemPreferences.getAppLevelAppearance();// Replace withnativeTheme.shouldUseDarkColors;// DeprecatedsystemPreferences.appLevelAppearance;// Replace withnativeTheme.shouldUseDarkColors;// DeprecatedsystemPreferences.setAppLevelAppearance('dark');// Replace withnativeTheme.themeSource = 'dark';
```
### Deprecated: `alternate-selected-control-text` value for `systemPreferences.getColor`[​](https://www.electronjs.org/blog/electron-26-0#deprecated-alternate-selected-control-text-value-for-systempreferencesgetcolor "Direct link to deprecated-alternate-selected-control-text-value-for-systempreferencesgetcolor")
The `alternate-selected-control-text` value for `systemPreferences.getColor` has been deprecated. Use `selected-content-background` instead.
```
// DeprecatedsystemPreferences.getColor('alternate-selected-control-text');// Replace withsystemPreferences.getColor('selected-content-background');
```
### New Features[​](https://www.electronjs.org/blog/electron-26-0#new-features "Direct link to New Features")
* Added `safeStorage.setUsePlainTextEncryption` and `safeStorage.getSelectedStorageBackend` api. [#39107](https://github.com/electron/electron/pull/39107)
* Added `safeStorage.setUsePlainTextEncryption` and `safeStorage.getSelectedStorageBackend` api. [#39155](https://github.com/electron/electron/pull/39155)
* Added `senderIsMainFrame` to messages sent via `ipcRenderer.sendTo()`. [#39206](https://github.com/electron/electron/pull/39206)
* Added support for flagging a Menu as being keyboard initiated. [#38954](https://github.com/electron/electron/pull/38954)
End of Support for 23.x.y[​](https://www.electronjs.org/blog/electron-26-0#end-of-support-for-23xy "Direct link to End of Support for 23.x.y")
----------------------------------------------------------------------------------------------------------------------------------------------
Electron 23.x.y has reached end-of-support as per the project's [support policy](https://www.electronjs.org/docs/latest/tutorial/electron-timelines#version-support-policy). Developers and applications are encouraged to upgrade to a newer version of Electron.
| E26 (Aug'23) | E27 (Oct'23) | E28 (Jan'24) |
| --- | --- | --- |
| 26.x.y | 27.x.y | 28.x.y |
| 25.x.y | 26.x.y | 27.x.y |
| 24.x.y | 25.x.y | 26.x.y |
| 22.x.y | | |
What's Next[​](https://www.electronjs.org/blog/electron-26-0#whats-next "Direct link to 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.
You can find [Electron's public timeline here](https://www.electronjs.org/docs/latest/tutorial/electron-timelines).
More information about future changes can be found on the [Planned Breaking Changes](https://github.com/electron/electron/blob/main/docs/breaking-changes.md) page.
**Tags:**
* [Release](https://www.electronjs.org/blog/tags/release "Blog posts about new Electron releases")
[Newer Post Breach to Barrier: Strengthening Apps with the Sandbox](https://www.electronjs.org/blog/breach-to-barrier)[Older Post Electron 25.0.0](https://www.electronjs.org/blog/electron-25-0)
* [Notable Changes](https://www.electronjs.org/blog/electron-26-0#notable-changes)
* [Stack Changes](https://www.electronjs.org/blog/electron-26-0#stack-changes)
* [Breaking Changes](https://www.electronjs.org/blog/electron-26-0#breaking-changes)
* [Deprecated: `webContents.getPrinters`](https://www.electronjs.org/blog/electron-26-0#deprecated-webcontentsgetprinters)
* [Deprecated: `systemPreferences.{get,set}AppLevelAppearance` and `systemPreferences.appLevelAppearance`](https://www.electronjs.org/blog/electron-26-0#deprecated-systempreferencesgetsetapplevelappearance-and-systempreferencesapplevelappearance)
* [Deprecated: `alternate-selected-control-text` value for `systemPreferences.getColor`](https://www.electronjs.org/blog/electron-26-0#deprecated-alternate-selected-control-text-value-for-systempreferencesgetcolor)
* [New Features](https://www.electronjs.org/blog/electron-26-0#new-features)
* [End of Support for 23.x.y](https://www.electronjs.org/blog/electron-26-0#end-of-support-for-23xy)
* [What's Next](https://www.electronjs.org/blog/electron-26-0#whats-next)
Docs
* [Getting Started](https://www.electronjs.org/docs/latest/)
* [API Reference](https://www.electronjs.org/docs/latest/api/app)
Checklists
* [Performance](https://www.electronjs.org/docs/latest/tutorial/performance)
* [Security](https://www.electronjs.org/docs/latest/tutorial/security)
Tools
* [Electron Forge](https://electronforge.io/)
* [Electron Fiddle](https://www.electronjs.org/fiddle)
Community
* [Governance](https://www.electronjs.org/governance)
* [Resources](https://www.electronjs.org/community)
* [Discord](https://discordapp.com/invite/APGC3k5yaH)
* [Twitter](https://twitter.com/electronjs)
* [Mastodon](https://social.lfx.dev/@electronjs)
* [Stack Overflow](https://stackoverflow.com/questions/tagged/electron)
More
* [GitHub](https://github.com/electron/electron)
* [Open Collective](https://opencollective.com/electron)
* [Infrastructure Dashboard](https://p.datadoghq.com/sb/c44e1df0-85d7-11ee-94c9-da7ad0900002-c245f7ef47d0d0c32abecdc0938c2a85)
[![Image 4: OpenJS Foundation Logo](https://www.electronjs.org/assets/img/openjsf_logo.svg)![Image 5: OpenJS Foundation Logo](https://www.electronjs.org/assets/img/openjsf_logo-dark.svg)](https://openjsf.org/)
Copyright © 2023 OpenJS Foundation and Electron contributors.
Hosting and infrastructure graciously provided by
![Image 6](https://www.electronjs.org/assets/third-parties/azure.png)![Image 7](https://www.electronjs.org/assets/third-parties/heroku_dark.png)![Image 8](https://www.electronjs.org/assets/third-parties/heroku_light.png)![Image 9](https://www.electronjs.org/assets/third-parties/datadog_dark.png)![Image 10](https://www.electronjs.org/assets/third-parties/datadog_light.png)
--- Next Release ---
Title: Electron 27.0.0
URL Source: https://www.electronjs.org/blog/electron-27-0
Published Time: 2023-10-10T00:00:00.000Z
Markdown Content:
Electron 27.0.0 has been released! It includes upgrades to Chromium `118.0.5993.32`, V8 `11.8`, and Node.js `18.17.1`.
* * *
The Electron team is excited to announce the release of Electron 27.0.0! You can install it with npm via `npm install electron@latest` or download it from our [releases website](https://releases.electronjs.org/releases/stable). Continue reading for details about this release.
If you have any feedback, please share it with us on [Twitter](https://twitter.com/electronjs) or [Mastodon](https://social.lfx.dev/@electronjs), or join our community [Discord](https://discord.com/invite/electronjs)! Bugs and feature requests can be reported in Electron's [issue tracker](https://github.com/electron/electron/issues).
Notable Changes[​](https://www.electronjs.org/blog/electron-27-0#notable-changes "Direct link to Notable Changes")
------------------------------------------------------------------------------------------------------------------
### Stack Changes[​](https://www.electronjs.org/blog/electron-27-0#stack-changes "Direct link to Stack Changes")
* Chromium `118.0.5993.32`
* [New in Chrome 118](https://developer.chrome.com/blog/new-in-chrome-118/)
* [New in DevTools 118](https://developer.chrome.com/blog/new-in-devtools-118/)
* Node.js `18.17.1`
* [Node 18.17.1 blog post](https://nodejs.org/en/blog/release/v18.17.1/)
* [Node 18.17.0 blog post](https://nodejs.org/en/blog/release/v18.17.0/)
* V8 `11.8`
### Breaking Changes[​](https://www.electronjs.org/blog/electron-27-0#breaking-changes "Direct link to Breaking Changes")
### Removed: macOS 10.13 / 10.14 support[​](https://www.electronjs.org/blog/electron-27-0#removed-macos-1013--1014-support "Direct link to Removed: macOS 10.13 / 10.14 support")
macOS 10.13 (High Sierra) and macOS 10.14 (Mojave) are no longer supported by [Chromium](https://chromium-review.googlesource.com/c/chromium/src/+/4629466).
Older versions of Electron will continue to run on these operating systems, but macOS 10.15 (Catalina) or later will be required to run Electron v27.0.0 and higher.
### Deprecated: `ipcRenderer.sendTo()`[​](https://www.electronjs.org/blog/electron-27-0#deprecated-ipcrenderersendto "Direct link to deprecated-ipcrenderersendto")
The `ipcRenderer.sendTo()` API has been deprecated. It should be replaced by setting up a [`MessageChannel`](https://www.electronjs.org/docs/latest/tutorial/message-ports#setting-up-a-messagechannel-between-two-renderers) between the renderers.
The `senderId` and `senderIsMainFrame` properties of `IpcRendererEvent` have been deprecated as well.
### Removed: color scheme events in `systemPreferences`[​](https://www.electronjs.org/blog/electron-27-0#removed-color-scheme-events-in-systempreferences "Direct link to removed-color-scheme-events-in-systempreferences")
The following `systemPreferences` events have been removed:
* `inverted-color-scheme-changed`
* `high-contrast-color-scheme-changed`
Use the new `updated` event on the `nativeTheme` module instead.
```
// RemovedsystemPreferences.on('inverted-color-scheme-changed', () => { /* ... */});systemPreferences.on('high-contrast-color-scheme-changed', () => { /* ... */});// Replace withnativeTheme.on('updated', () => { /* ... */});
```
### Removed: `webContents.getPrinters`[​](https://www.electronjs.org/blog/electron-27-0#removed-webcontentsgetprinters "Direct link to removed-webcontentsgetprinters")
The `webContents.getPrinters` method has been removed. Use `webContents.getPrintersAsync` instead.
```
const w = new BrowserWindow({ show: false });// Removedconsole.log(w.webContents.getPrinters());// Replace withw.webContents.getPrintersAsync().then((printers) => { console.log(printers);});
```
### Removed: `systemPreferences.{get,set}AppLevelAppearance` and `systemPreferences.appLevelAppearance`[​](https://www.electronjs.org/blog/electron-27-0#removed-systempreferencesgetsetapplevelappearance-and-systempreferencesapplevelappearance "Direct link to removed-systempreferencesgetsetapplevelappearance-and-systempreferencesapplevelappearance")
The `systemPreferences.getAppLevelAppearance` and `systemPreferences.setAppLevelAppearance` methods have been removed, as well as the `systemPreferences.appLevelAppearance` property. Use the `nativeTheme` module instead.
```
// RemovedsystemPreferences.getAppLevelAppearance();// Replace withnativeTheme.shouldUseDarkColors;// RemovedsystemPreferences.appLevelAppearance;// Replace withnativeTheme.shouldUseDarkColors;// RemovedsystemPreferences.setAppLevelAppearance('dark');// Replace withnativeTheme.themeSource = 'dark';
```
### Removed: `alternate-selected-control-text` value for `systemPreferences.getColor`[​](https://www.electronjs.org/blog/electron-27-0#removed-alternate-selected-control-text-value-for-systempreferencesgetcolor "Direct link to removed-alternate-selected-control-text-value-for-systempreferencesgetcolor")
The `alternate-selected-control-text` value for `systemPreferences.getColor` has been removed. Use `selected-content-background` instead.
```
// RemovedsystemPreferences.getColor('alternate-selected-control-text');// Replace withsystemPreferences.getColor('selected-content-background');
```
### New Features[​](https://www.electronjs.org/blog/electron-27-0#new-features "Direct link to New Features")
* Added app accessibility transparency settings api [#39631](https://github.com/electron/electron/pull/39631)
* Added support for `chrome.scripting` extension APIs [#39675](https://github.com/electron/electron/pull/39675)
* Enabled `WaylandWindowDecorations` by default [#39644](https://github.com/electron/electron/pull/39644)
End of Support for 24.x.y[​](https://www.electronjs.org/blog/electron-27-0#end-of-support-for-24xy "Direct link to End of Support for 24.x.y")
----------------------------------------------------------------------------------------------------------------------------------------------
Electron 24.x.y has reached end-of-support as per the project's [support policy](https://www.electronjs.org/docs/latest/tutorial/electron-timelines#version-support-policy). Developers and applications are encouraged to upgrade to a newer version of Electron.
| E27 (Oct'23) | E28 (Dec'23) | E29 (Feb'24) |
| --- | --- | --- |
| 27.x.y | 28.x.y | 29.x.y |
| 26.x.y | 27.x.y | 28.x.y |
| 25.x.y | 26.x.y | 27.x.y |
End of Extended Support for 22.x.y[​](https://www.electronjs.org/blog/electron-27-0#end-of-extended-support-for-22xy "Direct link to End of Extended Support for 22.x.y")
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Earlier this year, the Electron team extended Electron 22's planned end of life date from May 30, 2023 to October 10, 2023, in order to match Chrome's extended support for Windows 7/8/8.1 (see [Farewell, Windows 7/8/8.1](https://www.electronjs.org/blog/windows-7-to-8-1-deprecation-notice) for more details).
Electron 22.x.y has reached end-of-support as per the project's [support policy](https://www.electronjs.org/docs/latest/tutorial/electron-timelines#version-support-policy) and this support extension. This will drop support back to the latest three stable major versions, and will end official support for Windows 7/8/8.1.
What's Next[​](https://www.electronjs.org/blog/electron-27-0#whats-next "Direct link to 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.
You can find [Electron's public timeline here](https://www.electronjs.org/docs/latest/tutorial/electron-timelines).
More information about future changes can be found on the [Planned Breaking Changes](https://github.com/electron/electron/blob/main/docs/breaking-changes.md) page.
--- Next Release ---
Title: Electron 28.0.0
URL Source: https://www.electronjs.org/blog/electron-28-0
Published Time: 2023-12-06T00:00:00.000Z
Markdown Content:
Electron 28.0.0 has been released! It includes upgrades to Chromium `120.0.6099.56`, V8 `12.0`, and Node.js `18.18.2`.
* * *
The Electron team is excited to announce the release of Electron 28.0.0! You can install it with npm via `npm install electron@latest` or download it from our [releases website](https://releases.electronjs.org/releases/stable). Continue reading for details about this release.
If you have any feedback, please share it with us on [Twitter](https://twitter.com/electronjs) or [Mastodon](https://social.lfx.dev/@electronjs), or join our community [Discord](https://discord.com/invite/electronjs)! Bugs and feature requests can be reported in Electron's [issue tracker](https://github.com/electron/electron/issues).
Notable Changes[​](https://www.electronjs.org/blog/electron-28-0#notable-changes "Direct link to Notable Changes")
------------------------------------------------------------------------------------------------------------------
Highlights[​](https://www.electronjs.org/blog/electron-28-0#highlights "Direct link to Highlights")
---------------------------------------------------------------------------------------------------
* Implemented support for ECMAScript modules or ESM (What are ECMAScript modules? [learn more here](https://nodejs.org/api/esm.html#modules-ecmascript-modules). This includes support for ESM in Electron proper, as well as areas such as the `UtilityProcess` API entrypoints. [See our ESM documentation](https://www.electronjs.org/docs/latest/tutorial/esm) for more details.
* In addition to enabling ESM support in Electron itself, Electron Forge also supports using ESM to package, build and develop Electron applications. You can find this support in [Forge v7.0.0](https://github.com/electron/forge/releases/tag/v7.0.0) or higher.
### Stack Changes[​](https://www.electronjs.org/blog/electron-28-0#stack-changes "Direct link to Stack Changes")
* Chromium `120.0.6099.56`
* New in [Chrome 119](https://developer.chrome.com/blog/new-in-chrome-119/) and in [DevTools 119](https://developer.chrome.com/blog/new-in-devtools-119/)
* New in [Chrome 120](https://developer.chrome.com/blog/new-in-chrome-120/) and in [DevTools 120](https://developer.chrome.com/blog/new-in-devtools-120/)
* Node `18.18.2`
* [Node 18.18.0 notes](https://nodejs.org/en/blog/release/v18.18.0/)
* [Node 18.18.1 notes](https://nodejs.org/en/blog/release/v18.18.1/)
* [Node 18.18.2 notes](https://nodejs.org/en/blog/release/v18.18.2/)
* V8 `12.0`
### New Features[​](https://www.electronjs.org/blog/electron-28-0#new-features "Direct link to New Features")
* Enabled ESM support. [#37535](https://github.com/electron/electron/pull/37535)
* For more details, see the [ESM documentation](https://www.electronjs.org/docs/latest/tutorial/esm).
* Added ESM entrypoints to the `UtilityProcess` API. [#40047](https://github.com/electron/electron/pull/40047)
* Added several properties to the `display` object including `detected`, `maximumCursorSize`, and `nativeOrigin`. [#40554](https://github.com/electron/electron/pull/40554)
* Added support for `ELECTRON_OZONE_PLATFORM_HINT` environment variable on Linux. [#39792](https://github.com/electron/electron/pull/39792)
### Breaking Changes[​](https://www.electronjs.org/blog/electron-28-0#breaking-changes "Direct link to Breaking Changes")
#### Behavior Changed: `WebContents.backgroundThrottling` set to false affects all `WebContents` in the host `BrowserWindow`[​](https://www.electronjs.org/blog/electron-28-0#behavior-changed-webcontentsbackgroundthrottling-set-to-false-affects-all-webcontents-in-the-host-browserwindow "Direct link to behavior-changed-webcontentsbackgroundthrottling-set-to-false-affects-all-webcontents-in-the-host-browserwindow")
`WebContents.backgroundThrottling` set to false will disable frames throttling in the `BrowserWindow` for all `WebContents` displayed by it.
#### Removed: `BrowserWindow.setTrafficLightPosition(position)`[​](https://www.electronjs.org/blog/electron-28-0#removed-browserwindowsettrafficlightpositionposition "Direct link to removed-browserwindowsettrafficlightpositionposition")
`BrowserWindow.setTrafficLightPosition(position)` has been removed, the `BrowserWindow.setWindowButtonPosition(position)` API should be used instead which accepts `null` instead of `{ x: 0, y: 0 }` to reset the position to system default.
```
// Removed in Electron 28win.setTrafficLightPosition({ x: 10, y: 10 });win.setTrafficLightPosition({ x: 0, y: 0 });// Replace withwin.setWindowButtonPosition({ x: 10, y: 10 });win.setWindowButtonPosition(null);
```
#### Removed: `BrowserWindow.getTrafficLightPosition()`[​](https://www.electronjs.org/blog/electron-28-0#removed-browserwindowgettrafficlightposition "Direct link to removed-browserwindowgettrafficlightposition")
`BrowserWindow.getTrafficLightPosition()` has been removed, the `BrowserWindow.getWindowButtonPosition()` API should be used instead which returns `null` instead of `{ x: 0, y: 0 }` when there is no custom position.
```
// Removed in Electron 28const pos = win.getTrafficLightPosition();if (pos.x === 0 && pos.y === 0) { // No custom position.}// Replace withconst ret = win.getWindowButtonPosition();if (ret === null) { // No custom position.}
```
#### Removed: `ipcRenderer.sendTo()`[​](https://www.electronjs.org/blog/electron-28-0#removed-ipcrenderersendto "Direct link to removed-ipcrenderersendto")
The `ipcRenderer.sendTo()` API has been removed. It should be replaced by setting up a [`MessageChannel`](https://www.electronjs.org/docs/latest/tutorial/message-ports#setting-up-a-messagechannel-between-two-renderers) between the renderers.
The `senderId` and `senderIsMainFrame` properties of `IpcRendererEvent` have been removed as well.
#### Removed: `app.runningUnderRosettaTranslation`[​](https://www.electronjs.org/blog/electron-28-0#removed-apprunningunderrosettatranslation "Direct link to removed-apprunningunderrosettatranslation")
The `app.runningUnderRosettaTranslation` property has been removed. Use `app.runningUnderARM64Translation` instead.
```
// Removedconsole.log(app.runningUnderRosettaTranslation);// Replace withconsole.log(app.runningUnderARM64Translation);
```
End of Support for 25.x.y[​](https://www.electronjs.org/blog/electron-28-0#end-of-support-for-25xy "Direct link to End of Support for 25.x.y")
----------------------------------------------------------------------------------------------------------------------------------------------
Electron 25.x.y has reached end-of-support as per the project's [support policy](https://www.electronjs.org/docs/latest/tutorial/electron-timelines#version-support-policy). Developers and applications are encouraged to upgrade to a newer version of Electron.
| E28 (Dec'23) | E29 (Feb'24) | E30 (Apr'24) |
| --- | --- | --- |
| 28.x.y | 29.x.y | 30.x.y |
| 27.x.y | 28.x.y | 29.x.y |
| 26.x.y | 27.x.y | 28.x.y |
What's Next[​](https://www.electronjs.org/blog/electron-28-0#whats-next "Direct link to 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.
You can find [Electron's public timeline here](https://www.electronjs.org/docs/latest/tutorial/electron-timelines).
More information about future changes can be found on the [Planned Breaking Changes](https://github.com/electron/electron/blob/main/docs/breaking-changes.md) page.
--- Next Release ---
Title: Electron 29.0.0
URL Source: https://www.electronjs.org/blog/electron-29-0
Published Time: 2024-02-20T00:00:00.000Z
Markdown Content:
Electron 29.0.0 has been released! It includes upgrades to Chromium `122.0.6261.39`, V8 `12.2`, and Node.js `20.9.0`.
* * *
The Electron team is excited to announce the release of Electron 29.0.0! You can install it with npm via `npm install electron@latest` or download it from our [releases website](https://releases.electronjs.org/releases/stable). Continue reading for details about this release.
If you have any feedback, please share it with us on [Twitter](https://twitter.com/electronjs) or [Mastodon](https://social.lfx.dev/@electronjs), or join our community [Discord](https://discord.com/invite/electronjs)! Bugs and feature requests can be reported in Electron's [issue tracker](https://github.com/electron/electron/issues).
Notable Changes[​](https://www.electronjs.org/blog/electron-29-0#notable-changes "Direct link to Notable Changes")
------------------------------------------------------------------------------------------------------------------
### Highlights[​](https://www.electronjs.org/blog/electron-29-0#highlights "Direct link to Highlights")
* Added a new top-level `webUtils` module, a renderer process module that provides a utility layer to interact with Web API objects. The first available API in the module is `webUtils.getPathForFile`. Electron's previous `File.path` augmentation was a deviation from web standards; this new API is more in line with current web standards behavior.
### Stack Changes[​](https://www.electronjs.org/blog/electron-29-0#stack-changes "Direct link to Stack Changes")
* Chromium `122.0.6261.39`
* New in [Chrome 122](https://developer.chrome.com/blog/new-in-chrome-122/) and in [DevTools 122](https://developer.chrome.com/blog/new-in-devtools-122/)
* New in [Chrome 121](https://developer.chrome.com/blog/new-in-chrome-121/) and in [DevTools 121](https://developer.chrome.com/blog/new-in-devtools-121/)
* Node `20.9.0`
* [Node 20.9.0 notes](https://nodejs.org/en/blog/release/v20.9.0/)
* [Node 20.0.0 notes](https://nodejs.org/en/blog/release/v20.0.0/)
* V8 `12.2`
Electron 29 upgrades Chromium from `120.0.6099.56` to `122.0.6261.39`, Node from `18.18.2` to `20.9.0`, and V8 from `12.0` to `12.2`.
### New Features[​](https://www.electronjs.org/blog/electron-29-0#new-features "Direct link to New Features")
* Added new `webUtils` module, a utility layer to interact with Web API objects, to replace `File.path` augmentation. [#38776](https://github.com/electron/electron/pull/38776)
* Added [net](https://www.electronjs.org/docs/latest/api/net) module to [utility process](https://www.electronjs.org/docs/latest/glossary#utility-process). [#40890](https://github.com/electron/electron/pull/40890)
* Added a new [Electron Fuse](https://www.electronjs.org/docs/latest/tutorial/fuses), `grantFileProtocolExtraPrivileges`, that opts the `file://` protocol into more secure and restrictive behaviour that matches Chromium. [#40372](https://github.com/electron/electron/pull/40372)
* Added an option in `protocol.registerSchemesAsPrivileged` to allow V8 code cache in custom schemes. [#40544](https://github.com/electron/electron/pull/40544)
* Migrated `app.{set|get}LoginItemSettings(settings)` to use Apple's new recommended underlying framework on macOS 13.0+. [#37244](https://github.com/electron/electron/pull/37244)
### Breaking Changes[​](https://www.electronjs.org/blog/electron-29-0#breaking-changes "Direct link to Breaking Changes")
#### Behavior Changed: `ipcRenderer` can no longer be sent over the `contextBridge`[​](https://www.electronjs.org/blog/electron-29-0#behavior-changed-ipcrenderer-can-no-longer-be-sent-over-the-contextbridge "Direct link to behavior-changed-ipcrenderer-can-no-longer-be-sent-over-the-contextbridge")
Attempting to send the entire `ipcRenderer` module as an object over the `contextBridge` will now result in an empty object on the receiving side of the bridge. This change was made to remove / mitigate a security footgun. You should not directly expose ipcRenderer or its methods over the bridge. Instead, provide a safe wrapper like below:
```
contextBridge.exposeInMainWorld('app', { onEvent: (cb) => ipcRenderer.on('foo', (e, ...args) => cb(args)),});
```
#### Removed: `renderer-process-crashed` event on `app`[​](https://www.electronjs.org/blog/electron-29-0#removed-renderer-process-crashed-event-on-app "Direct link to removed-renderer-process-crashed-event-on-app")
The `renderer-process-crashed` event on `app` has been removed. Use the new `render-process-gone` event instead.
```
// Removedapp.on('renderer-process-crashed', (event, webContents, killed) => { /* ... */});// Replace withapp.on('render-process-gone', (event, webContents, details) => { /* ... */});
```
#### Removed: `crashed` event on `WebContents` and `<webview>`[​](https://www.electronjs.org/blog/electron-29-0#removed-crashed-event-on-webcontents-and-webview "Direct link to removed-crashed-event-on-webcontents-and-webview")
The `crashed` events on `WebContents` and `<webview>` have been removed. Use the new `render-process-gone` event instead.
```
// Removedwin.webContents.on('crashed', (event, killed) => { /* ... */});webview.addEventListener('crashed', (event) => { /* ... */});// Replace withwin.webContents.on('render-process-gone', (event, details) => { /* ... */});webview.addEventListener('render-process-gone', (event) => { /* ... */});
```
#### Removed: `gpu-process-crashed` event on `app`[​](https://www.electronjs.org/blog/electron-29-0#removed-gpu-process-crashed-event-on-app "Direct link to removed-gpu-process-crashed-event-on-app")
The `gpu-process-crashed` event on `app` has been removed. Use the new `child-process-gone` event instead.
```
// Removedapp.on('gpu-process-crashed', (event, killed) => { /* ... */});// Replace withapp.on('child-process-gone', (event, details) => { /* ... */});
```
End of Support for 26.x.y[​](https://www.electronjs.org/blog/electron-29-0#end-of-support-for-26xy "Direct link to End of Support for 26.x.y")
----------------------------------------------------------------------------------------------------------------------------------------------
Electron 26.x.y has reached end-of-support as per the project's [support policy](https://www.electronjs.org/docs/latest/tutorial/electron-timelines#version-support-policy). Developers and applications are encouraged to upgrade to a newer version of Electron.
| E29 (Feb'24) | E30 (Apr'24) | E31 (Jun'24) |
| --- | --- | --- |
| 29.x.y | 30.x.y | 31.x.y |
| 28.x.y | 29.x.y | 30.x.y |
| 27.x.y | 28.x.y | 29.x.y |
What's Next[​](https://www.electronjs.org/blog/electron-29-0#whats-next "Direct link to What's Next")
-----------------------------------------------------------------------------------------------------
Did you know that Electron recently added a community Request for Comments (RFC) process? If you want to add a feature to the framework, RFCs can be a useful tool to start a dialogue with maintainers on its design. You can also see upcoming changes being discussed in the Pull Requests. To learn more, check out our [Introducing electron/rfcs](https://www.electronjs.org/blog/rfcs) blog post, or check out the README of the [electron/rfcs](https://www.github.com/electron/rfcs) repository directly.
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.
You can find [Electron's public timeline here](https://www.electronjs.org/docs/latest/tutorial/electron-timelines).
More information about future changes can be found on the [Planned Breaking Changes](https://github.com/electron/electron/blob/main/docs/breaking-changes.md) page.
--- Next Release ---
Title: Electron 30.0.0
URL Source: https://www.electronjs.org/blog/electron-30-0
Published Time: 2024-04-16T00:00:00.000Z
Markdown Content:
Electron 30.0.0 has been released! It includes upgrades to Chromium `124.0.6367.49`, V8 `12.4`, and Node.js `20.11.1`.
* * *
The Electron team is excited to announce the release of Electron 30.0.0! You can install it with npm via `npm install electron@latest` or download it from our [releases website](https://releases.electronjs.org/releases/stable). Continue reading for details about this release.
If you have any feedback, please share it with us on [Twitter](https://twitter.com/electronjs) or [Mastodon](https://social.lfx.dev/@electronjs), or join our community [Discord](https://discord.com/invite/electronjs)! Bugs and feature requests can be reported in Electron's [issue tracker](https://github.com/electron/electron/issues).
Notable Changes[​](https://www.electronjs.org/blog/electron-30-0#notable-changes "Direct link to Notable Changes")
------------------------------------------------------------------------------------------------------------------
### Highlights[​](https://www.electronjs.org/blog/electron-30-0#highlights "Direct link to Highlights")
* ASAR Integrity fuse now supported on Windows ([#40504](https://github.com/electron/electron/pull/40504))
* Existing apps with ASAR Integrity enabled may not work on Windows if not configured correctly. Apps using Electron packaging tools should upgrade to `@electron/packager@18.3.1` or `@electron/forge@7.4.0`.
* Take a look at our [ASAR Integrity tutorial](https://www.electronjs.org/docs/latest/tutorial/asar-integrity) for more information.
* Added [`WebContentsView`](https://www.electronjs.org/docs/latest/api/web-contents-view) and [`BaseWindow`](https://www.electronjs.org/docs/latest/api/base-window) main process modules, deprecating & replacing `BrowserView` ([#35658](https://github.com/electron/electron/pull/35658))
* `BrowserView` is now a shim over `WebContentsView` and the old implementation has been removed.
* See [our Web Embeds documentation](https://www.electronjs.org/docs/latest/tutorial/web-embeds) for a comparison of the new `WebContentsView` API to other similar APIs.
* Implemented support for the [File System API](https://developer.mozilla.org/en-US/docs/Web/API/File_System_API) ([#41827](https://github.com/electron/electron/commit/cf1087badd437906f280373decb923733a8523e6))
### Stack Changes[​](https://www.electronjs.org/blog/electron-30-0#stack-changes "Direct link to Stack Changes")
* Chromium `124.0.6367.49`
* New in [Chrome 124](https://developer.chrome.com/blog/new-in-chrome-124/) and in [DevTools 124](https://developer.chrome.com/blog/new-in-devtools-124/)
* New in [Chrome 123](https://developer.chrome.com/blog/new-in-chrome-123/) and in [DevTools 123](https://developer.chrome.com/blog/new-in-devtools-123/)
* Node `20.11.1`
* [Node 20.11.1 notes](https://nodejs.org/en/blog/release/v20.11.1/)
* V8 `12.4`
Electron 30 upgrades Chromium from `122.0.6261.39` to `124.0.6367.49`, Node from `20.9.0` to `20.11.1`, and V8 from `12.2` to `12.4`.
### New Features[​](https://www.electronjs.org/blog/electron-30-0#new-features "Direct link to New Features")
* Added a `transparent` webpreference to webviews. ([#40301](https://github.com/electron/electron/pull/40301))
* Added a new instance property `navigationHistory` on webContents API with `navigationHistory.getEntryAtIndex` method, enabling applications to retrieve the URL and title of any navigation entry within the browsing history. ([#41662](https://github.com/electron/electron/pull/41662))
* Added new `BrowserWindow.isOccluded()` method to allow apps to check occlusion status. ([#38982](https://github.com/electron/electron/pull/38982))
* Added proxy configuring support for requests made with the `net` module from the utility process. ([#41417](https://github.com/electron/electron/pull/41417))
* Added support for Bluetooth ports being requested by service class ID in `navigator.serial`. ([#41734](https://github.com/electron/electron/pull/41734))
* Added support for the Node.js [`NODE_EXTRA_CA_CERTS`](https://nodejs.org/api/cli.html#node_extra_ca_certsfile) CLI flag. ([#41822](https://github.com/electron/electron/pull/41822))
### Breaking Changes[​](https://www.electronjs.org/blog/electron-30-0#breaking-changes "Direct link to Breaking Changes")
#### Behavior Changed: cross-origin iframes now use Permission Policy to access features[​](https://www.electronjs.org/blog/electron-30-0#behavior-changed-cross-origin-iframes-now-use-permission-policy-to-access-features "Direct link to Behavior Changed: cross-origin iframes now use Permission Policy to access features")
Cross-origin iframes must now specify features available to a given `iframe` via the `allow` attribute in order to access them.
See [documentation](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe#allow) for more information.
#### Removed: The `--disable-color-correct-rendering` command line switch[​](https://www.electronjs.org/blog/electron-30-0#removed-the---disable-color-correct-rendering-command-line-switch "Direct link to removed-the---disable-color-correct-rendering-command-line-switch")
This switch was never formally documented but its removal is being noted here regardless. Chromium itself now has better support for color spaces so this flag should not be needed.
#### Behavior Changed: `BrowserView.setAutoResize` behavior on macOS[​](https://www.electronjs.org/blog/electron-30-0#behavior-changed-browserviewsetautoresize-behavior-on-macos "Direct link to behavior-changed-browserviewsetautoresize-behavior-on-macos")
In Electron 30, BrowserView is now a wrapper around the new [WebContentsView](https://www.electronjs.org/docs/latest/api/web-contents-view) API.
Previously, the `setAutoResize` function of the `BrowserView` API was backed by [autoresizing](https://developer.apple.com/documentation/appkit/nsview/1483281-autoresizingmask?language=objc) on macOS, and by a custom algorithm on Windows and Linux. For simple use cases such as making a BrowserView fill the entire window, the behavior of these two approaches was identical. However, in more advanced cases, BrowserViews would be autoresized differently on macOS than they would be on other platforms, as the custom resizing algorithm for Windows and Linux did not perfectly match the behavior of macOS's autoresizing API. The autoresizing behavior is now standardized across all platforms.
If your app uses `BrowserView.setAutoResize` to do anything more complex than making a BrowserView fill the entire window, it's likely you already had custom logic in place to handle this difference in behavior on macOS. If so, that logic will no longer be needed in Electron 30 as autoresizing behavior is consistent.
#### Removed: `params.inputFormType` property on `context-menu` on `WebContents`[​](https://www.electronjs.org/blog/electron-30-0#removed-paramsinputformtype-property-on-context-menu-on-webcontents "Direct link to removed-paramsinputformtype-property-on-context-menu-on-webcontents")
The `inputFormType` property of the params object in the `context-menu` event from `WebContents` has been removed. Use the new `formControlType` property instead.
#### Removed: `process.getIOCounters()`[​](https://www.electronjs.org/blog/electron-30-0#removed-processgetiocounters "Direct link to removed-processgetiocounters")
Chromium has removed access to this information.
End of Support for 27.x.y[​](https://www.electronjs.org/blog/electron-30-0#end-of-support-for-27xy "Direct link to End of Support for 27.x.y")
----------------------------------------------------------------------------------------------------------------------------------------------
Electron 27.x.y has reached end-of-support as per the project's [support policy](https://www.electronjs.org/docs/latest/tutorial/electron-timelines#version-support-policy). Developers and applications are encouraged to upgrade to a newer version of Electron.
| E30 (Apr'24) | E31 (Jun'24) | E32 (Aug'24) |
| --- | --- | --- |
| 30.x.y | 31.x.y | 32.x.y |
| 29.x.y | 30.x.y | 31.x.y |
| 28.x.y | 29.x.y | 30.x.y |
What's Next[​](https://www.electronjs.org/blog/electron-30-0#whats-next "Direct link to 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.
You can find [Electron's public timeline here](https://www.electronjs.org/docs/latest/tutorial/electron-timelines).
More information about future changes can be found on the [Planned Breaking Changes](https://github.com/electron/electron/blob/main/docs/breaking-changes.md) page.
--- Next Release ---
Title: Electron 31.0.0
URL Source: https://www.electronjs.org/blog/electron-31-0
Published Time: 2024-06-11T00:00:00.000Z
Markdown Content:
Electron 31.0.0 has been released! It includes upgrades to Chromium `126.0.6478.36`, V8 `12.6`, and Node `20.14.0`.
* * *
The Electron team is excited to announce the release of Electron 31.0.0! You can install it with npm via `npm install electron@latest` or download it from our [releases website](https://releases.electronjs.org/releases/stable). Continue reading for details about this release.
If you have any feedback, please share it with us on [Twitter](https://twitter.com/electronjs) or [Mastodon](https://social.lfx.dev/@electronjs), or join our community [Discord](https://discord.com/invite/electronjs)! Bugs and feature requests can be reported in Electron's [issue tracker](https://github.com/electron/electron/issues).
Notable Changes[​](https://www.electronjs.org/blog/electron-31-0#notable-changes "Direct link to Notable Changes")
------------------------------------------------------------------------------------------------------------------
### Highlights[​](https://www.electronjs.org/blog/electron-31-0#highlights "Direct link to Highlights")
* Extended `WebContentsView` to accept pre-existing `webContents` object. [#42319](https://github.com/electron/electron/pull/42319)
* Added support for `NODE_EXTRA_CA_CERTS`. [#41689](https://github.com/electron/electron/pull/41689)
* Updated window.flashFrame(bool) to flash continuously on macOS. [#41391](https://github.com/electron/electron/pull/41391)
* Removed `WebSQL` support [#41868](https://github.com/electron/electron/pull/41868)
* `nativeImage.toDataURL` will preserve PNG colorspace [#41610](https://github.com/electron/electron/pull/41610)
* Extended `webContents.setWindowOpenHandler` to support manual creation of BrowserWindow. [#41432](https://github.com/electron/electron/pull/41432)
### Stack Changes[​](https://www.electronjs.org/blog/electron-31-0#stack-changes "Direct link to Stack Changes")
* Chromium`126.0.6478.36`
* [New in 126](https://developer.chrome.com/blog/new-in-chrome-126/)
* [New in 125](https://developer.chrome.com/blog/new-in-chrome-125/)
* Node `20.14.0`
* [Node 20.14.0 blog post](https://nodejs.org/en/blog/release/v20.14.0/)
* V8 `12.6`
Electron 31 upgrades Chromium from `124.0.6367.49` to `126.0.6478.36`, Node from `20.11.1` to `20.14.0`, and V8 from `12.4` to `12.6`.
### New Features[​](https://www.electronjs.org/blog/electron-31-0#new-features "Direct link to New Features")
* Added `clearData` method to `Session`. [#40983](https://github.com/electron/electron/pull/40983)
* Added options parameter to `Session.clearData` API. [#41355](https://github.com/electron/electron/pull/41355)
* Added support for Bluetooth ports being requested by service class ID in `navigator.serial`. [#41638](https://github.com/electron/electron/pull/41638)
* Added support for Node's [`NODE_EXTRA_CA_CERTS`](https://nodejs.org/api/cli.html#node_extra_ca_certsfile) environment variable. [#41689](https://github.com/electron/electron/pull/41689)
* Extended `webContents.setWindowOpenHandler` to support manual creation of BrowserWindow. [#41432](https://github.com/electron/electron/pull/41432)
* Implemented support for the web standard [File System API](https://developer.mozilla.org/en-US/docs/Web/API/File_System_API). [#41419](https://github.com/electron/electron/pull/41419)
* Extended `WebContentsView` to accept pre-existing `WebContents` instances. [#42319](https://github.com/electron/electron/pull/42319)
* Added a new instance property `navigationHistory` on webContents API with `navigationHistory.getEntryAtIndex` method, enabling applications to retrieve the URL and title of any navigation entry within the browsing history. [#41577](https://github.com/electron/electron/pull/41577) (Also in [29](https://github.com/electron/electron/pull/41661), [30](https://github.com/electron/electron/pull/41662))
### Breaking Changes[​](https://www.electronjs.org/blog/electron-31-0#breaking-changes "Direct link to Breaking Changes")
#### Removed: `WebSQL` support[​](https://www.electronjs.org/blog/electron-31-0#removed-websql-support "Direct link to removed-websql-support")
Chromium has removed support for WebSQL upstream, transitioning it to Android only. See [Chromium's intent to remove discussion](https://groups.google.com/a/chromium.org/g/blink-dev/c/fWYb6evVA-w/m/pziWcvboAgAJ) for more information.
#### Behavior Changed: `nativeImage.toDataURL` will preseve PNG colorspace[​](https://www.electronjs.org/blog/electron-31-0#behavior-changed-nativeimagetodataurl-will-preseve-png-colorspace "Direct link to behavior-changed-nativeimagetodataurl-will-preseve-png-colorspace")
PNG decoder implementation has been changed to preserve colorspace data. The encoded data returned from this function now matches it.
See [crbug.com/332584706](https://issues.chromium.org/issues/332584706) for more information.
#### Behavior Changed: `win.flashFrame(bool)` will flash dock icon continuously on macOS[​](https://www.electronjs.org/blog/electron-31-0#behavior-changed-winflashframebool-will-flash-dock-icon-continuously-on-macos "Direct link to behavior-changed-winflashframebool-will-flash-dock-icon-continuously-on-macos")
This brings the behavior to parity with Windows and Linux. Prior behavior: The first `flashFrame(true)` bounces the dock icon only once (using the [NSInformationalRequest](https://developer.apple.com/documentation/appkit/nsrequestuserattentiontype/nsinformationalrequest) level) and `flashFrame(false)` does nothing. New behavior: Flash continuously until `flashFrame(false)` is called. This uses the [NSCriticalRequest](https://developer.apple.com/documentation/appkit/nsrequestuserattentiontype/nscriticalrequest) level instead. To explicitly use `NSInformationalRequest` to cause a single dock icon bounce, it is still possible to use [`dock.bounce('informational')`](https://www.electronjs.org/docs/latest/api/dock#dockbouncetype-macos).
End of Support for 28.x.y[​](https://www.electronjs.org/blog/electron-31-0#end-of-support-for-28xy "Direct link to End of Support for 28.x.y")
----------------------------------------------------------------------------------------------------------------------------------------------
Electron 28.x.y has reached end-of-support as per the project's [support policy](https://www.electronjs.org/docs/latest/tutorial/electron-timelines#version-support-policy). Developers and applications are encouraged to upgrade to a newer version of Electron.
| E31 (Jun'24) | E32 (Aug'24) | E33 (Oct'24) |
| --- | --- | --- |
| 31.x.y | 32.x.y | 33.x.y |
| 30.x.y | 31.x.y | 32.x.y |
| 28.x.y | 29.x.y | 31.x.y |
What's Next[​](https://www.electronjs.org/blog/electron-31-0#whats-next "Direct link to 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.
You can find [Electron's public timeline here](https://www.electronjs.org/docs/latest/tutorial/electron-timelines).
More information about future changes can be found on the [Planned Breaking Changes](https://github.com/electron/electron/blob/main/docs/breaking-changes.md) page.
--- Next Release ---
Title: Page Not Found | Electron
URL Source: https://www.electronjs.org/blog/electron-32-0
Markdown Content:
Page Not Found | Electron
===============
[Skip to main content](https://www.electronjs.org/blog/electron-32-0#__docusaurus_skipToContent_fallback)
[![Image 1: Electron homepage](https://www.electronjs.org/assets/img/logo.svg)![Image 2: Electron homepage](https://www.electronjs.org/assets/img/logo.svg) **Electron**](https://www.electronjs.org/)[Docs](https://www.electronjs.org/docs/latest/)[API](https://www.electronjs.org/docs/latest/api/app)[Blog](https://www.electronjs.org/blog)
[Tools](https://www.electronjs.org/404)
* [Electron Forge](https://electronforge.io/)
* [Electron Fiddle](https://www.electronjs.org/fiddle)
[Community](https://www.electronjs.org/404)
* [Governance](https://www.electronjs.org/governance)
* [Showcase](https://www.electronjs.org/apps)
* [Resources](https://www.electronjs.org/community)
[Releases](https://releases.electronjs.org/)[GitHub](https://github.com/electron/electron)
[English](https://www.electronjs.org/404)
* [English](https://www.electronjs.org/404)
* [Deutsch](https://www.electronjs.org/de/404)
* [Español](https://www.electronjs.org/es/404)
* [Français](https://www.electronjs.org/fr/404)
* [日本語](https://www.electronjs.org/ja/404)
* [Português](https://www.electronjs.org/pt/404)
* [Русский](https://www.electronjs.org/ru/404)
* [中文](https://www.electronjs.org/zh/404)
Search
![Image 3](https://www.electronjs.org/assets/images/404-d48b3713dabdf8ed84de1fdff3b3dad7.webp)
Page Not Found
==============
We could not find what you were looking for.
Please contact the owner of the site that linked you to the original URL and let them know their link is broken.
Docs
* [Getting Started](https://www.electronjs.org/docs/latest/)
* [API Reference](https://www.electronjs.org/docs/latest/api/app)
Checklists
* [Performance](https://www.electronjs.org/docs/latest/tutorial/performance)
* [Security](https://www.electronjs.org/docs/latest/tutorial/security)
Tools
* [Electron Forge](https://electronforge.io/)
* [Electron Fiddle](https://www.electronjs.org/fiddle)
Community
* [Governance](https://www.electronjs.org/governance)
* [Resources](https://www.electronjs.org/community)
* [Discord](https://discordapp.com/invite/APGC3k5yaH)
* [Twitter](https://twitter.com/electronjs)
* [Mastodon](https://social.lfx.dev/@electronjs)
* [Stack Overflow](https://stackoverflow.com/questions/tagged/electron)
More
* [GitHub](https://github.com/electron/electron)
* [Open Collective](https://opencollective.com/electron)
* [Infrastructure Dashboard](https://p.datadoghq.com/sb/c44e1df0-85d7-11ee-94c9-da7ad0900002-c245f7ef47d0d0c32abecdc0938c2a85)
[![Image 4: OpenJS Foundation Logo](https://www.electronjs.org/assets/img/openjsf_logo.svg)![Image 5: OpenJS Foundation Logo](https://www.electronjs.org/assets/img/openjsf_logo-dark.svg)](https://openjsf.org/)
Copyright © 2023 OpenJS Foundation and Electron contributors.
Hosting and infrastructure graciously provided by
![Image 6](https://www.electronjs.org/assets/third-parties/azure.png)![Image 7](https://www.electronjs.org/assets/third-parties/heroku_dark.png)![Image 8](https://www.electronjs.org/assets/third-parties/heroku_light.png)![Image 9](https://www.electronjs.org/assets/third-parties/datadog_dark.png)![Image 10](https://www.electronjs.org/assets/third-parties/datadog_light.png)
--- Next Release ---
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment