Skip to main content

42 posts tagged with "Release"

Blog posts about new Electron releases

View All Tags

Electron 14.0.0

· 12 min read

Electron 14.0.0이 출시되었습니다! 이번 버전은 Chromium 93과 V8 9.3으로 업그레이드되었으며, 여러 API 업데이트, 버그 수정, 그리고 전반적인 개선 사항이 포함되어 있습니다. 더 자세한 내용은 아래에서 확인해 보세요!


Electron 팀은 Electron 14.0.0 출시를 발표하게 되어 기쁩니다! npm install electron@latest 명령어를 통해 npm으로 설치하거나 릴리스 웹사이트에서 직접 다운로드할 수 있습니다. 이번 릴리스에 대한 자세한 내용을 계속 읽어보시고, 여러분의 피드백을 공유해 주세요!

주요 변경 사항

Electron 릴리스 주기 변경

2021년 9월 Electron 15부터, Electron은 8주마다 새로운 주요 안정 버전을 출시한다. 자세한 내용은 여기에서 확인할 수 있다. Electron 15는 2021년 9월 1일에 베타 버전이 출시되며, 안정 버전은 2021년 9월 21일에 공개된다. Electron의 공개 타임라인은 여기에서 확인할 수 있다. 또한, Electron은 2022년 5월까지 지원 버전을 최신 3개 버전에서 최신 4개 버전으로 확대한다. Electron의 버전 관리에 대한 더 자세한 정보는 버전 관리 문서를 참고한다.

스택 변경 사항

주요 기능

  • 기본값 변경: nativeWindowOpen이 이제 기본적으로 true로 설정된다. (문서 참고)
  • 자식 윈도우는 더 이상 부모 윈도우의 BrowserWindow 생성 옵션을 상속하지 않는다. #28550
  • 세션별 데이터를 위한 디스크 경로를 얻을 수 있는 새로운 session.storagePath API가 추가되었다. #28665
  • @electron/remote에서 사용하는 process.contextId가 추가되었다. #28007
  • Electron Fuse 뒤에 실험적인 쿠키 암호화 지원이 추가되었다. #29492

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

주요 변경 사항

아래는 Electron 14에서 도입된 주요 변경 사항이다. 이 내용과 향후 변경 사항에 대한 자세한 정보는 Planned Breaking Changes 페이지에서 확인할 수 있다.

app.allowRendererProcessReuse 프로퍼티는 보안, 성능, 유지보수성을 위해 Chromium의 프로세스 모델과 더욱 긴밀하게 연동하기 위한 계획의 일환으로 제거되었다.

자세한 내용은 #18397을 참고한다.

제거됨: 브라우저 윈도우 어피니티

보안, 성능, 유지보수성을 위해 Chromium의 프로세스 모델과 더 밀접하게 통합하기 위한 계획의 일환으로, 새로운 BrowserWindow를 생성할 때 사용하던 affinity 옵션을 제거했다.

더 자세한 정보는 #18397을 참고한다.

API 변경 사항: window.open()

이제 frameName이라는 선택적 인자가 윈도우의 제목을 설정하지 않는다. 이 동작은 windowName 인자에 대한 네이티브 문서에서 설명된 사양을 따르도록 변경되었다.

만약 이 인자를 사용해 윈도우의 제목을 설정하고 있었다면, 대신 win.setTitle(title) 메서드를 사용할 수 있다.

worldSafeExecuteJavaScript가 대체 기능 없이 제거되었다. 이제 여러분의 코드가 이 속성이 활성화된 상태에서도 정상 작동하는지 확인해야 한다. 이 속성은 Electron 12부터 기본적으로 활성화되어 있었다.

이 변경 사항은 webFrame.executeJavaScript 또는 webFrame.executeJavaScriptInIsolatedWorld를 사용하는 경우에 영향을 미친다. 이제 이 메서드들이 반환하는 값이 Context Bridge API에서 지원되는지 확인해야 한다. 해당 메서드들은 동일한 값 전달 방식을 사용하기 때문이다.

변경된 기본값: nativeWindowOpentrue로 기본 설정됨

Electron 14 이전에는 window.open이 기본적으로 BrowserWindowProxy를 사용하도록 구현되어 있었다. 이로 인해 window.open('about:blank')과 같은 코드가 동기적으로 스크립트 가능한 자식 윈도우를 열지 못하는 등 여러 호환성 문제가 발생했다. 이제 nativeWindowOpen은 더 이상 실험적 기능이 아니며, 기본값으로 설정되었다.

자세한 내용은 Electron의 window.open 문서를 참고한다.

Electron 14 이전에는 window.open으로 열린 윈도우가 상위 윈도우의 transparentresizable 같은 BrowserWindow 생성자 옵션을 상속받았다. 하지만 Electron 14부터 이 동작이 제거되었으며, 새로운 윈도우는 더 이상 상위 윈도우의 BrowserWindow 생성자 옵션을 상속받지 않는다.

대신, setWindowOpenHandler를 사용해 새로운 윈도우의 옵션을 명시적으로 설정해야 한다:

webContents.setWindowOpenHandler((details) => {
return {
action: 'allow',
overrideBrowserWindowOptions: {
// ...
},
};
});

삭제: additionalFeatures

WebContentsnew-windowdid-create-window 이벤트에서 더 이상 사용되지 않는 additionalFeatures 속성이 제거되었다. new-window는 위치 기반 인자를 사용하기 때문에 해당 인자는 여전히 존재하지만, 항상 빈 배열 []로 표시된다. (참고: new-window 이벤트 자체는 이미 더 이상 사용되지 않으며 setWindowOpenHandler로 대체되었다.) 윈도우 기능에서 단순 키는 이제 옵션 객체에서 값이 true인 키로 표시된다.

// Electron 14에서 제거됨
// window.open('...', '', 'my-key')에 의해 트리거됨
webContents.on('did-create-window', (window, details) => {
if (details.additionalFeatures.includes('my-key')) {
// ...
}
});

// 대체 방법
webContents.on('did-create-window', (window, details) => {
if (details.options['my-key']) {
// ...
}
});

Electron 12에서 더 이상 사용되지 않던 remote 모듈은 이제 Electron에서 완전히 제거되었으며, 별도의 패키지인 @electron/remote로 분리되었다. @electron/remote 모듈은 메인 프로세스의 자바스크립트 객체를 렌더러 프로세스로 연결한다. 이를 통해 렌더러 프로세스에서도 마치 메인 프로세스 전용 객체에 접근하듯이 사용할 수 있다. 이 모듈은 remote 모듈을 직접 대체한다. 마이그레이션 가이드와 참고 자료는 모듈의 readme에서 확인할 수 있다.

