PageSourceSearch

https://www.electronjs.org/assets/js/c898c110.eec3406d.js

js electronjs.org collected 2026-09-24 07:02:17 UTC 19,348 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunkelectronjs=self.webpackChunkelectronjs||[]).push([["10351"],{37180(e,l,n){n.r(l),n.d(l,{assets:()=>c,contentTitle:()=>o,default:()=>a,frontMatter:()=>i,metadata:()=>t,toc:()=>h});var t=n(3730),r=n(74848),s=n(28453);let i={title:"Electron 2.0.0",date:new Date("2018-05-02T00:00:00.000Z"),authors:"ckerr",slug:"electron-2-0",tags:["release"]},o,c={authorsImageUrls:[void 0]},h=[{value:"Release Process",id:"release-process",level:2},{value:"Changes / New Features",id:"changes--new-features",level:2},{value:"Breaking API changes",id:"breaking-api-changes",level:2},{value:"Bug Fixes",id:"bug-fixes",level:2},{value:"macOS",id:"macos",level:3},{value:"Linux",id:"linux",level:3},{value:"Windows",id:"windows",level:3}];function d(e){let l={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",hr:"hr",li:"li",p:"p",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(l.p,{children:["After more than four months of development, eight beta releases, and worldwide\ntesting from many apps' staged rollouts, the release of Electron 2.0.0 is now\navailable from ",(0,r.jsx)(l.a,{href:"https://electronjs.org/",children:"electronjs.org"}),"."]}),"\n",(0,r.jsx)(l.hr,{}),"\n",(0,r.jsx)(l.h2,{id:"release-process",children:"Release Process"}),"\n",(0,r.jsxs)(l.p,{children:["Starting with 2.0.0, Electron's releases will follow ",(0,r.jsx)(l.a,{href:"https://electronjs.org/blog/electron-2-semantic-boogaloo",children:"semantic versioning"}),". This means the major version will bump more often and will usually be a major update to Chromium. Patch releases should be more stable because they will contain only high-priority bug fixes."]}),"\n",(0,r.jsx)(l.p,{children:"Electron 2.0.0 also represents an improvement to how Electron is stabilized before a major release. Several large scale Electron apps have included 2.0.0 betas in staged rollouts, providing the best feedback loop Electron's ever had for a beta series."}),"\n",(0,r.jsx)(l.h2,{id:"changes--new-features",children:"Changes / New Features"}),"\n",(0,r.jsxs)(l.ul,{children:["\n",(0,r.jsx)(l.li,{children:"Major bumps to several important parts of Electron's toolchain, including Chrome 61, Node 8.9.3, V8 6.1.534.41, GTK+ 3 on Linux, updated spellchecker, and Squirrel."}),"\n",(0,r.jsxs)(l.li,{children:[(0,r.jsx)(l.a,{href:"https://electronjs.org/blog/in-app-purchases",children:"In-app purchases"}),"\nare now supported on MacOS. ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/11292",children:"#11292"})]}),"\n",(0,r.jsxs)(l.li,{children:["New API for loading files. ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/11565",children:"#11565"})]}),"\n",(0,r.jsxs)(l.li,{children:["New API to enable/disable a window. ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/11832",children:"#11832"})]}),"\n",(0,r.jsxs)(l.li,{children:["New API app.setLocale(). ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/11469",children:"#11469"})]}),"\n",(0,r.jsxs)(l.li,{children:["New support for logging IPC messages. ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/11880",children:"#11880"})]}),"\n",(0,r.jsxs)(l.li,{children:["New menu events. ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/11754",children:"#11754"})]}),"\n",(0,r.jsxs)(l.li,{children:["Add a ",(0,r.jsx)(l.code,{children:"shutdown"})," event to powerMonitor. ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/11417",children:"#11417"})]}),"\n",(0,r.jsxs)(l.li,{children:["Add ",(0,r.jsx)(l.code,{children:"affinity"})," option for gathering several BrowserWindows into a single process. ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/11501",children:"#11501"})]}),"\n",(0,r.jsxs)(l.li,{children:["Add the ability for saveDialog to list available extensions. ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/11873",children:"#11873"})]}),"\n",(0,r.jsxs)(l.li,{children:["Support for additional notification actions ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/11647",children:"#11647"})]}),"\n",(0,r.jsxs)(l.li,{children:["The ability to set macOS notification close button title. ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/11654",children:"#11654"})]}),"\n",(0,r.jsx)(l.li,{children:"Add conditional for menu.popup(window, callback)"}),"\n",(0,r.jsxs)(l.li,{children:["Memory improvements in touchbar items. ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/12527",children:"#12527"})]}),"\n",(0,r.jsx)(l.li,{children:"Improved security recommendation checklist."}),"\n",(0,r.jsxs)(l.li,{children:["Add App-Scoped Security scoped bookmarks. ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/11711",children:"#11711"})]}),"\n",(0,r.jsxs)(l.li,{children:["Add ability to set arbitrary arguments in a renderer process. ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/11850",children:"#11850"})]}),"\n",(0,r.jsxs)(l.li,{children:["Add accessory view for format picker. ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/11873",children:"#11873"})]}),"\n",(0,r.jsxs)(l.li,{children:["Fixed network delegate race condition. ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/12053",children:"#12053"})]}),"\n",(0,r.jsxs)(l.li,{children:["Drop support for the ",(0,r.jsx)(l.code,{children:"mips64el"})," arch on Linux. Electron requires the C++14 toolchain, which was\nnot available for that arch at the time of the release. We hope to re-add support in the future."]}),"\n"]}),"\n",(0,r.jsx)(l.h2,{id:"breaking-api-changes",children:"Breaking API changes"}),"\n",(0,r.jsxs)(l.ul,{children:["\n",(0,r.jsxs)(l.li,{children:["Removed ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/blob/v2.0.0-beta.8/docs/tutorial/planned-breaking-changes.md",children:"deprecated APIs"}),", including:","\n",(0,r.jsxs)(l.ul,{children:["\n",(0,r.jsxs)(l.li,{children:["Changed ",(0,r.jsx)(l.code,{children:"menu.popup"})," signature. ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/11968",children:"#11968"})]}),"\n",(0,r.jsxs)(l.li,{children:["Removed deprecated ",(0,r.jsx)(l.code,{children:"crashReporter.setExtraParameter"})," ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/11972",children:"#11972"})]}),"\n",(0,r.jsxs)(l.li,{children:["Removed deprecated ",(0,r.jsx)(l.code,{children:"webContents.setZoomLevelLimits"})," and ",(0,r.jsx)(l.code,{children:"webFrame.setZoomLevelLimits"}),". ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/11974",children:"#11974"})]}),"\n",(0,r.jsxs)(l.li,{children:["Removed deprecated ",(0,r.jsx)(l.code,{children:"clipboard"})," methods. ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/11973",children:"#11973"})]}),"\n",(0,r.jsxs)(l.li,{children:["Removed support for boolean parameters for ",(0,r.jsx)(l.code,{children:"tray.setHighlightMode"}),". ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/11981",children:"#11981"})]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(l.h2,{id:"bug-fixes",children:"Bug Fixes"}),"\n",(0,r.jsxs)(l.ul,{children:["\n",(0,r.jsxs)(l.li,{children:["Changed to make sure ",(0,r.jsx)(l.code,{children:"webContents.isOffscreen()"})," is always available. ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/12531",children:"#12531"})]}),"\n",(0,r.jsxs)(l.li,{children:["Fixed ",(0,r.jsx)(l.code,{children:"BrowserWindow.getFocusedWindow()"})," when DevTools is undocked and focused. ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/12554",children:"#12554"})]}),"\n",(0,r.jsxs)(l.li,{children:["Fixed preload not loading in sandboxed render if preload path contains special chars. ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/12643",children:"#12643"})]}),"\n",(0,r.jsxs)(l.li,{children:["Correct the default of allowRunningInsecureContent as per docs. ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/12629",children:"#12629"})]}),"\n",(0,r.jsxs)(l.li,{children:["Fixed transparency on nativeImage. ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/12683",children:"#12683"})]}),"\n",(0,r.jsxs)(l.li,{children:["Fixed issue with ",(0,r.jsx)(l.code,{children:"Menu.buildFromTemplate"}),". ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/12703",children:"#12703"})]}),"\n",(0,r.jsxs)(l.li,{children:["Confirmed menu.popup options are objects. ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/12330",children:"#12330"})]}),"\n",(0,r.jsxs)(l.li,{children:["Removed a race condition between new process creation and context release. ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/12361",children:"#12361"})]}),"\n",(0,r.jsxs)(l.li,{children:["Update draggable regions when changing BrowserView. ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/12370",children:"#12370"})]}),"\n",(0,r.jsxs)(l.li,{children:["Fixed menubar toggle alt key detection on focus. ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/12235",children:"#12235"})]}),"\n",(0,r.jsxs)(l.li,{children:["Fixed incorrect warnings in webviews. ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/12236",children:"#12236"})]}),"\n",(0,r.jsxs)(l.li,{children:["Fixed inheritance of 'show' option from parent windows. ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/122444",children:"#122444"})]}),"\n",(0,r.jsxs)(l.li,{children:["Ensure that ",(0,r.jsx)(l.code,{children:"getLastCrashReport()"})," is actually the last crash report. ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/12255",children:"#12255"})]}),"\n",(0,r.jsxs)(l.li,{children:["Fixed require on network share path. ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/12287",children:"#12287"})]}),"\n",(0,r.jsxs)(l.li,{children:["Fixed context menu click callback. ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/12170",children:"#12170"})]}),"\n",(0,r.jsxs)(l.li,{children:["Fixed popup menu position. ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/12181",children:"#12181"})]}),"\n",(0,r.jsxs)(l.li,{children:["Improved libuv loop cleanup. ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/11465",children:"#11465"})]}),"\n",(0,r.jsxs)(l.li,{children:["Fixed ",(0,r.jsx)(l.code,{children:"hexColorDWORDToRGBA"})," for transparent colors. ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/11557",children:"#11557"})]}),"\n",(0,r.jsxs)(l.li,{children:["Fixed null pointer dereference with getWebPreferences api. ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/12245",children:"#12245"})]}),"\n",(0,r.jsxs)(l.li,{children:["Fixed a cyclic reference in menu delegate. ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/11967",children:"#11967"})]}),"\n",(0,r.jsxs)(l.li,{children:["Fixed protocol filtering of net.request. ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/11657",children:"#11657"})]}),"\n",(0,r.jsxs)(l.li,{children:["WebFrame.setVisualZoomLevelLimits now sets user-agent scale constraints ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/12510",children:"#12510"})]}),"\n",(0,r.jsxs)(l.li,{children:["Set appropriate defaults for webview options. ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/12292",children:"#12292"})]}),"\n",(0,r.jsxs)(l.li,{children:["Improved vibrancy support. ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/12157",children:"#12157"})," ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/12171",children:"#12171"})," ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/11886",children:"#11886"})]}),"\n",(0,r.jsx)(l.li,{children:"Fixed timing issue in singleton fixture."}),"\n",(0,r.jsx)(l.li,{children:"Fixed broken production cache in NotifierSupp
1ortsActions()"}),"\n",(0,r.jsxs)(l.li,{children:["Made MenuItem roles camelCase-compatible. ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/11532",children:"#11532"})]}),"\n",(0,r.jsxs)(l.li,{children:["Improved touch bar updates. ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/11812",children:"#11812"}),", ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/11761",children:"#11761"}),"."]}),"\n",(0,r.jsxs)(l.li,{children:["Removed extra menu separators. ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/11827",children:"#11827"})]}),"\n",(0,r.jsxs)(l.li,{children:["Fixed Bluetooth chooser bug. Closes ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/11399",children:"#11399"}),"."]}),"\n",(0,r.jsxs)(l.li,{children:["Fixed macos Full Screen Toggle menu item label. ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/11633",children:"#11633"})]}),"\n",(0,r.jsxs)(l.li,{children:["Improved tooltip hiding when a window is deactivated. ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/11644",children:"#11644"})]}),"\n",(0,r.jsxs)(l.li,{children:["Migrated deprecated web-view method. ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/11798",children:"#11798"})]}),"\n",(0,r.jsxs)(l.li,{children:["Fixed closing a window opened from a browserview. ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/11799",children:"#11799"})]}),"\n",(0,r.jsxs)(l.li,{children:["Fixed Bluetooth chooser bug. ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/11492",children:"#11492"})]}),"\n",(0,r.jsxs)(l.li,{children:["Updated to use task scheduler for app.getFileIcon API. ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/11595",children:"#11595"})]}),"\n",(0,r.jsxs)(l.li,{children:["Changed to fire ",(0,r.jsx)(l.code,{children:"console-message"})," event even when rendering offscreen. ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/11921",children:"#11921"})]}),"\n",(0,r.jsxs)(l.li,{children:["Fixed downloading from custom protocols using ",(0,r.jsx)(l.code,{children:"WebContents.downloadURL"}),". ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/11804",children:"#11804"})]}),"\n",(0,r.jsxs)(l.li,{children:["Fixed transparent windows losing transparency when devtools detaches. ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/11956",children:"#11956"})]}),"\n",(0,r.jsxs)(l.li,{children:["Fixed Electron apps canceling restart or shutdown. ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/11625",children:"#11625"})]}),"\n"]}),"\n",(0,r.jsx)(l.h3,{id:"macos",children:"macOS"}),"\n",(0,r.jsxs)(l.ul,{children:["\n",(0,r.jsxs)(l.li,{children:["Fixed event leak on reuse of touchbar item. ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/12624",children:"#12624"})]}),"\n",(0,r.jsxs)(l.li,{children:["Fixed tray highlight in darkmode. ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/12398",children:"#12398"})]}),"\n",(0,r.jsxs)(l.li,{children:["Fixed blocking main process for async dialog. ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/12407",children:"#12407"})]}),"\n",(0,r.jsxs)(l.li,{children:["Fixed ",(0,r.jsx)(l.code,{children:"setTitle"})," tray crash. ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/12356",children:"#12356"})]}),"\n",(0,r.jsxs)(l.li,{children:["Fixed crash when setting dock menu. ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/12087",children:"#12087"})]}),"\n"]}),"\n",(0,r.jsx)(l.h3,{id:"linux",children:"Linux"}),"\n",(0,r.jsxs)(l.ul,{children:["\n",(0,r.jsxs)(l.li,{children:["Better Linux desktop notifications. ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/12229",children:"#12229"})," ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/12216",children:"#12216"})," ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/11965",children:"#11965"})," ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/11980",children:"#11980"})]}),"\n",(0,r.jsxs)(l.li,{children:["Better GTK+ theme support for menus. ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/12331",children:"#12331"})]}),"\n",(0,r.jsxs)(l.li,{children:["Exit gracefully on linux. ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/12139",children:"#12139"})]}),"\n",(0,r.jsxs)(l.li,{children:["Use the app\u2019s name as the tray icon's default tooltip. ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/12393",children:"#12393"})]}),"\n"]}),"\n",(0,r.jsx)(l.h3,{id:"windows",children:"Windows"}),"\n",(0,r.jsxs)(l.ul,{children:["\n",(0,r.jsxs)(l.li,{children:["Added Visual Studio 2017 support. ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/11656",children:"#11656"})]}),"\n",(0,r.jsxs)(l.li,{children:["Fixed passing of exception to the system crash handler. ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/12259",children:"#12259"})]}),"\n",(0,r.jsxs)(l.li,{children:["Fixed hiding tooltip from minimized window. ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/11644",children:"#11644"})]}),"\n",(0,r.jsxs)(l.li,{children:["Fixed ",(0,r.jsx)(l.code,{children:"desktopCapturer"})," to capture the correct screen. ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/11664",children:"#11664"})]}),"\n",(0,r.jsxs)(l.li,{children:["Fixed ",(0,r.jsx)(l.code,{children:"disableHardwareAcceleration"})," with transparency. ",(0,r.jsx)(l.a,{href:"https://github.com/electron/electron/pull/11704",children:"#11704"})]}),"\n"]}),"\n",(0,r.jsx)(l.h1,{id:"whats-next",children:"What's Next"}),"\n",(0,r.jsx)(l.p,{children:"The Electron team is hard at work to 
1support newer versions of Chromium, Node, and v8. Expect 3.0.0-beta.1 soon!"})]})}function a(e={}){let{wrapper:l}={...(0,s.R)(),...e.components};return l?(0,r.jsx)(l,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}},28453(e,l,n){n.d(l,{R:()=>i,x:()=>o});var t=n(96540);let r={},s=t.createContext(r);function i(e){let l=t.useContext(s);return t.useMemo(function(){return"function"==typeof e?e(l):{...l,...e}},[l,e])}function o(e){let l;return l=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:i(e.components),t.createElement(s.Provider,{value:l},e.children)}},3730(e){e.exports=JSON.parse('{"permalink":"/blog/electron-2-0","source":"@site/blog/electron-2-0.md","title":"Electron 2.0.0","description":"After more than four months of development, eight beta releases, and worldwide","date":"2018-05-02T00:00:00.000Z","tags":[{"inline":false,"label":"Release","permalink":"/blog/tags/release","description":"Blog posts about new Electron releases"}],"readingTime":6.35,"hasTruncateMarker":false,"authors":[{"name":"ckerr","url":"https://github.com/ckerr","imageURL":"https://github.com/ckerr.png?size=96","key":"ckerr","page":null}],"frontMatter":{"title":"Electron 2.0.0","date":"2018-05-02T00:00:00.000Z","authors":"ckerr","slug":"electron-2-0","tags":["release"]},"unlisted":false,"prevItem":{"title":"Internationalization Updates","permalink":"/blog/i18n-updates"},"nextItem":{"title":"Easier AutoUpdating for Open-Source Apps","permalink":"/blog/autoupdating-electron-apps"}}')}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.