Electron 14.0.0
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의 버전 관리에 대한 더 자세한 정보는 버전 관리 문서를 참고한다.
스택 변경 사항
- Chromium
93
- Node.js
14.17.0
- V8
9.3
주요 기능
- 기본값 변경:
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에서 지원되는지 확인해야 한다. 해당 메서드들은 동일한 값 전달 방식을 사용하기 때문이다.
변경된 기본값: nativeWindowOpen
이 true
로 기본 설정됨
Electron 14 이전에는 window.open
이 기본적으로 BrowserWindowProxy
를 사용하도록 구현되어 있었다. 이로 인해 window.open('about:blank')
과 같은 코드가 동기적으로 스크립트 가능한 자식 윈도우를 열지 못하는 등 여러 호환성 문제가 발생했다. 이제 nativeWindowOpen
은 더 이상 실험적 기능이 아니며, 기본값으로 설정되었다.
자세한 내용은 Electron의 window.open 문서를 참고한다.
Electron 14 이전에는 window.open
으로 열린 윈도우가 상위 윈도우의 transparent
나 resizable
같은 BrowserWindow 생성자 옵션을 상속받았다. 하지만 Electron 14부터 이 동작이 제거되었으며, 새로운 윈도우는 더 이상 상위 윈도우의 BrowserWindow 생성자 옵션을 상속받지 않는다.
대신, setWindowOpenHandler
를 사용해 새로운 윈도우의 옵션을 명시적으로 설정해야 한다:
webContents.setWindowOpenHandler((details) => {
return {
action: 'allow',
overrideBrowserWindowOptions: {
// ...
},
};
});
삭제: additionalFeatures
WebContents
의 new-window
와 did-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
인스턴스 프로퍼티를 추가했다. #28706setWindowOpenHandler
로 등록한 윈도우 열기 핸들러에 전달되는 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-window
및did-create-window
WebContents 이벤트에서 더 이상 사용되지 않는additionalFeatures
속성이 제거되었다. #28548- 더 이상 사용되지 않는
app.allowRendererProcessReuse
및 BrowserWindowaffinity
옵션이 제거되었다. #26874 crashReporter.start
의submitURL
옵션은uploadToServer
가 false일 때 더 이상 필수 인자가 아니다. #28105
11.x.y 버전 지원 종료
Electron 11.x.y는 프로젝트의 지원 정책에 따라 지원이 종료되었다. 개발자와 애플리케이션은 더 새로운 버전의 Electron으로 업그레이드할 것을 권장한다.
다음 단계
앞으로 짧은 기간 동안, 팀은 Chromium, Node, V8과 같은 Electron을 구성하는 주요 컴포넌트의 개발 동향을 지속적으로 따라가며 업데이트하는 데 집중할 것이다. 릴리스 일정에 대한 약속은 조심스럽게 하겠지만, 대략 분기별로 이러한 컴포넌트의 새 버전과 함께 Electron의 주요 버전을 출시할 계획이다.
예정된 Electron 버전에서의 주요 변경 사항에 대한 정보는 Planned Breaking Changes 문서를 참고한다.