Breaking Changes
Breaking changes will be documented here, and deprecation warnings added to JS code where possible, at least one major version before the change is made.
Types of Breaking Changes
This document uses the following convention to categorize breaking changes:
- API Changed: An API was changed in such a way that code that has not been updated is guaranteed to throw an exception.
- Behavior Changed: The behavior of Electron has changed, but not in such a way that an exception will necessarily be thrown.
- Default Changed: Code depending on the old default may break, not necessarily throwing an exception. The old behavior can be restored by explicitly specifying the value.
- Deprecated: An API was marked as deprecated. The API will continue to function, but will emit a deprecation warning, and will be removed in a future release.
- Removed: An API or feature was removed, and is no longer supported by Electron.
Planned Breaking API Changes (41.0)
Behavior Changed: PDFs no longer create a separate WebContents
Previously, PDF resources created a separate guest WebContents for rendering. Now, PDFs are rendered within the same WebContents instead. If you have code to detect PDF resources, use the frame tree instead of WebContents.
Under the hood, Chromium enabled a feature that changes PDFs to use out-of-process iframes (OOPIFs) instead of the MimeHandlerViewGuest extension.
Behavior Changed: Updated Cookie Change Cause in the Cookie 'changed' Event
We have updated the cookie change cause in the cookie 'changed' event.
When a new cookie is set, the change cause is inserted.
When a cookie is deleted, the change cause remains explicit.
When the cookie being set is identical to an existing one (same name, domain, path, and value, with no actual changes), the change cause is inserted-no-change-overwrite.
When the value of the cookie being set remains unchanged but some of its attributes are updated, such as the expiration attribute, the change cause will be inserted-no-value-change-overwrite.
Planned Breaking API Changes (40.0)
Deprecated: clipboard API access from renderer processes
Using the clipboard API directly in the renderer process is deprecated.
If you want to call this API from a renderer process, place the API call in
your preload script and expose it using the contextBridge API.
Behavior Changed: MacOS dSYM files now compressed with tar.xz
Debug symbols for MacOS (dSYM) now use xz compression in order to handle larger file sizes. dsym.zip files are now
dsym.tar.xz files. End users using debug symbols may need to update their zip utilities.
Deprecated: showHiddenFiles in Dialogs on Linux
This property will still be honored on macOS and Windows, but support on Linux will be removed in Electron 42. GTK intends for this to be a user choice rather than an app choice and has removed the API to do this programmatically.
Planned Breaking API Changes (39.0)
Deprecated: --host-rules command line switch
Chromium is deprecating the --host-rules switch.
You should use --host-resolver-rules instead.
Behavior Changed: window.open popups are always resizable
Per current WHATWG spec, the window.open API will now always create a resizable popup window.
To restore previous behavior:
webContents.setWindowOpenHandler((details) => {
return {
action: 'allow',
overrideBrowserWindowOptions: {
resizable: details.features.includes('resizable=yes')
}
}
})
Behavior Changed: NSAudioCaptureUsageDescription should be included in your app's Info.plist file to use desktopCapturer (🍏 macOS ≥14.2)
Per Chromium update which enables Apple's newer CoreAudio Tap API by default, you now must have NSAudioCaptureUsageDescription defined in your Info.plist to use desktopCapturer.
Electron's desktopCapturer will create a dead audio stream if the new permission is absent however no errors or warnings will occur. This is partially a side-effect of Chromium not falling back to the older Screen & System Audio Recording permissions system if the new system fails.
To restore previous behavior:
// main.js (right beneath your require/import statments)
app.commandLine.appendSwitch(
'disable-features',
'MacCatapLoopbackAudioForScreenShare'
)
Behavior Changed: shared texture OSR paint event data structure
When using shared texture offscreen rendering feature, the paint event now emits a more structured object.
It moves the sharedTextureHandle, planes, modifier into a unified handle property.
See the OffscreenSharedTexture API structure for more details.
Planned Breaking API Changes (38.0)
Removed: ELECTRON_OZONE_PLATFORM_HINT environment variable
The default value of the --ozone-platform flag changed to auto.
Electron now defaults to running as a native Wayland app when launched in a Wayland session (when XDG_SESSION_TYPE=wayland).
Users can force XWayland by passing --ozone-platform=x11.
Removed: ORIGINAL_XDG_CURRENT_DESKTOP environment variable
Previously, Electron changed the value of XDG_CURRENT_DESKTOP internally to Unity, and stored the original name of the desktop session
in a separate variable. XDG_CURRENT_DESKTOP is no longer overridden and now reflects the actual desktop environment.
Removed: macOS 11 support
macOS 11 (Big Sur) is no longer supported by Chromium.
Older versions of Electron will continue to run on Big Sur, but macOS 12 (Monterey) or later will be required to run Electron v38.0.0 and higher.
Removed: plugin-crashed event
The plugin-crashed event has been removed from webContents.
Deprecated: webFrame.routingId property
The routingId property will be removed from webFrame objects.
You should use webFrame.frameToken instead.
Deprecated: webFrame.findFrameByRoutingId(routingId)
The webFrame.findFrameByRoutingId(routingId) function will be removed.
You should use webFrame.findFrameByToken(frameToken) instead.
Planned Breaking API Changes (37.0)
Utility Process unhandled rejection behavior change
Utility Processes will now warn with an error message when an unhandled rejection occurs instead of crashing the process.
To restore the previous behavior, you can use:
process.on('unhandledRejection', () => {
process.exit(1)
})
Behavior Changed: process.exit() kills utility process synchronously
Calling process.exit() in a utility process will now kill the utility process synchronously.
This brings the behavior of process.exit() in line with Node.js behavior.
Please refer to the
Node.js docs and
PR #45690 to understand the potential
implications of that, e.g., when calling console.log() before process.exit().
Behavior Changed: WebUSB and WebSerial Blocklist Support
WebUSB and Web Serial now support the WebUSB Blocklist and Web Serial Blocklist used by Chromium and outlined in their respective specifications.
To disable these, users can pass disable-usb-blocklist and disable-serial-blocklist as command line flags.
Removed: null value for session property in ProtocolResponse
This deprecated feature has been removed.
Previously, setting the ProtocolResponse.session property to null
would create a random independent session. This is no longer supported.
Using single-purpose sessions here is discouraged due to overhead costs;
however, old code that needs to preserve this behavior can emulate it by
creating a random session with session.fromPartition(some_random_string)
and then using it in ProtocolResponse.session.
Behavior Changed: BrowserWindow.IsVisibleOnAllWorkspaces() on Linux
BrowserWindow.IsVisibleOnAllWorkspaces() will now return false on Linux if the
window is not currently visible.
Planned Breaking API Changes (36.0)
Behavior Changes: app.commandLine
app.commandLine will convert upper-cases switches and arguments to lowercase.
app.commandLine was only meant to handle chromium switches (which aren't case-sensitive) and switches passed via app.commandLine will not be passed down to any of the child processes.
If you were using app.commandLine to control the behavior of the main process, you should do this via process.argv.
Deprecated: NativeImage.getBitmap()
NativeImage.toBitmap() returns a newly-allocated copy of the bitmap. NativeImage.getBitmap() was originally an alternative function that returned the original instead of a copy. This changed when sandboxing was introduced, so both return a copy and are functionally equivalent.
Client code should call NativeImage.toBitmap() instead:
// Deprecated
bitmap = image.getBitmap()
// Use this instead
bitmap = image.toBitmap()
Removed: isDefault and status properties on PrinterInfo
These properties have been removed from the PrinterInfo Object because they have been removed from upstream Chromium.
Removed: quota type syncable in Session.clearStorageData(options)
When calling Session.clearStorageData(options), the options.quota type
syncable is no longer supported because it has been
removed
from upstream Chromium.
Deprecated: null value for session property in ProtocolResponse
Previously, setting the ProtocolResponse.session property to null
would create a random independent session. This is no longer supported.
Using single-purpose sessions here is discouraged due to overhead costs;
however, old code that needs to preserve this behavior can emulate it by
creating a random session with session.fromPartition(some_random_string)
and then using it in ProtocolResponse.session.
Deprecated: quota property in Session.clearStorageData(options)
When calling Session.clearStorageData(options), the options.quota
property is deprecated. Since the syncable type was removed, there
is only one type left -- 'temporary' -- so specifying it is unnecessary.
Deprecated: Extension methods and events on session
session.loadExtension, session.removeExtension, session.getExtension,
session.getAllExtensions, 'extension-loaded' event, 'extension-unloaded'
event, and 'extension-ready' events have all moved to the new
session.extensions class.
Removed: systemPreferences.isAeroGlassEnabled()
The systemPreferences.isAeroGlassEnabled() function has been removed without replacement.
It has been always returning true since Electron 23, which only supports Windows 10+, where DWM composition can no longer be disabled.
Changed: GTK 4 is default when running GNOME
After an upstream change, GTK 4 is now the default when running GNOME.
In rare cases, this may cause some applications or configurations to error with the following message:
Gtk-ERROR **: 11:30:38.382: GTK 2/3 symbols detected. Using GTK 2/3 and GTK 4 in the same process is not supported
Affected users can work around this by specifying the gtk-version command-line flag:
$ electron --gtk-version=3 # or --gtk-version=2
The same can be done with the app.commandLine.appendSwitch function.
Planned Breaking API Changes (35.0)
Behavior Changed: Dialog API's defaultPath option on Linux
On Linux, the required portal version for file dialogs has been reverted
to 3 from 4. Using the defaultPath option of the Dialog API is not
supported when using portal file chooser dialogs unless the portal
backend is version 4 or higher. The --xdg-portal-required-version
command-line switch
can be used to force a required version for your application.
See #44426 for more details.
Deprecated: getFromVersionID on session.serviceWorkers
The session.serviceWorkers.fromVersionID(versionId) API has been deprecated
in favor of session.serviceWorkers.getInfoFromVersionID(versionId). This was
changed to make it more clear which object is returned with the introduction
of the session.serviceWorkers.getWorkerFromVersionID(versionId) API.
// Deprecated
session.serviceWorkers.fromVersionID(versionId)
// Replace with
session.serviceWorkers.getInfoFromVersionID(versionId)
Deprecated: setPreloads, getPreloads on Session
registerPreloadScript, unregisterPreloadScript, and getPreloadScripts are introduced as a
replacement for the deprecated methods. These new APIs allow third-party libraries to register
preload scripts without replacing existing scripts. Also, the new type option allows for
additional preload targets beyond frame.
// Deprecated
session.setPreloads([path.join(__dirname, 'preload.js')])
// Replace with:
session.registerPreloadScript({
type: 'frame',
id: 'app-preload',
filePath: path.join(__dirname, 'preload.js')
})
Deprecated: level, message, line, and sourceId arguments in console-message event on WebContents
The console-message event on WebContents has been updated to provide details on the Event
argument.
// Deprecated
webContents.on('console-message', (event, level, message, line, sourceId) => {})
// Replace with:
webContents.on('console-message', ({ level, message, lineNumber, sourceId, frame }) => {})
Additionally, level is now a string with possible values of info, warning, error, and debug.
Behavior Changed: urls property of WebRequestFilter.
Previously, an empty urls array was interpreted as including all URLs. To explicitly include all URLs, developers should now use the <all_urls> pattern, which is a designated URL pattern that matches every possible URL. This change clarifies the intent and ensures more predictable behavior.
// Deprecated
const deprecatedFilter = {
urls: []
}
// Replace with
const newFilter = {
urls: ['<all_urls>']
}
Deprecated: systemPreferences.isAeroGlassEnabled()
The systemPreferences.isAeroGlassEnabled() function has been deprecated without replacement.
It has been always returning true since Electron 23, which only supports Windows 10+, where DWM composition can no longer be disabled.
Planned Breaking API Changes (34.0)
Behavior Changed: menu bar will be hidden during fullscreen on Windows
This brings the behavior to parity with Linux. Prior behavior: Menu bar is still visible during fullscreen on Windows. New behavior: Menu bar is hidden during fullscreen on Windows.
Correction: This was previously listed as a breaking change in Electron 33, but was first released in Electron 34.
Planned Breaking API Changes (33.0)
Deprecated: document.execCommand("paste")
The synchronous clipboard read API document.execCommand("paste") has been deprecated in favor of async clipboard API. This is to align with the browser defaults.
The enableDeprecatedPaste option on WebPreferences that triggers the permission
checks for this API and the associated permission type deprecated-sync-clipboard-read
are also deprecated.
Behavior Changed: frame properties may retrieve detached WebFrameMain instances or none at all
APIs which provide access to a WebFrameMain instance may return an instance
with frame.detached set to true, or possibly return null.
When a frame performs a cross-origin navigation, it enters into a detached state
in which it's no longer attached to the page. In this state, it may be running
unload
handlers prior to being deleted. In the event of an IPC sent during this state,
frame.detached will be set to true with the frame being destroyed shortly
thereafter.
When receiving an event, it's important to access WebFrameMain properties
immediately upon being received. Otherwise, it's not guaranteed to point to the
same webpage as when received. To avoid misaligned expectations, Electron will
return null in the case of late access where the webpage has changed.
ipcMain.on('unload-event', (event) => {
event.senderFrame // ✅ accessed immediately
})
ipcMain.on('unload-event', async (event) => {
await crossOriginNavigationPromise
event.senderFrame // ❌ returns `null` due to late access
})
Behavior Changed: custom protocol URL handling on Windows
Due to changes made in Chromium to support Non-Special Scheme URLs, custom protocol URLs that use Windows file paths will no longer work correctly with the deprecated protocol.registerFileProtocol and the baseURLForDataURL property on BrowserWindow.loadURL, WebContents.loadURL, and <webview>.loadURL. protocol.handle will also not work with these types of URLs but this is not a change since it has always worked that way.
// No longer works
protocol.registerFileProtocol('other', () => {
callback({ filePath: '/path/to/my/file' })
})
const mainWindow = new BrowserWindow()
mainWindow.loadURL('data:text/html,<script src="loaded-from-dataurl.js"></script>', { baseURLForDataURL: 'other://C:\\myapp' })
mainWindow.loadURL('other://C:\\myapp\\index.html')
// Replace with
const path = require('node:path')
const nodeUrl = require('node:url')
protocol.handle(other, (req) => {
const srcPath = 'C:\\myapp\\'
const reqURL = new URL(req.url)
return net.fetch(nodeUrl.pathToFileURL(path.join(srcPath, reqURL.pathname)).toString())
})
mainWindow.loadURL('data:text/html,<script src="loaded-from-dataurl.js"></script>', { baseURLForDataURL: 'other://' })
mainWindow.loadURL('other://index.html')
Behavior Changed: webContents property on login on app
The webContents property in the login event from app will be null
when the event is triggered for requests from the utility process
created with respondToAuthRequestsFromMainProcess option.
Deprecated: textured option in BrowserWindowConstructorOption.type
The textured option of type in BrowserWindowConstructorOptions has been deprecated with no replacement. This option relied on the NSWindowStyleMaskTexturedBackground style mask on macOS, which has been deprecated with no alternative.
Removed: macOS 10.15 support
macOS 10.15 (Catalina) is no longer supported by Chromium.
Older versions of Electron will continue to run on Catalina, but macOS 11 (Big Sur) or later will be required to run Electron v33.0.0 and higher.
Behavior Changed: Native modules now require C++20
Due to changes made upstream, both
V8 and
Node.js now require C++20 as a
minimum version. Developers using native node modules should build their
modules with --std=c++20 rather than --std=c++17. Images using gcc9 or
lower may need to update to gcc10 in order to compile. See
#43555 for more details.
Deprecated: systemPreferences.accessibilityDisplayShouldReduceTransparency
The systemPreferences.accessibilityDisplayShouldReduceTransparency property is now deprecated in favor of the new nativeTheme.prefersReducedTransparency, which provides identical information and works cross-platform.
// Deprecated
const shouldReduceTransparency = systemPreferences.accessibilityDisplayShouldReduceTransparency
// Replace with:
const prefersReducedTransparency = nativeTheme.prefersReducedTransparency
Planned Breaking API Changes (32.0)
Removed: File.path
The nonstandard path property of the Web File object was added in an early version of Electron as a convenience method for working with native files when doing everything in the renderer was more common. However, it represents a deviation from the standard and poses a minor security risk as well, so beginning in Electron 32.0 it has been removed in favor of the webUtils.getPathForFile method.
// Before (renderer)
const file = document.querySelector('input[type=file]').files[0]
alert(`Uploaded file path was: ${file.path}`)
// After (renderer)
const file = document.querySelector('input[type=file]').files[0]
electron.showFilePath(file)
// (preload)
const { contextBridge, webUtils } = require('electron')
contextBridge.exposeInMainWorld('electron', {
showFilePath (file) {
// It's best not to expose the full file path to the web content if
// possible.
const path = webUtils.getPathForFile(file)
alert(`Uploaded file path was: ${path}`)
}
})
Deprecated: clearHistory, canGoBack, goBack, canGoForward, goForward, goToIndex, canGoToOffset, goToOffset on WebContents
The navigation-related APIs are now deprecated.
These APIs have been moved to the navigationHistory property of WebContents to provide a more structured and intuitive interface for managing navigation history.
// Deprecated
win.webContents.clearHistory()
win.webContents.canGoBack()
win.webContents.goBack()
win.webContents.canGoForward()
win.webContents.goForward()
win.webContents.goToIndex(index)
win.webContents.canGoToOffset()
win.webContents.goToOffset(index)
// Replace with
win.webContents.navigationHistory.clear()
win.webContents.navigationHistory.canGoBack()
win.webContents.navigationHistory.goBack()
win.webContents.navigationHistory.canGoForward()
win.webContents.navigationHistory.goForward()
win.webContents.navigationHistory.canGoToOffset()
win.webContents.navigationHistory.goToOffset(index)
Behavior changed: Directory databases in userData will be deleted
If you have a directory called databases in the directory returned by
app.getPath('userData'), it will be deleted when Electron 32 is first run.
The databases directory was used by WebSQL, which was removed in Electron 31.
Chromium now performs a cleanup that deletes this directory. See
issue #45396.
Planned Breaking API Changes (31.0)
Removed: WebSQL support
Chromium has removed support for WebSQL upstream, transitioning it to Android only. See Chromium's intent to remove discussion for more information.
Behavior Changed: nativeImage.toDataURL will preserve 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 for more information.
Behavior Changed: window.flashFrame(bool) 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 level) and flashFrame(false) does nothing. New behavior: Flash continuously until flashFrame(false) is called. This uses the NSCriticalRequest level instead. To explicitly use NSInformationalRequest to cause a single dock icon bounce, it is still possible to use dock.bounce('informational').
Planned Breaking API Changes (30.0)
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 for more information.
Removed: The --disable-color-correct-rendering 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
In Electron 30, BrowserView is now a wrapper around the new WebContentsView API.
Previously, the setAutoResize function of the BrowserView API was backed by autoresizing 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.
Deprecated: BrowserView
The BrowserView class has been deprecated and
replaced by the new WebContentsView class.
BrowserView related methods in BrowserWindow have
also been deprecated:
BrowserWindow.fromBrowserView(browserView)
win.setBrowserView(browserView)
win.getBrowserView()
win.addBrowserView(browserView)
win.removeBrowserView(browserView)
win.setTopBrowserView(browserView)
win.getBrowserViews()
Removed: params.inputFormType 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()
Chromium has removed access to this information.
Planned Breaking API Changes (29.0)
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
The renderer-process-crashed event on app has been removed.
Use the new render-process-gone event instead.
// Removed
app.on('renderer-process-crashed', (event, webContents, killed) => { /* ... */ })
// Replace with
app.on('render-process-gone', (event, webContents, details) => { /* ... */ })
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.
// Removed
win.webContents.on('crashed', (event, killed) => { /* ... */ })
webview.addEventListener('crashed', (event) => { /* ... */ })
// Replace with
win.webContents.on('render-process-gone', (event, details) => { /* ... */ })
webview.addEventListener('render-process-gone', (event) => { /* ... */ })
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.
// Removed
app.on('gpu-process-crashed', (event, killed) => { /* ... */ })
// Replace with
app.on('child-process-gone', (event, details) => { /* ... */ })
Planned Breaking API Changes (28.0)
Behavior Changed: WebContents.backgroundThrottling 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)
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 28
win.setTrafficLightPosition({ x: 10, y: 10 })
win.setTrafficLightPosition({ x: 0, y: 0 })
// Replace with
win.setWindowButtonPosition({ x: 10, y: 10 })
win.setWindowButtonPosition(null)
Removed: BrowserWindow.getTrafficLightPosition()
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 28
const pos = win.getTrafficLightPosition()
if (pos.x === 0 && pos.y === 0) {
// No custom position.
}
// Replace with
const ret = win.getWindowButtonPosition()
if (ret === null) {
// No custom position.
}
Removed: ipcRenderer.sendTo()
The ipcRenderer.sendTo() API has been removed. It should be replaced by setting up a MessageChannel between the renderers.
The senderId and senderIsMainFrame properties of IpcRendererEvent have been removed as well.
Removed: app.runningUnderRosettaTranslation
The app.runningUnderRosettaTranslation property has been removed.
Use app.runningUnderARM64Translation instead.
// Removed
console.log(app.runningUnderRosettaTranslation)
// Replace with
console.log(app.runningUnderARM64Translation)
Deprecated: renderer-process-crashed event on app
The renderer-process-crashed event on app has been deprecated.
Use the new render-process-gone event instead.
// Deprecated
app.on('renderer-process-crashed', (event, webContents, killed) => { /* ... */ })
// Replace with
app.on('render-process-gone', (event, webContents, details) => { /* ... */ })
Deprecated: params.inputFormType property on context-menu on WebContents
The inputFormType property of the params object in the context-menu
event from WebContents has been deprecated. Use the new formControlType
property instead.
Deprecated: crashed event on WebContents and <webview>
The crashed events on WebContents and <webview> have been deprecated.
Use the new render-process-gone event instead.
// Deprecated
win.webContents.on('crashed', (event, killed) => { /* ... */ })
webview.addEventListener('crashed', (event) => { /* ... */ })
// Replace with
win.webContents.on('render-process-gone', (event, details) => { /* ... */ })
webview.addEventListener('render-process-gone', (event) => { /* ... */ })
Deprecated: gpu-process-crashed event on app
The gpu-process-crashed event on app has been deprecated.
Use the new child-process-gone event instead.
// Deprecated
app.on('gpu-process-crashed', (event, killed) => { /* ... */ })
// Replace with
app