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으로 설치하거나 릴리스 웹사이트에서 직접 다운로드할 수 있다. 이번 릴리스에 대한 자세한 내용은 계속 읽어보자.

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

주요 변경 사항

주요 사항

  • Windows에서 ASAR Integrity fuse 지원 추가 (#40504)
    • ASAR Integrity가 활성화된 기존 앱은 올바르게 설정되지 않으면 Windows에서 작동하지 않을 수 있다. Electron 패키징 도구를 사용하는 앱은 @electron/packager@18.3.1 또는 @electron/forge@7.4.0으로 업그레이드해야 한다.
    • 자세한 내용은 ASAR Integrity 튜토리얼을 참고한다.
  • WebContentsViewBaseWindow 메인 프로세스 모듈 추가, 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에서는 리사이징 동작이 일관되게 변경되었기 때문에 더 이상 해당 로직이 필요하지 않다.

제거됨: WebContentscontext-menu 이벤트에서 params.inputFormType 속성

WebContentscontext-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의 공개 타임라인은 여기서 확인할 수 있다.

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