Electron Releases

Filter by channel Filter by major release

Release Notes for v6.0.1

Fixes

  • Fixed 'swipe' event emission on macOS. #19354
  • Fixed process.uptime() returning the wrong time. #19567
  • Fixed tray.displayBalloon() not working with custom icon on Windows. #19528
  • Fixed case where sending IPC to a child window (opened with window.open) could cause a crash. #19633
  • Fixed crashes when using the application menu on Linux. #19560
  • Fixed default dock bounce type on macOS. #19546
  • Fixed handling of invalid webRequest url pattern filtering in onBeforeRequest. #19570
  • Ensured that the alwaysOnTop status returned when always-on-top-changed was emitted was correct. #19534
  • Fixed setting the backgroundColor property on TouchBarButton to default by assigning null after the item is constructed. #19471
  • Fixed the clearRecentDocuments MenuItem role on Windows. #19637
  • Standardized the about panel icon size on Linux. #19572
  • getPath('logs') now throws better error when it fails to find the logs path. #19545

Other Changes

  • Updated Chromium to 76.0.3809.102. #19649

Release Notes for v6.0.0

Breaking Changes

  • Upgraded to Chromium 76.0.3809.88, Node.js 12.4.0, and V8 7.6.303.22
  • Fixed disparity between net module headers and Node.js' http.IncomingMessage headers. #17517
  • Made ShowItemInFolder asynchronous with no return value. #17121
  • Made app log directory creation opt-in with a new function app.setAppLogsPath. #17841
  • Removed hasServiceWorker and unregisterServiceWorker APIs from the WebContents modules. #16717

Promises

Electron 6.0 continues a project started in 5.0 to improve Promise support. See the project notes for more information.

These functions now return Promises and still support older callback-based invocation:

  • contentTracing.getCategories() #16583
  • contentTracing.getCategories() #16583
  • contentTracing.getTraceBufferUsage() #16600
  • contents.executeJavaScript() #17312
  • cookies.flushStore() #16464
  • cookies.get() #16464
  • cookies.remove() #16464
  • cookies.set() #16464
  • dialog.showCertificateTrustDialog() #17181
  • inAppPurchase.getProducts() #17355
  • inAppPurchase.purchaseProduct()#17355
  • netLog.stopLogging() #16862
  • session.clearAuthCache() #17259
  • session.clearCache() #17185
  • session.clearHostResolverCache() #17229
  • session.clearStorageData() #17249
  • session.getBlobData() #17303
  • session.getCacheSize() #17185
  • session.resolveProxy() #17222
  • session.setProxy() #17222
  • webContents.hasServiceWorker() #16535
  • webContents.printToPDF() #16795
  • webContents.savePage() #16742
  • webFrame.executeJavaScript() #17312
  • webFrame.executeJavaScriptInIsolatedWorld() #17312
  • webviewTag.executeJavaScript() #17312

These functions now have two forms, synchronous and Promise-based asynchronous:

  • dialog.showMessageBox() #17298
  • dialog.showOpenDialog() #16973
  • dialog.showSaveDialog() #17054

These functions now return Promises:

Features

  • Added chrome.runtime.getManifest API for Chrome extensions. #16891
  • Added <webview>.getWebContentsId(), which does not depend of the remote module. #17407
  • Added all_frames support for Chrome extension content scripts. #17258
  • Added disableHtmlFullscreenWindowResize option to webPreferences to allow preventing window from resizing when entering HTML5 fullscreen. #17203
  • Added excludedFromShownWindowsMenu property to allow for windows to be excluded from the windows menu. #17404
  • Added process.getSystemVersion(), which is available in sandboxed renderers and returns the actual operating system version instead of kernel version on macOS. #16599
  • Added process.versions.electron to get the electron version in the forked process. #16450
  • Added renderer-process-crashed event to app, which is emitted when any renderer process crashes. #17315
  • Added requestingUrl and isMainFrame properties to the permission request and permission check handlers details objects so that apps can check the origin of the requesting frame rather than the root frame. #18772
  • Added systemPreferences.getAnimationSettings() returning system animation settings provided by Chromium. #17382
  • Added tray.getTitle() to allow users to see the title set next to the status bar icon on macOS. #17385
  • Added a new Event property triggeredByAccelerator, which is called back in custom click events on MenuItems. #16954
  • Added ability disable fetching thumbnails for in desktopCapturer.getSources(). #14906
  • Added additional error information to errors thrown when using the remote module. #17851
  • Added an option to enable MenuItems on macOS to work optionally when visible: false. #16853
  • Added file preview for file picker in Linux. #16447
  • Added flexible autoresize option for BrowserViews in BrowserWindow. #16184
  • Added native Touch ID authentication support for macOS. #16707
  • Added new app.allowRendererProcessReuse property that allows apps to disable the site instance overrides Electron has patched into Chromium. This can be used to prevent the automatic renderer process restarting that Electron currently does. #18554
  • Added new app.userAgentFallback property to allow setting the app's useragent globally. #18473
  • Added new monochrome, internal, acceleratorEnabled, colorDepth and depthPerComponent properties to the Display API Structure. #16870
  • Added new inspectSharedWorker() API to enable opening devtools for a shared worker. #16615
  • Added safer nativeImage.createFromBitmap(), which does not decode PNG/JPEG. #17337
  • Added support for Scroll Lock accelerator. #16873
  • Added world isolation to Chrome extension content scripts. #17032
  • Allowed setting working directory in app.setUserTasks() / app.setJumpList(). #18291
  • Enabled NodeIntegrationInSubFrames option usage for webview tags. #17226
  • Exposed colorSpace to the Display object. #17405
  • Feat: add native emoji and color picker methods for Windows and macOS. #17359
  • Implemented BrowserWindow.moveTop() on Linux/X11. #16629
  • Moved webFrame custom scheme APIs to browser process under protocol. #16416
  • Process now emits 'loaded' event in sandboxed renderers. #17680

