Skip to main content

Electron 5.0.0

· 8 min read

Electron 팀은 Electron 5.0.0 출시를 발표하게 되어 기쁘게 생각한다. npm install electron@latest 명령어를 통해 설치하거나 릴리스 페이지에서 tarball을 다운로드할 수 있다. 이번 릴리스에는 다양한 업그레이드, 수정 사항, 그리고 새로운 기능이 포함되어 있다. 여러분이 이 기능들을 활용해 무엇을 만들어낼지 기대된다! 이번 릴리스에 대한 자세한 내용은 계속해서 읽어보고, 피드백을 공유해 주길 바란다!

새로운 기능

Electron의 대부분 기능은 Chromium, Node.js, V8의 핵심 컴포넌트를 통해 제공된다. Electron은 이러한 프로젝트와 동기화를 유지하며, 사용자에게 새로운 자바스크립트 기능, 성능 개선, 보안 패치를 제공한다. Electron 5에서는 각 패키지의 주요 버전이 업데이트되었다:

Electron 5는 Electron 전용 API에도 개선 사항을 포함한다. 주요 변경 사항은 아래와 같다. 전체 변경 내역은 Electron v5.0.0 릴리스 노트에서 확인할 수 있다.

Promise 기반 API 변환

Electron 5는 Promise 기반 API 변환 프로젝트를 계속 진행하며, 기존 콜백 기반 API를 Promise 기반으로 전환하고 있다. Electron 5에서 다음 API들이 Promise 기반으로 변환되었다:

  • app.getFileIcon
  • contentTracing.getCategories
  • contentTracing.startRecording
  • contentTracing.stopRecording
  • debugger.sendCommand
  • Cookies API
  • shell.openExternal
  • webContents.loadFile
  • webContents.loadURL
  • webContents.zoomLevel
  • webContents.zoomFactor
  • win.capturePage

macOS 시스템 컬러 접근

macOS 시스템 컬러에 접근하기 위해 systemPreferences에 추가되거나 변경된 함수는 다음과 같다:

  • systemPreferences.getAccentColor
  • systemPreferences.getColor
  • systemPreferences.getSystemColor

프로세스 메모리 정보

현재 프로세스의 메모리 사용량 통계를 얻기 위해 process.getProcessMemoryInfo 함수가 추가되었다.

원격 API에 추가된 필터링 기능

remote API의 보안을 강화하기 위해 새로운 원격 이벤트가 추가되었다. 이제 remote.getBuiltin, remote.getCurrentWindow, remote.getCurrentWebContents, 그리고 <webview>.getWebContents에 대해 필터링을 적용할 수 있다.

BrowserWindow에서 여러 개의 BrowserView 사용하기

이제 BrowserWindow는 동일한 윈도우 내에서 여러 개의 BrowserView를 관리할 수 있다.

주요 변경 사항

패키지된 앱의 기본 동작

이제 패키지된 앱은 기본 앱과 동일하게 동작한다. 앱에 메뉴가 없으면 기본 애플리케이션 메뉴가 자동으로 생성된다. 또한 앱이 window-all-closed 이벤트를 처리하지 않으면 이 이벤트가 자동으로 처리된다.

혼합 샌드박스

이제 혼합 샌드박스 모드가 기본적으로 활성화된다. sandbox: true로 실행된 렌더러는 이제 실제로 샌드박스화되며, 이전에는 혼합 샌드박스 모드도 활성화된 경우에만 샌드박스화되었다.

보안 개선 사항

보안을 강화하기 위해 nodeIntegrationwebviewTag의 기본값이 이제 false로 설정되었다.

스펠체커가 비동기로 변경됨

SpellCheck API는 비동기 결과를 제공하도록 변경되었다.

Deprecations

Electron 5.0.0에서 새롭게 deprecated된 API들이 있으며, 이들은 6.0.0 버전에서 제거될 예정이다:

ARM 및 ARM64용 Mksnapshot 바이너리

ARM 및 ARM64용 네이티브 mksnapshot 바이너리는 더 이상 사용되지 않으며 6.0.0 버전에서 완전히 제거될 예정이다. ARM 및 ARM64 아키텍처용 스냅샷은 x64 바이너리를 사용해 생성할 수 있다.

WebContents의 ServiceWorker API

제거를 대비해 WebContents의 ServiceWorker API를 더 이상 사용하지 않는다.

  • webContents.hasServiceWorker
  • webContents.unregisterServiceWorker

샌드박스된 webContents에서의 자동 모듈 사용

보안성을 강화하기 위해, 아래 나열된 모듈들은 직접 require를 통해 사용하는 방식이 더 이상 권장되지 않는다. 대신, 샌드박스된 webContents 내에서 remote.require를 통해 포함해야 한다:

  • electron.screen
  • child_process
  • fs
  • os
  • path

webFrame Is독립된 세계(Isolated World) API

이전에 사용되던 webFrame.setIsolatedWorldContentSecurityPolicy, webFrame.setIsolatedWorldHumanReadableName, webFrame.setIsolatedWorldSecurityOrigin API는 webFrame.setIsolatedWorldInfo로 통합되어 더 이상 사용되지 않는다.

혼합 샌드박스

enableMixedSandbox--enable-mixed-sandbox 커맨드라인 스위치는 호환성을 위해 여전히 존재하지만, 더 이상 사용되지 않으며 아무런 효과가 없다.

2.0.x 버전 지원 종료

지원 버전 정책에 따라 2.0.x 버전의 지원이 종료되었다.

앱 피드백 프로그램

우리는 테스트를 위해 앱 피드백 프로그램을 계속 활용하고 있다. 이 프로그램에 참여하는 프로젝트들은 자신들의 앱에서 Electron 베타 버전을 테스트하고, 그 대가로 발견한 새로운 버그는 안정화 버전 출시 시 우선적으로 처리된다. 프로그램에 참여하거나 더 알아보고 싶다면 프로그램에 관한 블로그 포스트를 확인해 보길 바란다.

다음 단계

단기적으로, 팀은 Chromium, Node, V8 등 Electron을 구성하는 주요 컴포넌트의 개발 속도를 따라가기 위해 계속 노력할 것이다. 출시 일정에 대해 약속을 하지는 않지만, 대략 분기별로 이러한 컴포넌트의 새 버전과 함께 Electron의 주요 버전을 출시할 계획이다. Electron 6.0.0의 예정된 일정은 Electron 6 개발 주기의 주요 날짜를 보여준다. 또한, Electron의 버전 관리에 대한 자세한 정보는 버전 관리 문서를 참고하면 된다.

다가오는 Electron 버전에서 예정된 주요 변경 사항에 대한 정보는 예정된 주요 변경 사항 문서를 확인하면 된다.