1"use strict";(self.webpackChunkelectronjs=self.webpackChunkelectronjs||[]).push([["26764"],{54091(e,n,t){t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>i,default:()=>h,frontMatter:()=>l,metadata:()=>r,toc:()=>a});var r=t(47695),s=t(74848),o=t(28453);let l={title:"Electron 21.0.0",date:new Date("2022-09-27T00:00:00.000Z"),authors:["ckerr","VerteDinde","georgexu99"],slug:"electron-21-0",tags:["release"]},i,c={authorsImageUrls:[void 0,void 0,void 0]},a=[{value:"Stack Changes",id:"stack-changes",level:2},{value:"New Features",id:"new-features",level:2},{value:"Breaking & API Changes",id:"breaking--api-changes",level:2},{value:"V8 Memory Cage Enabled",id:"v8-memory-cage-enabled",level:3},{value:"Refactored webContents.printToPDF",id:"refactored-webcontentsprinttopdf",level:3},{value:"End of Support for 18.x.y",id:"end-of-support-for-18xy",level:2},{value:"What's Next",id:"whats-next",level:2}];function d(e){let n={a:"a",code:"code",h2:"h2",h3:"h3",hr:"hr",li:"li",p:"p",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,o.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n.p,{children:["Electron 21.0.0 has been released! It includes upgrades to Chromium ",(0,s.jsx)(n.code,{children:"106"}),", V8 ",(0,s.jsx)(n.code,{children:"10.6"}),", and Node.js ",(0,s.jsx)(n.code,{children:"16.16.0"}),". Read below for more details!"]}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsxs)(n.p,{children:["The Electron team is excited to announce the release of Electron 21.0.0! You can install it with npm via ",(0,s.jsx)(n.code,{children:"npm install electron@latest"})," or download it from our ",(0,s.jsx)(n.a,{href:"https://releases.electronjs.org/release?channel=stable",children:"releases website"}),". Continue reading for details about this release."]}),"\n",(0,s.jsxs)(n.p,{children:["If you have any feedback, please share it with us on Twitter, or join our community ",(0,s.jsx)(n.a,{href:"https://discord.com/invite/electronjs",children:"Discord"}),"! Bugs and feature requests can be reported in Electron's ",(0,s.jsx)(n.a,{href:"https://github.com/electron/electron/issues",children:"issue tracker"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"stack-changes",children:"Stack Changes"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["Chromium ",(0,s.jsx)(n.code,{children:"106"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://developer.chrome.com/blog/new-in-chrome-106/",children:"New in Chrome 106"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://developer.chrome.com/blog/new-in-chrome-105/",children:"New in Chrome 105"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://developer.chrome.com/blog/new-in-devtools-106/",children:"New in DevTools 106"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://developer.chrome.com/blog/new-in-devtools-105/",children:"New in DevTools 105"})}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["Node.js ",(0,s.jsx)(n.code,{children:"16.16.0"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://nodejs.org/en/blog/release/v16.16.0/",children:"Node 16.16.0 blog post"})}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["V8 ",(0,s.jsx)(n.code,{children:"10.6"})]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"new-features",children:"New Features"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["Added ",(0,s.jsx)(n.code,{children:"webFrameMain.origin"}),". ",(0,s.jsx)(n.a,{href:"https://github.com/electron/electron/pull/35534",children:"#35534"})]}),"\n",(0,s.jsxs)(n.li,{children:["Added new ",(0,s.jsx)(n.code,{children:"WebContents.ipc"})," and ",(0,s.jsx)(n.code,{children:"WebFrameMain.ipc"})," APIs. ",(0,s.jsx)(n.a,{href:"https://github.com/electron/electron/pull/35231",children:"#35231"})]}
1),"\n",(0,s.jsxs)(n.li,{children:["Added support for panel-like behavior. Window can float over full-screened apps. ",(0,s.jsx)(n.a,{href:"https://github.com/electron/electron/pull/34388",children:"#34388"})]}),"\n",(0,s.jsxs)(n.li,{children:["Added support for push notifications from APNs for macOS apps. ",(0,s.jsx)(n.a,{href:"https://github.com/electron/electron/pull/33574",children:"#33574"})]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"breaking--api-changes",children:"Breaking & API Changes"}),"\n",(0,s.jsx)(n.p,{children:"Below are breaking changes introduced in Electron 21."}),"\n",(0,s.jsx)(n.h3,{id:"v8-memory-cage-enabled",children:"V8 Memory Cage Enabled"}),"\n",(0,s.jsxs)(n.p,{children:["Electron 21 enables ",(0,s.jsx)(n.a,{href:"https://docs.google.com/document/d/1HSap8-J3HcrZvT7-5NsbYWcjfc0BVoops5TDHZNsnko/edit",children:"V8 sandboxed pointers"}),", following Chrome's ",(0,s.jsx)(n.a,{href:"https://chromiumdash.appspot.com/commit/9a6a76bf13d3ca1c6788de193afc5513919dd0ed",children:"decision to do the same in Chrome 103"}),'. This has some implications for native modules. This feature has performance and security benefits, but also places some new restrictions on
1native modules, e.g. use of ArrayBuffers that point to external ("off-heap") memory. Please see ',(0,s.jsx)(n.a,{href:"https://electronjs.org/blog/v8-memory-cage",children:"this blog post"})," for more information. ",(0,s.jsx)(n.a,{href:"https://github.com/electron/electron/pull/34724",children:"#34724"})]}),"\n",(0,s.jsx)(n.h3,{id:"refactored-webcontentsprinttopdf",children:"Refactored webContents.printToPDF"}),"\n",(0,s.jsxs)(n.p,{children:["Refactored ",(0,s.jsx)(n.code,{children:"webContents.printToPDF"})," to align with Chromium's headless implementation. See ",(0,s.jsx)(n.a,{href:"https://github.com/electron/electron/pull/33654",children:"#33654"})," for more information."]}),"\n",(0,s.jsxs)(n.p,{children:["More information about these and future changes can be found on the ",(0,s.jsx)(n.a,{href:"https://www.electronjs.org/docs/latest/breaking-changes",children:"Planned Breaking Changes"})," page."]}),"\n",(0,s.jsx)(n.h2,{id:"end-of-support-for-18xy",children:"End of Support for 18.x.y"}),"\n",(0,s.jsxs)(n.p,{children:["Electron 18.x.y has reached end-of-support as per the project's ",(0,s.jsx)(n.a,{href:"https://www.electronjs.org/docs/latest/tutorial/electron-timelines#version-support-policy",children:"support policy"}),". Developers and applications are encouraged to upgrade to a newer version of Electron."]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"E18 (Mar'22)"}),(0,s.jsx)(n.th,{children:"E19 (May'22)"}),(0,s.jsx)(n.th,{children:"E20 (Aug'22)"}),(0,s.jsx)(n.th,{children:"E21 (Sep'22)"}),(0,s.jsx)(n.th,{children:"E22 (Dec'22)"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"18.x.y"}),(0,s.jsx)(n.td,{children:"19.x.y"}),(0,s.jsx)(n.td,{children:"20.x.y"}),(0,s.jsx)(n.td,{children:"21.x.y"}),(0,s.jsx)(n.td,{children:"22.x.y"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"17.x.y"}),(0,s.jsx)(n.td,{children:"18.x.y"}),(0,s.jsx)(n.td,{children:"19.x.y"}),(0,s.jsx)(n.td,{children:"20.x.y"}),(0,s.jsx)(n.td,{children:"21.x.y"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"16.x.y"}),(0,s.jsx)(n.td,{children:"17.x.y"}),(0,s.jsx)(n.td,{children:"18.x.y"}),(0,s.jsx)(n.td,{children:"19.x.y"}),(0,s.jsx)(n.td,{children:"20.x.y"})]})]})]}),"\n",(0,s.jsx)(n.h2,{id:"whats-next",children:"What's Next"}),"\n",(0,s.jsx)(n.p,{children:"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."}),"\n",(0,s.jsxs)(n.p,{children:["You can find ",(0,s.jsx)(n.a,{href:"https://www.electronjs.org/docs/latest/tutorial/electron-timelines",children:"Electron's public timeline here"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["More information about future changes can be found on the ",(0,s.jsx)(n.a,{href:"https://github.com/electron/electron/blob/main/docs/breaking-changes.md",children:"Planned Breaking Changes"})," page."]})]})}function h(e={}){let{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},28453(e,n,t){t.d(n,{R:()=>l,x:()=>i});var r=t(96540);let s={},o=r.createContext(s);function l(e){let n=r.useContext(o);return r.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),r.createElement(o.Provider,{value:n},e.children)}},47695(e){e.exports=JSON.parse('{"permalink":"/blog/electron-21-0","source":"@site/blog/electron-21-0.md","title":"Electron 21.0.0","description":"Electron 21.0.0 has been released! It includes upgrades to Chromium 106, V8 10.6, and Node.js 16.16.0. Read below for more details!","date":"2022-09-27T00:00:00.000Z","tags":[{"inline":false,"label":"Release","permalink":"/blog/tags/release","description":"Blog posts about new Electron releases"}],"readingTime":2.62,"hasTruncateMarker":true,"authors":[{"name":"ckerr","url":"https://github.com/ckerr","imageURL":"https://github.com/ckerr.png?size=96","key":"ckerr","page":null},{"name":"VerteDinde","url":"https://github.com/VerteDinde","imageURL":"https://github.com/VerteDinde.png?size=96","key":"VerteDinde","page":null},{"name":"georgexu99","url":"https://github.com/georgexu99","imageURL":"https://github.com/georgexu99.png?size=96","key":"georgexu99","page":null}],"frontMatter":{"title":"Electron 21.0.0","date":"2022-09-27T00:00:00.000Z","authors":["ckerr","VerteDinde","georgexu99"],"slug":"electron-21-0","tags":["release"]},"unlisted":false,"prevItem":{"title":"Maintainer Summit 2022 Recap","permalink":"/blog/maintainer-summit-2022-recap"},"nextItem":{"title":"Electron 20.0.0","permalink":"/blog/electron-20-0"}}')}}]);
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.