Skip to main content

Electron 30.0.0

· 8 min read

Electron 30.0.0이 출시되었다! 이번 버전은 Chromium 124.0.6367.49, V8 12.4, 그리고 Node.js 20.11.1로 업그레이드되었다.


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

피드백이 있다면 Twitter나 Mastodon을 통해 공유하거나, 커뮤니티 Discord에 참여해보자. 버그 및 기능 요청은 Electron의 이슈 트래커에서 보고할 수 있다.

주요 변경 사항​

주요 사항​

  • Windows에서 ASAR Integrity fuse 지원 추가 (#40504)
    • ASAR Integrity가 활성화된 기존 앱은 올바르게 설정되지 않으면 Windows에서 작동하지 않을 수 있다. Electron 패키징 도구를 사용하는 앱은 @electron/packager@18.3.1 또는 @electron/forge@7.4.0으로 업그레이드해야 한다.
    • 자세한 내용은 ASAR Integrity 튜토리얼을 참고한다.
  • WebContentsView와 BaseWindow 메인 프로세스 모듈 추가, BrowserView를 대체하며 더 이상 사용되지 않음 (#35658). BrowserView에서 WebContentsView로 마이그레이션하는 방법은 이 블로그 포스트에서 확인할 수 있다.
    • BrowserView는 이제 WebContentsView를 기반으로 한 shim이며, 이전 구현은 제거되었다.
    • 새로운 WebContentsView API와 다른 유사한 API를 비교하려면 Web Embeds 문서를 참고한다.
  • File System API 지원 구현 (#41827)

스택 변경 사항​

Electron 30은 Chromium을 122.0.6261.39에서 124.0.6367.49로, Node를 20.9.0에서 20.11.1로, V8을 12.2에서 12.4로 업그레이드한다.

새로운 기능​

  • 웹뷰에 transparent 웹 환경설정을 추가했다. (#40301)
  • webContents API에 navigationHistory 인스턴스 프로퍼티와 navigationHistory.getEntryAtIndex 메서드를 추가해, 애플리케이션이 브라우징 히스토리 내의 모든 네비게이션 항목의 URL과 제목을 가져올 수 있게 했다. (#41662)
  • 새로운 BrowserWindow.isOccluded() 메서드를 추가해 앱이 윈도우의 가려짐 상태를 확인할 수 있게 했다. (#38982)
  • 유틸리티 프로세스에서 net 모듈을 사용해 만든 요청에 대한 프록시 설정 지원을 추가했다. (#41417)
  • navigator.serial에서 서비스 클래스 ID로 블루투스 포트를 요청하는 기능을 지원한다. (#41734)
  • Node.js의 NODE_EXTRA_CA_CERTS CLI 플래그를 지원한다. (#41822)

주요 변경 사항​

동작 변경: 크로스 오리진 iframe에서 기능 접근 시 Permission Policy 사용​

이제 크로스 오리진 iframe은 allow 속성을 통해 특정 iframe에서 사용 가능한 기능을 명시해야 한다. 이를 통해 해당 기능에 접근할 수 있다.

자세한 내용은 문서를 참고한다.

제거됨: --disable-color-correct-rendering 커맨드라인 스위치​

이 스위치는 공식적으로 문서화된 적은 없지만, 여기서 제거 사항을 기록한다. 크로미엄 자체가 이제 색상 공간을 더 잘 지원하므로 이 플래그가 더 이상 필요하지 않다.

변경된 동작: macOS에서 BrowserView.setAutoResize의 동작​

Electron 30에서는 BrowserView가 새로운 WebContentsView API를 기반으로 동작하도록 변경되었다.

이전에는 BrowserView API의 setAutoResize 함수가 macOS에서는 autoresizing을, Windows와 Linux에서는 커스텀 알고리즘을 사용했다. BrowserView가 전체 윈도우를 채우는 간단한 사용 사례에서는 두 접근 방식의 동작이 동일했다. 하지만 더 복잡한 경우에는 macOS의 autoresizing API와 Windows 및 Linux의 커스텀 리사이징 알고리즘이 완벽히 일치하지 않아 BrowserView가 플랫폼별로 다르게 리사이징되었다. 이제는 모든 플랫폼에서 리사이징 동작이 표준화되었다.

만약 여러분의 앱이 BrowserView.setAutoResize를 사용해 BrowserView가 전체 윈도우를 채우는 것보다 더 복잡한 작업을 수행한다면, macOS에서의 동작 차이를 처리하기 위해 이미 커스텀 로직을 구현했을 가능성이 높다. 이 경우, Electron 30에서는 리사이징 동작이 일관되게 변경되었기 때문에 더 이상 해당 로직이 필요하지 않다.

제거됨: WebContents의 context-menu 이벤트에서 params.inputFormType 속성​

WebContents의 context-menu 이벤트에서 params 객체의 inputFormType 속성이 제거되었다. 대신 새로운 formControlType 속성을 사용한다.

제거됨: process.getIOCounters()​

Chromium은 이 정보에 대한 접근을 제거했다.

27.x.y 버전 지원 종료​

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

E30 (2024년 4월)E31 (2024년 6월)E32 (2024년 8월)
30.x.y31.x.y32.x.y
29.x.y30.x.y31.x.y
28.x.y29.x.y30.x.y

다음 단계​

앞으로 짧은 기간 동안, Electron 팀은 Chromium, Node, V8 등 주요 컴포넌트의 개발 동향을 계속 따라가며 이를 유지하는 데 주력할 것으로 예상된다.

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

향후 예정된 변경 사항에 대한 자세한 정보는 계획된 주요 변경 사항 페이지에서 찾아볼 수 있다.