API 변경 사항

  • 윈도우가 포커스 가능한지 확인하는 BrowserWindow.isFocusable() 메서드를 추가했다. #28642
  • WebFrameMain.visibilityState 인스턴스 프로퍼티를 추가했다. #28706
  • setWindowOpenHandler로 등록한 윈도우 열기 핸들러에 전달되는 details 객체에 disposition, referrer, postBody를 추가했다. #28518
  • @electron/remote에서 사용하는 process.contextId를 추가했다. #28007
  • Electron Fuse 뒤에 실험적인 쿠키 암호화 지원을 추가했다. #29492
  • webRequest 리스너 details 객체에서 누락된 resourceType 변환을 추가했다: font, ping, cspReport, media, webSocket. #30050
  • 세션별 데이터를 저장하는 디스크 경로를 가져오는 session.storagePath API를 추가했다. #28665
  • macOS에서 Windows Control Overlay를 지원하도록 추가했다. #29986
  • --log-file=.../path/to/file.log로 Chromium 로깅을 파일에 저장하는 기능을 추가했다. 또한, 첫 번째 JS 틱 동안 커맨드라인 스위치를 추가해 JavaScript에서 로깅을 활성화할 수 있게 되었다. #29963
  • node crypto에서 des-ede3 암호를 지원하도록 추가했다. #27897
  • 컨텍스트 브릿지 객체를 변경할 수 있는 ContextBridgeMutability 기능을 추가했다. #27348

제거/더 이상 사용되지 않는 변경 사항

다음 API는 제거되었거나 더 이상 사용되지 않는다:

  • remote 모듈은 Electron 12에서 더 이상 사용되지 않았으며, 이제 제거되었다. #25734
  • 자식 윈도우는 더 이상 부모 윈도우의 BrowserWindow 생성 옵션을 상속받지 않는다. #28550
  • new-windowdid-create-window WebContents 이벤트에서 더 이상 사용되지 않는 additionalFeatures 속성이 제거되었다. #28548
  • 더 이상 사용되지 않는 app.allowRendererProcessReuse 및 BrowserWindow affinity 옵션이 제거되었다. #26874
  • crashReporter.startsubmitURL 옵션은 uploadToServer가 false일 때 더 이상 필수 인자가 아니다. #28105

11.x.y 버전 지원 종료

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

다음 단계

앞으로 짧은 기간 동안, 팀은 Chromium, Node, V8과 같은 Electron을 구성하는 주요 컴포넌트의 개발 동향을 지속적으로 따라가며 업데이트하는 데 집중할 것이다. 릴리스 일정에 대한 약속은 조심스럽게 하겠지만, 대략 분기별로 이러한 컴포넌트의 새 버전과 함께 Electron의 주요 버전을 출시할 계획이다.

예정된 Electron 버전에서의 주요 변경 사항에 대한 정보는 Planned Breaking Changes 문서를 참고한다.

New Electron Release Cadence

· 10 min read

2021년 9월부터 Electron은 8주마다 새로운 주요 안정 버전을 출시할 예정이다.


2019년에 Electron은 Chromium의 6주 릴리스 주기에 맞추기 위해 12주 릴리스 주기로 전환했다. 최근 Chrome과 Microsoft가 발표한 변경 사항으로 인해 Electron의 현재 릴리스 주기를 재고하게 되었다:

  1. Chromium은 2021년 9월 21일 Chrome 94부터 4주마다 새로운 마일스톤을 출시할 계획이다. 이 릴리스 주기는 8주마다 모든 보안 업데이트를 포함한 Extended Stable 옵션도 추가한다.

  2. Microsoft 스토어는 Chromium 기반 앱이 최대 2개 주요 버전 이내여야 한다는 규정을 시행한다. 예를 들어, Chromium의 최신 주요 버전이 85라면, Chromium 기반 브라우저는 최소 Chromium 버전 83 이상이어야 한다. 이 규칙은 Electron 앱에도 적용된다.

2021년 9월부터 Electron은 Chromium의 8주 Extended Stable 릴리스에 맞춰 8주마다 새로운 주요 안정 버전을 출시할 예정이다.

Chromium Extended Stable과 함께 출시될 첫 번째 버전은 2021년 9월 21일Electron 15이다.

릴리스 주기 변경이 다른 하위 애플리케이션에 영향을 미칠 수 있음을 알고, 개발자 커뮤니티에 가능한 한 빨리 알리고자 한다. 2021년 릴리스 일정에 대한 자세한 내용은 계속 읽어보자.

Electron 15: 임시 알파 버전

원래 Electron 15 릴리스는 Chromium의 Extended Stable 버전이 아닌 버전을 타겟으로 했다. Chromium의 Extended Stable 버전은 짝수 번호 버전을 기반으로 하기 때문이다. 이를 위해 원래 목표 릴리스 날짜를 변경해야 했다. 하지만 Electron 앱이 Microsoft Store에 등록되려면 최신 2개의 Chromium 메이저 버전을 사용해야 한다는 조건이 있어, 두 버전을 기다리는 것은 현실적으로 불가능했다.

이 두 가지 요구사항으로 인해 우리 팀은 타이밍 문제에 직면했다. Electron 15에 Chromium M94를 포함시키면 앱 개발자들이 Chromium의 첫 번째 Extended Stable 버전을 사용할 수 있다는 장점이 있다. 하지만 이 경우 베타에서 안정화까지의 주기가 단 3주로 줄어든다는 단점이 있었다.

이러한 전환을 돕기 위해 Electron 팀은 Electron 15 릴리스에 한해 임시 알파 빌드를 제공하기로 결정했다. 이 알파 빌드는 개발자들이 Electron 15 릴리스를 테스트하고 준비할 수 있는 더 많은 시간을 제공하며, 현재의 나이틀리 빌드보다 더 안정적인 버전이다.

알파 채널 빌드는 2021년 7월 20일Electron 15로 출시될 예정이다. 이후 2021년 9월 1일에 베타 릴리스로 전환되며, 안정화 릴리스는 2021년 9월 21일을 목표로 한다. 이후 Electron 릴리스에는 알파 버전이 제공되지 않을 예정이다.

2021년 출시 계획

2021년 출시 일정은 다음과 같다:

ElectronChromeAlpha 출시Beta 출시Stable 출시Stable 주기 (주)
E13M91-2021-03-052021-05-2512
E14M93-2021-05-262021-08-3114
E15M942021-07-202021-09-012021-09-219 (알파 포함)
E16M96-2021-09-222021-11-168
E17M98-2021-11-172022-02-0111

알파 채널을 추가함으로써 Electron 15 출시 전 개발 기간이 3주에서 9주로 확장된다. 이는 Windows 스토어 제출 요건을 충족하면서도 새로운 8주 주기에 더 가깝게 맞춘 것이다.

