Skip to main content

Electron 8.0.0

· 10 min read

Electron 8.0.0이 출시되었다! 이번 버전에는 Chromium 80, V8 8.0, 그리고 Node.js 12.13.0으로의 업그레이드가 포함되어 있다. 또한 Chrome의 내장 맞춤법 검사기가 추가되었으며, 그 외에도 다양한 기능이 추가되었다!


Electron 팀은 Electron 8.0.0의 출시를 기쁘게 발표한다! npm install electron@latest 명령어를 통해 npm으로 설치하거나 릴리스 웹사이트에서 다운로드할 수 있다. 이번 릴리스에는 업그레이드, 수정 사항, 그리고 새로운 기능들이 가득하다. 여러분이 이를 활용해 무엇을 만들어낼지 기대가 크다! 이번 릴리스에 대한 자세한 내용은 계속 읽어보고, 의견이 있다면 공유해 주길 바란다!

주요 변경 사항

스택 변경 내역

주요 기능

  • Chrome의 내장 맞춤법 검사 기능을 구현했다. 자세한 내용은 #20692#21266에서 확인할 수 있다.
  • IPC 통신에서 이제 v8의 Structured Clone Algorithm을 사용한다. 이는 기존 로직보다 빠르고 기능이 풍부하며 예측 가능성이 높다. 또한 대용량 버퍼와 복잡한 객체 처리에서 2배의 성능 향상을 가져온다. 작은 메시지의 지연 시간은 크게 영향을 받지 않는다. 자세한 내용은 #20214에서 확인할 수 있다.

새로운 기능과 변경 사항의 전체 목록은 8.0.0 릴리스 노트를 참고한다.

주요 변경 사항

  • 컨텍스트 인식 모듈에 대한 사용 중단 경고에 모듈 이름을 표시한다. #21952
    • 이는 향후 요구사항을 위한 작업의 연장선으로, 렌더러 프로세스에서 로드되는 네이티브 Node 모듈이 N-API 또는 컨텍스트 인식 모듈이어야 한다는 내용이다. 자세한 정보와 제안된 타임라인은 이 이슈에서 확인할 수 있다.
  • IPC를 통해 전송되는 값이 이제 구조화된 복제 알고리즘(Structured Clone Algorithm)으로 직렬화된다. #20214
  • 오프스크린 렌더링은 현재 이 기능을 담당할 유지보수자가 없어 비활성화되었다. 크로미움 업그레이드 중에 문제가 발생한 후 비활성화되었다. #20772

이러한 변경 사항과 향후 예정된 변경 사항에 대한 더 자세한 정보는 예정된 주요 변경 사항 페이지에서 확인할 수 있다.

