Skip to main content

Electron 22.0.0

· 9 min read

Electron 22.0.0이 출시되었다! 이번 버전에는 새로운 유틸리티 프로세스 API, Windows 7/8/8.1 지원 업데이트, 그리고 Chromium 108, V8 10.8, Node.js 16.17.1로의 업그레이드가 포함되었다. 자세한 내용은 아래를 참고하자!


Electron 팀은 Electron 22.0.0의 출시를 기쁘게 발표한다! npm install electron@latest 명령어를 통해 npm으로 설치하거나 릴리스 웹사이트에서 다운로드할 수 있다. 이번 릴리스에 대한 자세한 내용은 계속 읽어보자.

피드백이 있다면 Twitter를 통해 공유하거나 Discord 커뮤니티에 참여하길 바란다. 버그와 기능 요청은 Electron의 이슈 트래커에 보고할 수 있다.

주요 변경 사항

스택 변경 사항

주요 기능

UtilityProcess API #36089

새로운 UtilityProcess 메인 프로세스 모듈은 Node.js 통합만 포함된 가벼운 Chromium 자식 프로세스를 생성할 수 있게 해준다. 또한 MessageChannel을 통해 샌드박스된 렌더러와 통신도 가능하다. 이 API는 Node.js의 child_process.fork를 기반으로 설계되어 전환이 더 쉽도록 했다. 주요 차이점은 진입점 modulePath가 패키지된 애플리케이션 내에 있어야 하며, 신뢰할 수 있는 스크립트만 로드되도록 보장한다는 점이다. 또한 이 모듈은 기본적으로 렌더러와의 통신 채널 설정을 방지하여, 메인 프로세스가 애플리케이션 내에서 유일하게 신뢰할 수 있는 프로세스라는 계약을 유지한다.

새로운 UtilityProcess API에 대한 자세한 내용은 여기서 확인할 수 있다.

Windows 7/8/8.1 지원 업데이트

info

2023/02/16: Windows Server 2012 지원 업데이트

지난달 Google은 Chrome 109이 Windows Server 2012와 Windows Server 2012 R2에 대한 중요한 보안 수정 사항을 2023년 10월 10일까지 계속 제공할 것이라고 발표했다. 이에 따라 Electron 22(Chromium 108)의 예정된 지원 종료일이 2023년 5월 30일에서 2023년 10월 10일로 연장된다. Electron 팀은 2023년 10월 10일까지 이 프로그램의 일환으로 제공되는 모든 보안 수정 사항을 Electron 22에 백포트할 예정이다.

단, Windows 7/8/8.1에 대해서는 추가적인 보안 수정 사항을 제공하지 않는다. 또한, Electron 23(Chromium 110)은 이전에 발표한 대로 Windows 10 이상에서만 작동한다.

Electron 22은 Windows 7/8/8.1을 지원하는 마지막 Electron 주요 버전이 될 것이다. Electron은 Chromium의 지원 중단 정책을 따르며, Chromium 109에서 Windows 7/8/8.1 지원을 중단할 예정이다(자세히 알아보기).

Electron 23 및 이후 주요 버전에서는 Windows 7/8/8.1을 지원하지 않는다.

주요 변경 사항

  • Linux와 Windows에서 Web Bluetooth 핀 페어링을 지원하도록 추가했다. #35416
  • LoadBrowserProcessSpecificV8Snapshot 퓨즈를 추가했다. 이 퓨즈는 메인/브라우저 프로세스가 browser_v8_context_snapshot.bin 파일에서 V8 스냅샷을 로드하도록 한다. 다른 프로세스는 현재와 동일한 경로를 사용한다. #35266
  • WebContents.opener를 추가해 윈도우 오프너에 접근할 수 있게 했다. 또한 webContents.fromFrame(frame)을 추가해 WebFrameMain 인스턴스에 해당하는 WebContents를 가져올 수 있도록 했다. #35140
  • 새로운 세션 핸들러 ses.setDisplayMediaRequestHandler를 통해 navigator.mediaDevices.getDisplayMedia를 지원하도록 추가했다. #30702

주요 API 변경 사항

Electron 22에서 도입된 주요 변경 사항은 다음과 같다. 더 자세한 내용과 향후 예정된 변경 사항은 Planned Breaking Changes 페이지에서 확인할 수 있다.

더 이상 사용되지 않음: webContents.incrementCapturerCount(stayHidden, stayAwake)

webContents.incrementCapturerCount(stayHidden, stayAwake)는 이제 더 이상 사용되지 않는다. 페이지 캡처가 완료되면 webContents.capturePage가 자동으로 처리한다.

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())
+ })

더 이상 사용되지 않음: webContents.decrementCapturerCount(stayHidden, stayAwake)

webContents.decrementCapturerCount(stayHidden, stayAwake)는 더 이상 사용되지 않는다. 이제 페이지 캡처가 완료되면 webContents.capturePage에 의해 자동으로 처리된다.

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())
+ })

제거됨: WebContents new-window 이벤트

WebContents의 new-window 이벤트가 제거되었다. 이 이벤트는 webContents.setWindowOpenHandler()로 대체되었다.

- webContents.on('new-window', (event) => {
- event.preventDefault()
- })

+ webContents.setWindowOpenHandler((details) => {
+ return { action: 'deny' }
+ })

더 이상 사용되지 않음: BrowserWindow의 scroll-touch-* 이벤트

BrowserWindow의 scroll-touch-begin, scroll-touch-end, scroll-touch-edge 이벤트는 더 이상 사용되지 않는다. 대신 WebContents에서 새로 제공되는 input-event 이벤트를 사용한다.

// 더 이상 사용되지 않음
- win.on('scroll-touch-begin', scrollTouchBegin)
- win.on('scroll-touch-edge', scrollTouchEdge)
- win.on('scroll-touch-end', scrollTouchEnd)

// 대체 코드
+ win.webContents.on('input-event', (_, event) => {
+ if (event.type === 'gestureScrollBegin') {
+ scrollTouchBegin()
+ } else if (event.type === 'gestureScrollUpdate') {
+ scrollTouchEdge()
+ } else if (event.type === 'gestureScrollEnd') {
+ scrollTouchEnd()
+ }
+ })

Electron 19.x.y 지원 종료

Electron 19.x.y는 프로젝트의 지원 정책에 따라 지원이 종료되었다. 개발자와 애플리케이션은 더 새로운 버전의 Electron으로 업그레이드하는 것을 권장한다.

E19 (2022년 5월)E20 (2022년 8월)E21 (2022년 9월)E22 (2022년 11월)E23 (2023년 1월)
19.x.y20.x.y21.x.y22.x.y23.x.y
18.x.y19.x.y20.x.y21.x.y22.x.y
17.x.y18.x.y19.x.y20.x.y21.x.y

다음은 무엇인가

Electron 프로젝트는 2022년 12월 한 달 동안 일시 중단되고, 2023년 1월에 다시 시작될 예정이다. 자세한 내용은 12월 중단 관련 블로그 글에서 확인할 수 있다.

단기적으로, 팀은 Chromium, Node, V8 등 Electron을 구성하는 주요 컴포넌트의 개발을 따라가기 위해 계속 노력할 것이다.

Electron의 공개 타임라인은 여기에서 확인할 수 있다.

향후 변경 사항에 대한 자세한 내용은 예정된 주요 변경 사항 페이지에서 찾아볼 수 있다.