앱 개발자를 더 지원하기 위해, 2021년 말부터 2022년 5월까지 지원 버전 정책을 최신 3개 버전에서 최신 4개 버전으로 확장한다. 즉, 업그레이드 일정을 즉시 조정할 수 없더라도 이전 버전의 Electron이 여전히 보안 업데이트와 수정을 받을 수 있다.

주요 고려 사항

이번 릴리스 주기 변경을 예정일보다 훨씬 앞서 이 글을 공개하는 데는 이유가 있다. 더 빠른 릴리스 주기가 Electron 앱에 미칠 실제 영향을 잘 알고 있으며, 이미 주요 릴리스 주기가 빠르다고 느끼는 앱도 있을 수 있다.

아래에서 주요 우려 사항을 해결하려고 노력했다:

❓ 왜 이런 변경을 했을까요? 12주 릴리스 주기를 유지하지 않은 이유는 무엇인가요?

Electron에서 최신 버전의 Chromium을 제공하려면 Chromium의 일정을 따라야 한다. Chromium의 릴리스 주기에 대한 자세한 정보는 여기에서 확인할 수 있다.

또한, 현재의 12주 릴리스 주기는 Microsoft Store의 새로운 제출 요구사항과 맞지 않는다. 최신 안정 버전의 Electron을 사용하는 앱도 새로운 보안 요구사항에 따라 약 2주 동안 앱이 거부될 가능성이 있다.

각각의 새로운 Chromium 릴리스에는 새로운 기능, 버그 수정/보안 패치, 그리고 V8 개선 사항이 포함된다. 앱 개발자로서 이러한 변경 사항을 빠르게 접할 수 있도록, 우리는 안정 버전 릴리스 날짜를 Chromium 안정 버전 릴리스와 일치시키기로 했다. 이제 앱 개발자는 이전보다 더 빠르게 새로운 Chromium과 V8의 기능 및 수정 사항을 사용할 수 있다.

기존 12주 릴리스 주기는 이미 빠른 속도로 진행되고 있다. 팀은 업그레이드를 더 쉽게 만들기 위해 어떤 조치를 취하고 있는가?

더 잦은 릴리스의 장점 중 하나는 더 작은 규모의 릴리스가 가능하다는 점이다. Electron의 주요 버전 업그레이드가 어려울 수 있다는 점을 잘 알고 있다. 더 작은 규모의 릴리스는 주요 Chromium과 Node 변경 사항을 줄이고, 릴리스당 발생하는 호환성 문제도 줄이길 기대한다.

현재로서는 지속적인 알파 릴리스를 지원할 계획이 없다. 이번 알파 버전은 Electron 15에 한정된 것으로, 개발자들이 단축된 릴리스 기간 동안 더 쉽게 업그레이드할 수 있도록 돕기 위한 목적으로 제공된다.

❓ Electron이 지원 버전 수를 확장할까?

Electron 19가 출시되는 2022년 5월까지 지원 버전 정책을 최신 3개 버전에서 최신 4개 버전으로 확장할 예정이다. Electron 19 출시 이후에는 다시 최신 3개 주요 버전과 베타, 나이틀리 릴리스를 지원할 계획이다.

E13 (2021년 5월)E14 (2021년 8월)E15 (2021년 9월)E16 (2021년 11월)E17 (2022년 2월)E18 (2022년 3월)E19 (2022년 5월)
13.x.y14.x.y15.x.y16.x.y17.x.y18.x.y19.x.y
12.x.y13.x.y14.x.y15.x.y16.x.y17.x.y18.x.y
11.x.y12.x.y13.x.y14.x.y15.x.y16.x.y17.x.y
----12.x.y13.x.y14.x.y15.x.y--

궁금한 점이 있나요?

📨 질문이나 의견이 있다면 info@electronjs.org로 메일을 보내거나 Discord에 참여해 주세요. 이번 변경이 많은 앱과 개발자에게 영향을 미칠 것임을 잘 알고 있습니다. 여러분의 의견은 매우 중요합니다. 여러분의 소리를 듣고 싶습니다!

Electron 13.0.0

· 6 min read

Electron 13.0.0이 출시되었습니다! 이번 버전은 Chromium 91과 V8 9.1로 업그레이드되었으며, 여러 API 업데이트, 버그 수정, 그리고 전반적인 개선 사항이 포함되어 있습니다. 자세한 내용은 아래를 참고하세요!


Electron 팀은 Electron 13.0.0의 출시를 기쁘게 발표합니다. npm install electron@latest 명령어를 통해 npm으로 설치하거나 릴리스 웹사이트에서 다운로드할 수 있습니다. 이번 릴리스에 대한 자세한 내용을 계속 읽어보시고, 여러분의 피드백을 공유해 주세요!

주요 변경 사항

스택 변경 사항

주요 기능

  • 현재 렌더러 컨텍스트에서 contextIsolation이 활성화되었는지 여부를 나타내는 process.contextIsolated 속성을 추가했다. #28252
  • 세션별 데이터를 위한 디스크 경로를 가져오는 새로운 session.storagePath API를 추가했다. #28866
  • WebContentsnew-window 이벤트를 더 이상 사용하지 않는다. 이는 webContents.setWindowOpenHandler()로 대체되었다.
  • @electron/remote에서 사용하는 process.contextId를 추가했다. #28251

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

주요 변경 사항

  • window.open()frameName 매개변수가 윈도우 제목으로 설정되지 않도록 변경됨. #27481
  • session.setPermissionCheckHandler(handler)의 첫 번째 매개변수인 webContentsnull을 허용하도록 변경됨. #19903

이러한 변경 사항과 향후 예정된 변경에 대한 자세한 내용은 Planned Breaking Changes 페이지에서 확인할 수 있다.

API 변경 사항

  • BrowserWindowroundedCorners 옵션 추가. #27572
  • 세션별 데이터를 저장하는 디스크 경로를 얻기 위한 새로운 session.storagePath API 추가. #28866
  • 컨텍스트 브리지를 통해 DOM 엘리먼트를 전달하는 기능 추가. #26776
  • 샌드박스된 렌더러에서 process.uptime() 지원 추가. #26684
  • context-menu 이벤트의 일부로 전달되는 파라미터에 누락된 필드 추가. #26788
  • Manifest V3 확장 서비스 워커 등록 지원 추가.
  • ServiceWorkers에 'registration-completed' 이벤트 추가. #27562

제거/사용 중단된 변경 사항