Fixes

  • systemPreferences.isDarkMode() now correctly detects dark mode on macOS Catalina. #18958
  • Added missing 'page-title-updated' event on webContents to documentation. Also fixed forwarding of the explicitSet argument when emitted on BrowserWindow. #18319
  • Backported a Node.js patch that fixes an http/2 memory leak:. #18882
  • Corrected a reversal of cancellation values in showSaveDialog on the Windows platform. #18383
  • Corrected the boolean cancellation value for showOpenDialog on Windows. #18509
  • DevTools Extensions now load correctly. #17614
  • Enabled autofill popups on macOS. #16308
  • Ensured that webContents.hasServiceWorker() rejects with an error for invalid URLs. #16571
  • Ensured using the --inspect-brk argument does not cause a crash. #19332
  • Fixed Chrome extension content scripts not loading in sandboxed renderer. #16218
  • Fixed <webview> not working in scriptable popups when nativeWindowOpen is enabled. #19218
  • Fixed app.getAppPath() returning default-app path when running electron app with no package.json or electron app/index.js. Now the directory containing the executed file is returned. #18888
  • Fixed beginFrameSubscription returning blurred images on HiDPI displays. #17444
  • Fixed fs.promises APIs not working with ASAR paths. #18114
  • Fixed new-window event not being emitted from a link with target="_blank" in a sandboxed <webview> #18556
  • Fixed webContents.print() callback not returning boolean correctly in all cases. #18803
  • Fixed webFrame.setSpellCheckProvider memory leak. #16448
  • Fixed window.open() not returning null when allowpopups was not set in a sandboxed webview #18556
  • Fixed window.opener null after cross-origin navigation. #18624
  • Fixed a crash in systemPreferences.getAccentColor(). #18195
  • Fixed a crash when failed to get devices in desktopCapturer on Windows. #17973
  • Fixed a dialog crash when no BrowserWindow was passed. #18381
  • Fixed a possible crash on exit. #17879
  • Fixed a regression in Kerberos SPN generation. In the M69 upgrade, the default for the enable_negotiate_port option was inadvertently changed from false to true; this restores the former behavior and aligns with Chromium. #18285
  • Fixed accidental breaking API change in the deprecated dialog.* methods. #18724
  • Fixed an issue on Windows where calling .show() on a BrowserWindow did not focus the window. #18081
  • Fixed an issue preventing the Flash plugin from loading on Linux. #17823
  • Fixed an issue where tray.destroy was not working properly on some linux distros. #18218
  • Fixed autohide taskbar not showing when frameless window is maximized. #18373
  • Fixed bug where notifications with same tag wouldn't show more than once when first notification was auto dismissed in Windows 7. #18740
  • Fixed building with enable_run_as_node disabled. #18892
  • Fixed case where the Promise returned by loadURL and loadFile would be rejected with ERR_ABORTED if you triggered a virtual navigation before the page had finished loading. E.g. Used history.pushState or set location.hash. #18143
  • Fixed crash in BrowserWindow destructor after win.webContents.destroy(). #18793
  • Fixed crash that could occur while certain chrome devtools extensions were loaded. #19105
  • Fixed crash when Electron run from SMB network share. #17909
  • Fixed crash when creating certain types of windows in the display-* events. #19022
  • Fixed crash when quitting Electron with an inspector attached. #18077
  • Fixed crash when starting with --disable-gpu. #18904
  • Fixed electron.zip size increase regression on Linux (compared to Electron 3) by stripping swiftshader libraries (libEGL.so, libGLESv2.so). #18600
  • Fixed exiting html fullscreen mode for embedded contents. #18775
  • Fixed inconsistent behavior where modifying the buffer would change nativeImage pixels, while decoded PNG / JPEG data is a copy. #17843
  • Fixed issue where getEffectiveApperance and getAppLevelAppearance would return unknown instead of the correct value sometimes. #18690
  • Fixed issue where require('timers').setTimeout would sometimes never fire in the renderer process. #18961
  • Fixed issue where shell.openExternal would not activate opened window on macOS. #18722
  • Fixed issue where sandboxed renderers could sometimes leak globals outside of the preload script. #17712
  • Fixed issues where some chrome://* URLs would not render correctly. #18552
  • Fixed loading of node_modules inside ASAR files. #18192
  • Fixed macOS breakpad symbol files to include non-public symbols. #19155
  • Fixed offscreen rendering not working with viz compositor. #17538
  • Fixed race condition in the desktopCapturer module where some requests for sources would never be resolved or unhandled exceptions would be thrown in the main process. #18042
  • Fixed race condition where the remote module would sometimes fail to fetch properties of a remote object. #17464
  • Fixed random flicker that occurred on macOS when performing fullscreen or workspace transitions. #18885
  • Fixed setting src on <webview> being too slow. #19190
  • Fixed silent printing across platforms. #19037
  • Fixed some chrome extension communication (MessagePort.postMessage) not working. #19106
  • Fixed the input[type=file] element not showing a file dialog. #18341
  • Fixed the callback of beginFrameSubscription passing Buffer instead of NativeImage. #17548
  • Focus methods no longer steal focus when users are active on other apps. #16400
  • Improved the way frameless windows are handled on Windows. #16596
  • Injected chrome extensions that have content scripts with a . in the pattern field now treat it as a raw . instead of a wildcard. #17593
  • Migrated crashReporter to use crashpad on Windows. #18766
  • Preloaded scripts for internal <iframe> in <webview> are no longer executed when nodeIntegrationInSubFrames is enabled. #19298
  • Removed inadvertently-included mojom.js files from distribution bundle. #18486
  • Removed incorrectly published internal V8 symbols and CRT methods from node.lib, causing heap corruptions with Node.js modules using the dynamic CRT on Windows. #18619
  • Removed non-existent gpu-crashed event on <webview>. #17317
  • Spellcheck providers are now (again) called with contractions and their parts. #18538
  • The prefers-color-scheme CSS media query now works correctly. #19250
  • .executeJavaScript will never leave a Promise dangling now, scripts that fail to execute will correctly be rejected. #18714
  • Uint8Array and Uint16Array can now be sent correctly in Chrome Extension MessagePort instances. #19252
  • Fixed popup.location.* setters when nativeWindowOpen is disabled. #19494
  • Fixed an issue where windows symbol files were changed in a way that was incompatible with some symbolication tools. #19504
  • Fixed issue where sometimes asynchronous node.js methods such as http, setImmediate and fs wouldn't call their callbacks for an incredibly long amount of time. #19467
  • Fixed window menu background color when in dark mode on Windows 10. #19505

Other Changes

  • Replaced powerMonitor querySystemIdleState and querySystemIdleTime with synchronous APIs. #17144
  • Added experimental support for building for Windows on Arm. #18625
  • Converted accessibilitySupportEnabled to a proper JS property on app. #17362
  • Converted applicationMenu to a proper JS property on the app module. #17361
  • Deprecated the options argument to session.clearAuthCache. #18131
  • Enabled sandbox and disabled remote module in default_app. #17318
  • Enabled sandboxing of devtools and chrome extension background script host renderers. #16864
  • Removed Vulkan mock ICD from electron.zip, which is only meant to be used for Chromium development. #18596
  • Removed Vulkan validation layers DLLs from electron.zip, which are only meant to be used for Chromium development. #18062
  • Removed deprecated modules internally using remote.require in sandboxed renderer context. Use remote.require explicitly instead (unless the remote module is disabled). #15957
  • Removed native mksnapshot binaries for arm/arm64 as they no longer work. #17561
  • Removed special handling that forced dialog methods called over the remote module to return their result synchronously but not block the main process. #17412
  • The clipboard module in renderers no longer depends on the remote module on Linux. #17200
  • Improved the exception message thrown when require fails in sandboxed renderers. #17413

Documentation