API 변경 사항

  • app API 변경 사항:

    • app.getApplicationNameForProtocol(url) 추가. #20399
    • Windows에서 app.showAboutPanel()app.setAboutPanelOptions(options) 지원 추가. #19420
  • BrowserWindow API 변경 사항:

    • hasShadow 옵션이 모든 플랫폼에서 사용 가능함을 문서에 명시. #20038
    • trafficLightPosition 옵션 추가로 트래픽 라이트 버튼의 커스텀 위치 설정 가능. #21781
    • accessibleTitle 옵션 추가로 접근 가능한 윈도우 제목 설정 가능. #19698
    • BrowserWindow.fromWebContents()가 이제 null을 반환할 수 있음. #19983
    • BrowserWindow.getMediaSourceId()BrowserWindow.moveAbove(mediaSourceId) 추가. #18926
    • macOS에서 will-move 이벤트 지원 추가. #19641
  • 이전에 문서화되지 않은 crashReporter.getCrashesDirectory()를 문서화. #20417

  • dialog API 변경 사항:

    • dialog.showOpenDialogdialog.showOpenDialogSyncdontAddToRecent 속성 추가로 Windows에서 최근 문서 목록에 추가되지 않도록 설정 가능. #19669
    • dialog.showSaveDialogdialog.showSaveDialogSync에 속성 커스터마이징 추가. #19672
  • Notification API 변경 사항:

    • Linux/Windows 사용자가 알림 타임아웃 타입을 설정할 수 있도록 timeoutType 옵션 추가. #20153
    • Linux 알림에 urgency 옵션 추가로 긴급도 설정 가능. #20152
  • session API 변경 사항:

    • session.setProxy(config)session.setCertificateVerifyProc(proc) 문서에 선택적 옵션을 명시. #19604
    • session.downloadURL(url) 추가로 BrowserWindow 없이 다운로드 트리거 가능. #19889
    • session.preconnect(options)preconnect 이벤트를 통해 HTTP 사전 연결 리소스 힌트 지원 추가. #18671
    • session.addWordToSpellCheckerDictionary 추가로 사전에 커스텀 단어 추가 가능. #21297
  • shell.moveItemToTrash(fullPath[, deleteOnFail])에 macOS에서 실패 시 동작을 지정할 수 있는 옵션 추가. #19700

  • systemPreferences API 변경 사항:

    • macOS에서 systemPreferences.getColor(color) 문서 업데이트. #20611
    • systemPreferences.getMediaAccessStatus()screen 미디어 타입 추가. #20764
  • nativeTheme.themeSource 추가로 앱이 Chromium 및 OS의 테마 선택을 재정의할 수 있음. #19960

  • TouchBar API 변경 사항:

    • TouchBarButtonTouchBarLabelaccessibilityLabel 속성 추가로 접근성 개선. #20454
    • TouchBar 관련 문서 업데이트. #19444
  • tray API 변경 사항:

    • tray.displayBalloon()iconType, largeIcon, noSound, respectQuietTime 옵션 추가. #19544
    • tray.removeBalloon() 추가로 이미 표시된 풍선 알림 제거 가능. #19547
    • tray.focus() 추가로 작업표시줄 알림 영역으로 포커스 이동 가능. #19548
  • webContents API 변경 사항:

    • contents.executeJavaScriptInIsolatedWorld(worldId, scripts[, userGesture]) 추가로 webContents API에서 executeJavaScriptInIsolatedWorld 노출. #21190
    • 숨겨진 webContents를 캡처할 수 있는 메서드 추가. #21679
    • webContents.print([options], [callback])에 페이지 헤더 및 푸터 커스터마이징 옵션 추가. #19688
    • webContents.getAllSharedWorkers()webContents.inspectSharedWorkerById(workerId)를 통해 특정 공유 워커 검사 가능. #20389
    • fitToPageEnabledscaleFactor 옵션을 WebContents.printToPDF()에 추가. #20436
  • webview.printToPDF 문서 업데이트로 반환 타입이 이제 Uint8Array임을 명시. #20505

더 이상 사용되지 않는 API

다음 API들은 이제 더 이상 사용되지 않는다:

  • BrowserWindow.setVisibleOnAllWorkspaces 내 비활성화된 visibleOnFullScreen 옵션은 다음 주요 릴리스 버전에서 제거될 예정이다. #21732
  • macOS에서 systemPreferences.getColor(color)alternate-selected-control-text는 더 이상 사용되지 않는다. #20611
  • Chromium이 해당 기능을 제거했기 때문에 webContents, webFrame, <webview> Tag에서의 setLayoutZoomLevelLimits는 더 이상 사용되지 않는다. #21296
  • app.allowRendererProcessReuse의 기본값 false는 이제 더 이상 사용되지 않는다. #21287
  • <webview>.getWebContents()는 remote 모듈에 의존하기 때문에 더 이상 사용되지 않는다. #20726

5.x.y 버전 지원 종료

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

앱 피드백 프로그램

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

다음 단계

단기적으로, 팀은 Chromium, Node, V8과 같은 Electron을 구성하는 주요 컴포넌트의 개발 속도를 따라잡는 데 계속 집중할 것이다. 릴리스 일정에 대해 약속하지 않도록 주의하지만, 대략 분기별로 새로운 버전의 컴포넌트와 함께 Electron의 새로운 메이저 버전을 출시할 계획이다. Electron 9.0.0 개발 일정은 Electron 9 개발 주기의 주요 날짜를 보여준다. 또한, 버전 관리 문서에서 Electron의 버전 관리에 대한 더 자세한 정보를 확인할 수 있다.

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

remote 모듈의 사용 중단 (Electron 9부터 시작)

보안상의 심각한 취약점으로 인해, Electron 9부터 remote 모듈의 사용을 중단할 계획이다. 이 결정의 배경과 중단 일정에 대한 자세한 내용은 이 이슈를 참고하면 된다.