다음 API는 제거되었거나 이제 사용 중단되었다:

  • WebContentsnew-window 이벤트를 사용 중단했다. 이제 webContents.setWindowOpenHandler()로 대체한다.

  • 더 이상 사용되지 않는 shell.moveItemToTrash()를 제거했다. #26723

  • 다음은 더 이상 사용되지 않는 BrowserWindow 확장 API를 제거했다:

    • BrowserWindow.addExtension(path)
    • BrowserWindow.addDevToolsExtension(path)
    • BrowserWindow.removeExtension(name)
    • BrowserWindow.removeDevToolsExtension(name)
    • BrowserWindow.getExtensions()
    • BrowserWindow.getDevToolsExtensions()

    대신 session API를 사용한다:

    • ses.loadExtension(path)
    • ses.removeExtension(extension_id)
    • ses.getAllExtensions()
  • 다음 systemPreferences 메서드를 사용 중단했다:

    • systemPreferences.isDarkMode()
    • systemPreferences.isInvertedColorScheme()
    • systemPreferences.isHighContrastColorScheme()

    대신 다음 nativeTheme 속성을 사용한다:

    • nativeTheme.shouldUseDarkColors
    • nativeTheme.shouldUseInvertedColorScheme
    • nativeTheme.shouldUseHighContrastColors

Electron 10.x.y 지원 종료 안내

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

다음 단계

단기적으로, 팀은 Chromium, Node, V8 등 Electron을 구성하는 주요 컴포넌트의 개발 속도를 따라잡는 데 계속 집중할 예정이다. 출시 일정에 대한 약속은 신중히 하겠지만, 대략 분기별로 이러한 컴포넌트의 새 버전과 함께 Electron의 주요 버전을 출시할 계획이다. Electron 14.0.0의 예정된 일정은 Electron 14.0 개발 주기의 주요 날짜를 보여준다. 또한, 버전 관리 문서에서 Electron의 버전 관리에 대한 더 자세한 정보를 확인할 수 있다.

예정된 Electron 버전에서의 주요 변경 사항에 대한 정보는 예정된 주요 변경 사항 문서를 참고하면 된다.

Electron 12.0.0

· 9 min read

Electron 12.0.0이 출시되었다! 이번 버전에서는 Chromium 89, V8 8.9, Node.js 14.16로 업그레이드되었다. 또한 remote 모듈에 변경 사항이 추가되었고, contextIsolation의 기본값이 새롭게 설정되었으며, 새로운 webFrameMain API가 도입되었다. 그리고 전반적인 개선이 이루어졌다. 자세한 내용은 아래를 참고하라!


Electron 팀은 Electron 12.0.0 출시를 기쁘게 알린다. npm install electron@latest 명령어를 통해 npm으로 설치하거나 릴리스 웹사이트에서 다운로드할 수 있다. 이번 릴리스에 대한 자세한 내용을 계속 읽어보고, 여러분의 피드백을 공유해 주기 바란다!

주요 변경 사항

스택 변경 사항

주요 기능

  • ContextBridge의 exposeInMainWorld 메서드가 이제 객체가 아닌 API도 노출할 수 있다. #26834
  • Node 12에서 Node 14로 업그레이드했다. #23249
  • 메인 프로세스에서 WebContents 인스턴스의 하위 프레임에 접근할 수 있는 새로운 webFrameMain API를 추가했다. #25464
  • contextIsolationworldSafeExecuteJavaScript의 기본값이 이제 true로 설정되었다. #27949 #27502

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

주요 변경 사항

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

API 변경 사항

  • webFrameMain API 추가: webFrameMain 모듈은 기존 WebContents 인스턴스에서 프레임을 조회하는 데 사용할 수 있다. 이는 기존 webFrame API의 메인 프로세스 버전에 해당한다. 이 새로운 API에 대한 자세한 정보는 여기문서에서 확인할 수 있다.
  • app API 변경 사항:
    • 'child-process-gone'app.getAppMetrics()에 지역화되지 않은 serviceName 추가. #25975
    • Apple Silicon에서 Rosetta로 실행 중인지 감지할 수 있는 app.runningUnderRosettaTranslation 속성 추가. #26444
    • render-process-gone 세부 정보에 exitCode 추가 (app & webContents). #27677
  • BrowserWindow API 변경 사항:
    • BrowserWindow.isTabletMode() API 추가. #25209
    • BrowserWindowresized (Windows/macOS) 및 moved (Windows) 이벤트 추가. #26216
    • 시스템 컨텍스트 메뉴를 방지하고 재정의할 수 있는 새로운 system-context-menu 이벤트 추가. #25795
    • BrowserView를 상위로 올릴 수 있는 win.setTopBrowserView() 추가. #27713
    • 문서의 최소 크기에 따라 뷰를 조정할 수 있는 webPreferences.preferredSizeMode 추가. #25874
  • contextBridge API 변경 사항:
    • ContextBridge의 exposeInMainWorld 메서드가 비객체 API도 노출할 수 있도록 허용. #26834
  • display API 변경 사항:
    • Display 객체에 displayFrequency 속성 추가하여 Windows에서 재생 빈도 정보를 가져올 수 있도록 함. #26472
  • extensions API 변경 사항:
    • 일부 chrome.management API 지원 추가. #25098
  • MenuItem API 변경 사항:
    • macOS 공유 메뉴 표시 지원 추가. #25629
  • net API 변경 사항:
    • net.request()에 새로운 credentials 옵션 추가. #25284
    • 인터넷 연결 여부를 감지하는 net.online 추가. #21004
  • powerMonitor API 변경 사항:
    • powerMonitor.onBatteryPower 추가. #26494
    • macOS에서 빠른 사용자 전환 이벤트를 powerMonitor에 추가. #25321
  • session API 변경 사항:
    • ses.loadExtension() API에 allowFileAccess 옵션 추가. #27702
    • session.setPermissionRequestHandlerdisplay-capture API 추가. #27696
    • session.setSSLConfigdisabledCipherSuites 옵션 추가. #25818
    • sessionextension-loaded, extension-unloaded, extension-ready 이벤트 추가. #25385
    • SSL을 구성할 수 있는 session.setSSLConfig() 추가. #25461
    • session.setProxy()에서 direct, auto_detect, system 모드를 명시적으로 지정할 수 있도록 지원 추가. #24937
    • Serial API 지원 추가. #25237
    • 맞춤법 검사기를 활성화/비활성화할 수 있는 API 추가. #26276
  • shell API 변경 사항:
    • 동기식 shell.moveItemToTrash()를 대체하는 비동기식 shell.trashItem() API 추가. #25114
  • webContents API 변경 사항:
    • 렌더러 크래시 디버깅을 돕기 위한 작은 콘솔 힌트 추가. #25317
    • webRequest 핸들러의 세부 정보 객체에 framewebContents 속성 추가. #27334
    • 렌더러 프로세스를 강제로 종료하여 멈춘 렌더러를 복구할 수 있는 webContents.forcefullyCrashRenderer() 추가. #25580
    • 렌더러에서 생성된 자식 윈도우를 위한 setWindowOpenHandler API 추가 및 new-window 이벤트 사용 중단. #24517
  • webFrame API 변경 사항:
    • 렌더러에 맞춤법 검사 API 추가. #25060

제거되거나 더 이상 사용되지 않는 변경 사항

다음 API는 제거되었거나 더 이상 사용되지 않는다:

  • remote 모듈을 더 이상 사용하지 않는다. 이 모듈은 @electron/remote로 대체되었다. #25293
  • 더 이상 사용되지 않는 crashReporter API를 제거했다. #26709
  • 패키징된 앱의 기본 '도움말' 메뉴에서 Electron 웹사이트로의 링크를 제거했다. #25831

9.x.y 버전 지원 종료

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

다음 단계

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

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

Electron 11.0.0

· 6 min read

Electron 11.0.0이 출시되었습니다! 이번 버전은 Chromium 87, V8 8.7, 그리고 Node.js 12.18.3로 업그레이드되었으며, Apple 실리콘 지원과 다양한 개선 사항이 포함되었습니다. 자세한 내용은 아래를 참고하세요!


Electron 팀은 Electron 11.0.0 출시를 발표하게 되어 기쁩니다! npm install electron@latest 명령어를 통해 npm으로 설치하거나 릴리스 웹사이트에서 다운로드할 수 있습니다. 이번 릴리스에는 업그레이드, 버그 수정, 그리고 Apple M1 하드웨어에 대한 새로운 지원이 포함되어 있습니다.

이번 버전으로 무엇을 만들지 기대가 큽니다! 이번 릴리스에 대한 자세한 내용을 계속 읽어보시고, 여러분의 피드백을 공유해 주세요!

주요 변경 사항

스택 변경 사항

주요 기능

  • Apple M1 지원: 11월 10일, Apple은 새로운 M1 칩을 발표했으며, 이 칩은 곧 출시될 하드웨어에 탑재될 예정이다. Electron 11부터는 Intel Mac(x64)과 Apple의 M1 하드웨어(arm64)를 위한 별도의 Electron 버전을 제공한다. Electron 앱을 Apple M1 하드웨어에서 실행하는 방법에 대해 더 알아볼 수 있다. #24545
  • crashReport 파라미터에 V8 크래시 메시지와 위치 정보를 추가했다. #24771
  • context bridge를 통해 넓은 객체를 전송하는 성능을 개선했다. #24671

새로운 기능과 변경 사항의 전체 목록은 11.0.0 릴리스 노트에서 확인할 수 있다.

주요 변경 사항

  • 실험적 API 제거: BrowserView.{fromId, fromWebContents, getAllViews}BrowserViewid 프로퍼티가 삭제됨. #23578

이러한 변경 사항과 향후 예정된 변경에 대한 자세한 내용은 Planned Breaking Changes 페이지에서 확인할 수 있다.

API 변경 사항

  • 특정 프로토콜을 처리하는 앱에 대한 상세 정보를 반환하는 app.getApplicationInfoForProtocol() API를 추가했다. #24112
  • 파일 경로와 최대 썸네일 크기를 입력받아 파일의 미리보기 이미지를 반환하는 app.createThumbnailFromPath() API를 추가했다. #24802
  • 렌더러 프로세스를 강제로 종료하여 멈춘 렌더러를 복구하는 데 도움을 주는 webContents.forcefullyCrashRenderer()를 추가했다. #25756

8.x.y 버전 지원 종료

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

앞으로의 계획

가까운 미래에 Electron 팀은 Chromium, Node, V8 등 주요 컴포넌트의 개발 동향을 꾸준히 따라가며 업데이트에 집중할 예정이다. 정확한 출시 일정을 약속하진 않지만, 대략 분기별로 새로운 버전의 컴포넌트와 함께 Electron의 주요 버전을 출시할 계획이다. Electron 12.0.0 개발 일정에서는 Electron 12.0 개발 주기의 주요 날짜를 확인할 수 있다. 또한, Electron의 버전 관리에 대한 더 자세한 정보는 버전 관리 문서를 참고한다.

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

remote 모듈을 제거하기 위한 작업을 Electron 9에서 시작했다. 우리는 Electron 14에서 remote 모듈 자체를 제거할 계획이다.

이 제거 작업에 대한 전체 계획과 세부 사항은 이 이슈를 참고하고 따르길 바란다.

네이티브 Node 모듈을 Context Aware 또는 N-API로 요구하기 위한 마지막 단계 (Electron 12)

Electron 6부터 렌더러 프로세스에서 로드되는 네이티브 Node 모듈N-API 또는 Context Aware여야 한다는 요구사항을 준비해 왔다. 이 변경사항을 강제함으로써 보안이 강화되고, 성능이 향상되며, 유지보수 작업이 줄어든다. 이 계획의 마지막 단계는 Electron 12에서 렌더러 프로세스 재사용을 비활성화하는 기능을 제거하는 것이다.

자세한 내용과 제안된 일정을 확인하려면 이 이슈를 읽고 따라가면 된다.

Electron 10.0.0

· 9 min read

Electron 10.0.0이 출시되었다! 이번 버전은 Chromium 85, V8 8.5, Node.js 12.16으로 업그레이드되었으며, 여러 새로운 API 통합과 개선 사항이 추가되었다. 자세한 내용은 아래를 참고하자!


Electron 팀은 Electron 10.0.0 출시를 발표하게 되어 기쁘게 생각한다. npm install electron@latest 명령어를 통해 설치하거나 릴리스 웹사이트에서 다운로드할 수 있다. 이번 릴리스는 업그레이드, 수정 사항, 그리고 새로운 기능으로 가득 차 있다.

Electron 10 릴리스에서는 릴리스 노트에도 변화를 주었다. Electron 10에서 새로 추가된 내용과 이전 릴리스와의 차이점을 더 쉽게 확인할 수 있도록, Electron 10에 도입되었지만 이전 버전에도 백포팅된 변경 사항도 함께 포함했다. 이를 통해 앱 개발자들이 Electron을 업그레이드할 때 새로운 기능과 버그 수정 사항을 더 쉽게 찾을 수 있기를 바란다.

여러분이 이번 버전으로 무엇을 만들어낼지 기대가 된다! 이번 릴리스에 대한 자세한 내용을 계속 읽어보고, 피드백이 있다면 공유해 주길 바란다!

주요 변경 사항

스택 변경 사항

주요 기능

  • contents.getBackgroundThrottling() 메서드와 contents.backgroundThrottling 속성이 추가되었다. [#21036]
  • 메인 프로세스에서 desktopCapturer 모듈을 사용할 수 있게 되었다. #23548
  • 이제 ses.isPersistent() API를 호출해 주어진 session이 영구적인지 확인할 수 있다. #22622
  • 네트워크 IP 주소 변경과 ICE로 인해 RTC 호출이 연결되지 않던 문제를 해결했다. (Chromium 이슈 1113227). #24998

새로운 기능과 변경 사항의 전체 목록은 10.0.0 릴리스 노트에서 확인할 수 있다.

주요 변경 사항

  • enableRemoteModule의 기본값을 false로 변경했다. #22091
    • 이는 remote 모듈을 사용자 영역으로 옮기고 점차 폐기할 계획의 일환이다. 해당 결정의 배경과 폐기 일정에 대한 자세한 내용은 이 이슈를 참고하면 된다.
  • app.allowRendererProcessReuse의 기본값을 true로 변경했다. #22336 (Electron 9에서도 동일)
    • 이로 인해 렌더러 프로세스에서 컨텍스트를 인식하지 못하는 네이티브 모듈을 로드하지 못하게 된다. 해당 변경 사항의 배경과 폐기 일정에 대한 자세한 내용은 이 이슈를 참고하면 된다.
  • macOS에서 OS 로캘이 아랍어나 히브리어와 같은 RTL 언어로 설정된 경우 윈도우 버튼의 위치를 수정했다. 프레임리스 윈도우 앱은 스타일링 시 이 변경 사항을 고려해야 할 수 있다. #22016

이러한 변경 사항과 향후 예정된 변경 사항에 대한 자세한 내용은 Planned Breaking Changes 페이지에서 확인할 수 있다.

API 변경 사항

  • Session: 이제 ses.isPersistent() API를 호출하여 주어진 session이 지속적인지 확인할 수 있다. #22622
  • Contents: contents.getBackgroundThrottling() 메서드와 contents.backgroundThrottling 속성이 추가되었다. #21036

더 이상 사용되지 않는 API

다음 API는 이제 더 이상 사용되지 않거나 제거되었다:

  • netLog의 더 이상 사용되지 않는 currentlyLoggingPath 속성이 제거되었다. 또한 netLog.stopLogging은 더 이상 기록된 로그의 경로를 반환하지 않는다. #22732
  • crashReporter에서 압축되지 않은 크래시 업로드가 더 이상 사용되지 않는다. #23598

7.x.y 버전 지원 종료

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

다음 단계

단기적으로, 팀은 Chromium, Node, V8과 같은 Electron을 구성하는 주요 컴포넌트의 개발 속도를 따라잡는 데 계속 집중할 예정이다. 출시 일정에 대한 약속은 신중하게 다루지만, 대략 분기별로 이러한 컴포넌트의 새 버전과 함께 Electron의 새로운 주요 버전을 출시할 계획이다. 11.0.0 버전의 예정 일정은 Electron 11.0 개발 주기의 주요 날짜를 보여준다. 또한, Electron의 버전 관리에 대한 더 자세한 정보는 버전 관리 문서를 참고한다.

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

remote 모듈 폐지 작업 계속 진행 중 (Electron 11)

우리는 Electron 9에서 remote 모듈 제거 작업을 시작했으며, 이제 remote 모듈을 완전히 없애기 위한 계획을 계속 진행하고 있다. Electron 11에서는 Electron 10에서와 마찬가지로 WeakRef 구현을 위한 리팩토링 작업을 이어갈 예정이다. 폐지에 대한 전체 계획과 세부 사항은 이 이슈를 참고하길 바란다.

네이티브 Node 모듈을 Context Aware 또는 N-API로 요구하기 위한 최종 단계 (Electron 12에서)

편집: 이 블로그 포스트는 원래 Electron 11에서 렌더러 프로세스 재사용을 비활성화할 것이라고 언급했습니다. 렌더러 프로세스 재사용 비활성화는 이제 Electron 12로 연기되었습니다.

Electron 6부터, 우리는 렌더러 프로세스에서 로드되는 네이티브 Node 모듈N-API 또는 Context Aware가 되도록 요구하는 기반을 마련해 왔습니다. 이 변경을 강제함으로써 더 강력한 보안, 더 빠른 성능, 그리고 유지보수 작업의 감소를 달성할 수 있습니다. 이 계획의 최종 단계는 Electron 12에서 렌더러 프로세스 재사용을 비활성화하는 기능을 제거하는 것입니다. 자세한 내용과 제안된 타임라인은 이 이슈를 참고하세요.

Electron 9.0.0

· 8 min read

Electron 9.0.0이 출시되었다! 이번 버전은 Chromium 83, V8 8.3, 그리고 Node.js 12.14로 업그레이드되었다. 또한 스펠체커 기능을 위한 여러 새로운 API 통합이 추가되었고, PDF 뷰어가 활성화되었으며, 그 외에도 다양한 개선 사항이 포함되었다.


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

주요 변경 사항

스택 변경 내용

주요 기능

  • 맞춤법 검사 기능이 여러 측면에서 개선되었다. 자세한 내용은 #22128#22368에서 확인할 수 있다.
  • Linux에서 윈도우 이벤트 핸들러의 효율성이 향상되었다. #23260.
  • PDF 뷰어 기능이 활성화되었다. #22131.

새로운 기능과 변경 사항의 전체 목록은 9.0.0 릴리스 노트에서 확인할 수 있다.

주요 변경 사항

  • enableRemoteModule: true 없이 remote를 사용할 때 더 이상 사용되지 않는다는 경고가 표시된다. #21546
    • 이는 remote 모듈을 더 이상 사용하지 않고 사용자 영역으로 이동시키기 위한 첫 번째 단계다. 이 변경의 이유와 제안된 일정에 대한 자세한 내용은 이 이슈에서 확인할 수 있다.
  • app.enableRendererProcessReuse가 기본적으로 true로 설정된다. #22336
    • 이는 렌더러 프로세스에서 로드되는 네이티브 Node 모듈이 N-API 또는 Context Aware여야 한다는 향후 요구 사항을 위한 작업의 일환이다. 자세한 정보와 제안된 일정은 이 이슈에서 확인할 수 있다.
  • IPC를 통해 JavaScript가 아닌 객체를 전송하면 이제 예외가 발생한다. #21560
    • 이 동작은 Electron 8.0에서 더 이상 사용되지 않았다. Electron 9.0에서는 이전 직렬화 알고리즘이 제거되었고, 이제 직렬화할 수 없는 객체를 전송하면 "객체를 복제할 수 없음" 오류가 발생한다.

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

API 변경 사항

  • shell API 변경:

    • shell.openItem API가 비동기 방식의 shell.openPath API로 대체되었다. 제안서
  • session API 변경:

    • session.listWordsFromSpellCheckerDictionary API가 추가되어 사전에 등록된 커스텀 단어 목록을 확인할 수 있다. #22128
    • session.removeWordFromSpellCheckerDictionary API가 추가되어 사전에서 커스텀 단어를 제거할 수 있다. #22368
    • session.serviceWorkerContext API가 추가되어 기본적인 서비스 워커 정보에 접근하고, 서비스 워커에서 발생한 콘솔 로그를 수신할 수 있다. #22313
  • app API 변경:

    • macOS에서 app.focus()에 새로운 force 매개변수가 추가되어 앱이 강제로 포커스를 가져올 수 있다. #23447
  • BrowserWindow API 변경:

    • BrowserWindow의 일부 getter/setter 쌍에 대한 프로퍼티 접근이 지원된다. #23208

더 이상 사용되지 않는 API

다음 API는 이제 더 이상 사용되지 않거나 제거되었다:

  • shell.openItem API는 더 이상 사용되지 않으며, 비동기 방식의 shell.openPath API로 대체되었다.
  • <webview>.getWebContents는 Electron 8.0에서 더 이상 사용되지 않았으며, 이제 완전히 제거되었다.
  • webFrame.setLayoutZoomLevelLimits는 Electron 8.0에서 더 이상 사용되지 않았으며, 이제 완전히 제거되었다.

6.x.y 버전 지원 종료

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

앞으로의 계획

가까운 미래에 Electron 팀은 Chromium, Node, V8 등 주요 구성 요소의 개발 속도를 따라잡는 데 계속 집중할 예정이다. 정확한 출시 일정을 약속하기는 어렵지만, 대략 분기별로 이러한 구성 요소의 새 버전과 함께 Electron의 주요 버전을 출시할 계획이다. Electron 10.0.0의 잠정 일정은 Electron 10.0 개발 주기의 주요 날짜를 보여준다. 또한 Electron의 버전 관리에 대한 자세한 정보는 버전 관리 문서를 참고한다.

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

contextIsolation의 기본값을 false에서 true로 변경한다(이 변경은 Electron 10부터 시작됨).

contextIsolation이 비활성화된 상태에서는, 렌더러 프로세스에서 실행되는 코드가 Electron의 내부나 앱의 프리로드 스크립트에 쉽게 접근할 수 있다. 이렇게 되면, Electron이 제한하고자 했던 권한 있는 작업을 수행할 가능성이 생긴다.

이 기본값을 변경함으로써 Electron 앱의 기본 보안이 향상된다. 이제 앱은 의도적으로 보안상 취약한 동작을 선택해야 한다. Electron은 Electron 10.0에서 현재의 기본값인 contextIsolation을 더 이상 사용하지 않을 예정이며, Electron 12.0부터는 새로운 기본값(true)으로 변경할 것이다.

contextIsolation에 대한 자세한 정보와 이를 쉽게 활성화하는 방법, 그리고 보안상의 이점에 대해서는 전용 Context Isolation 문서를 참고한다.

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 모듈의 사용을 중단할 계획이다. 이 결정의 배경과 중단 일정에 대한 자세한 내용은 이 이슈를 참고하면 된다.

Electron 7.0.0

· 6 min read

Electron 7.0.0이 출시되었습니다! 이번 버전은 Chromium 78, V8 7.8, Node.js 12.8.1로 업그레이드되었습니다. 또한 Arm 64용 윈도우 릴리스, 더 빠른 IPC 메서드, 새로운 nativeTheme API 등 다양한 기능이 추가되었습니다!


Electron 팀은 Electron 7.0.0 출시를 발표하게 되어 기쁩니다! npm install electron@latest 명령어를 통해 npm으로 설치하거나 릴리스 웹사이트에서 다운로드할 수 있습니다. 이번 릴리스에는 업그레이드, 수정 사항, 그리고 새로운 기능이 가득합니다. 여러분이 이 기능들을 활용해 무엇을 만들어낼지 기대가 큽니다! 이번 릴리스에 대한 자세한 내용은 계속 읽어보시고, 피드백이 있다면 언제든지 공유해 주세요!

주요 변경 사항

  • 스택 업그레이드:

    스택Electron 6 버전Electron 7 버전새로운 기능
    Chromium76.0.3809.14678.0.3905.177, 78
    V87.67.87.7, 7.8
    Node.js12.4.012.8.112.5, 12.6, 12.7, 12.8, 12.8.1
  • Windows on Arm (64비트) 릴리스 추가. #18591, #20112

  • 비동기 요청/응답 스타일의 IPC를 위한 ipcRenderer.invoke()ipcMain.handle() 추가. 이 기능은 remote 모듈보다 강력히 권장됨. 자세한 내용은 "Electron’s ‘remote’ module considered harmful" 블로그 포스트 참조. #18449

  • 운영체제의 테마와 색상 스킴 변경을 읽고 반응하는 nativeTheme API 추가. #19758, #20486

  • 새로운 TypeScript 정의 생성기로 전환. 결과적으로 더 정확한 정의가 생성됨. 따라서 TypeScript 빌드가 실패한다면 이 변경 사항이 원인일 가능성이 높음. #18103

더 많은 변경 사항은 7.0.0 릴리스 노트에서 확인할 수 있다.

주요 변경 사항

이번 변경 사항과 향후 계획에 대한 자세한 내용은 Planned Breaking Changes 페이지에서 확인할 수 있다.

  • 더 이상 사용되지 않는 API 제거:
    • Promise를 사용하도록 업데이트된 함수의 콜백 기반 버전. #17907
    • Tray.setHighlightMode() (macOS). #18981
    • app.enableMixedSandbox() #17894
    • app.getApplicationMenu(),
    • app.setApplicationMenu(),
    • powerMonitor.querySystemIdleState(),
    • powerMonitor.querySystemIdleTime(),
    • webFrame.setIsolatedWorldContentSecurityPolicy(),
    • webFrame.setIsolatedWorldHumanReadableName(),
    • webFrame.setIsolatedWorldSecurityOrigin() #18159
  • Session.clearAuthCache()는 더 이상 캐시 항목을 필터링할 수 없다. #17970
  • macOS의 네이티브 인터페이스(메뉴, 대화상자 등)는 이제 사용자 기기의 다크 모드 설정에 자동으로 맞춰진다. #19226
  • electron 모듈이 @electron/get을 사용하도록 업데이트되었다. 이제 최소 지원 Node 버전은 Node 8이다. #18413
  • electron.asar 파일이 더 이상 존재하지 않는다. 이 파일의 존재에 의존하는 패키징 스크립트는 업데이트해야 한다. #18577

4.x.y 버전 지원 종료

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

앱 피드백 프로그램

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

다음 단계

단기적으로, Electron 팀은 Chromium, Node, V8과 같은 주요 구성 요소의 개발을 계속 따라가며 업데이트하는 데 주력할 예정이다. 릴리스 일정에 대한 약속은 자제하지만, 대략 분기별로 이러한 구성 요소의 새 버전과 함께 Electron의 새로운 주요 버전을 출시할 계획이다. Electron 8.0.0의 잠정 일정은 Electron 8 개발 주기의 주요 날짜를 보여준다. 또한, Electron 버전 관리 문서에서 버전 관리에 대한 더 자세한 정보를 확인할 수 있다.

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

Electron 6.0.0

· 8 min read

Electron 팀은 Electron 6.0.0 출시를 발표하게 되어 기쁩니다! npm install electron@latest 명령어를 통해 npm으로 설치하거나 릴리스 웹사이트에서 직접 다운로드할 수 있습니다. 이번 릴리스에는 다양한 업그레이드, 버그 수정, 그리고 새로운 기능이 포함되어 있습니다. 여러분이 이 기능들을 활용해 무엇을 만들어낼지 기대가 큽니다! 이번 릴리스에 대한 자세한 내용을 확인해 보세요. 여러분의 피드백도 언제나 환영합니다!

새로운 기능

오늘은 Electron 프로젝트에 있어서 특별한 날이다. 이번이 바로 Chrome 안정 버전동일한 날에 Electron의 안정 버전을 출시한 첫 번째 사례다! 🎉

Electron의 대부분 기능은 Chromium, Node.js, V8의 핵심 컴포넌트에 의해 제공된다. Electron은 사용자들에게 새로운 자바스크립트 기능, 성능 개선, 보안 패치를 제공하기 위해 이러한 프로젝트들과 최신 상태를 유지한다. Electron 6에서는 각 패키지의 메이저 버전이 업데이트되었다:

이번 릴리스에는 Electron API의 개선사항도 포함되어 있다. 릴리스 노트에서 더 자세한 목록을 확인할 수 있지만, 주요 내용은 다음과 같다:

프로미스화(Promisification)

Electron 6.0은 5.0에서 시작된 모던 자바스크립트 지원 개선 이니셔티브를 이어갑니다. 이번 업데이트에서는 Promise 지원을 더욱 강화했습니다.

다음 함수들은 이제 Promise를 반환하며, 기존의 콜백 기반 호출도 계속 지원합니다:

  • contentTracing.getCategories() #16583
  • contentTracing.getCategories() #16583
  • contentTracing.getTraceBufferUsage() #16600
  • contents.executeJavaScript() #17312
  • cookies.flushStore() #16464
  • cookies.get() #16464
  • cookies.remove() #16464
  • cookies.set() #16464
  • dialog.showCertificateTrustDialog() #17181
  • inAppPurchase.getProducts() #17355
  • inAppPurchase.purchaseProduct()#17355
  • netLog.stopLogging() #16862
  • session.clearAuthCache() #17259
  • session.clearCache() #17185
  • session.clearHostResolverCache() #17229
  • session.clearStorageData() #17249
  • session.getBlobData() #17303
  • session.getCacheSize() #17185
  • session.resolveProxy() #17222
  • session.setProxy() #17222
  • webContents.hasServiceWorker() #16535
  • webContents.printToPDF() #16795
  • webContents.savePage() #16742
  • webFrame.executeJavaScript() #17312
  • webFrame.executeJavaScriptInIsolatedWorld() #17312
  • webviewTag.executeJavaScript() #17312

다음 함수들은 이제 동기식과 Promise 기반 비동기식 두 가지 형태를 제공합니다:

  • dialog.showMessageBox()/dialog.showMessageBoxSync() #17298
  • dialog.showOpenDialog()/dialog.showOpenDialogSync() #16973
  • dialog.showSaveDialog()/dialog.showSaveDialogSync() #17054

다음 함수들은 이제 Promise를 반환합니다:

강화된 런타임을 활성화하기 위해 특별한 코드 서명 권한이 Helper에 부여되어야 한다. 강화된 런타임은 쓰기 가능한 실행 메모리나 다른 Team ID로 서명된 코드 로딩과 같은 기능을 제한한다.

이 권한을 필요한 프로세스 타입에만 적용하기 위해 Chromium은 Helper 앱의 세 가지 새로운 변형을 추가했다: 렌더러용 (Electron Helper (Renderer).app), GPU 프로세스용 (Electron Helper (GPU).app), 그리고 플러그인용 (Electron Helper (Plugin).app).

electron-osx-sign를 사용해 Electron 앱을 코드 서명하는 경우, 빌드 로직을 변경할 필요가 없다. 하지만 커스텀 스크립트로 코드 서명을 하는 경우, 이 세 가지 새로운 Helper 애플리케이션이 올바르게 서명되었는지 확인해야 한다.

이 새로운 Helper를 사용해 애플리케이션을 올바르게 패키징하려면 electron-packager@14.0.4 이상 버전을 사용해야 한다. electron-builder를 사용하는 경우, 이 이슈를 참고해 새로운 Helper에 대한 지원을 확인할 수 있다.

주요 변경 사항

  • 이번 릴리스는 렌더러 프로세스에서 로드되는 네이티브 Node 모듈이 N-API 또는 Context Aware여야 한다는 미래의 요구사항을 위한 기반을 마련한다. 이 변경의 목적은 더 빠른 성능, 강화된 보안, 그리고 유지보수 부담을 줄이기 위함이다. 자세한 내용과 제안된 타임라인은 이 이슈에서 확인할 수 있다. 이 변경사항은 Electron v11에서 완료될 예정이다.

  • net.IncomingMessage의 헤더가 Node.js 동작과 더 일치하도록 약간 변경되었다. 특히 set-cookie의 값과 중복 헤더 처리 방식이 조정되었다. #17517

  • shell.showItemInFolder()는 이제 void를 반환하며 비동기 호출로 변경되었다. #17121

  • 앱은 이제 app.getPath('log')를 사용하기 전에 새로운 함수 app.setAppLogPath()를 호출해 로그 경로를 명시적으로 설정해야 한다. #17841

3.x.y 버전 지원 종료

지원 정책에 따라, Electron 3.x.y 버전은 지원이 종료되었다. 개발자와 애플리케이션은 최신 버전의 Electron으로 업그레이드하는 것을 권장한다.

앱 피드백 프로그램

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

다음 단계

단기적으로, 팀은 Electron을 구성하는 주요 컴포넌트인 Chromium, Node, V8의 개발 속도를 따라잡는 데 계속 집중할 것이다. 릴리스 일정에 대한 약속은 조심스럽게 다루지만, 대략 분기별로 이러한 컴포넌트의 새 버전과 함께 Electron의 새로운 주요 버전을 출시할 계획이다. Electron 7.0.0의 예정된 일정은 Electron 7 개발 주기의 주요 날짜를 보여준다. 또한, Electron의 버전 관리에 대한 더 자세한 정보는 버전 관리 문서를 참고한다.

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