Electron 29.0.0
Electron 29.0.0이 출시되었다! 이번 버전은 Chromium 122.0.6261.39
, V8 12.2
, 그리고 Node.js 20.9.0
으로 업그레이드되었다.
Electron 팀은 Electron 29.0.0 출시를 기쁘게 발표한다. npm install electron@latest
명령어를 통해 npm으로 설치하거나 릴리스 웹사이트에서 다운로드할 수 있다. 이번 릴리스에 대한 자세한 내용은 계속 읽어보자.
피드백이 있다면 Twitter나 Mastodon을 통해 공유하거나, Discord 커뮤니티에 참여해 보자. 버그와 기능 요청은 Electron의 이슈 트래커에 보고할 수 있다.
주요 변경 사항
하이라이트
- 새로운 최상위
webUtils
모듈을 추가했다. 이 모듈은 렌더러 프로세스에서 Web API 객체와 상호작용하기 위한 유틸리티 계층을 제공한다. 이 모듈의 첫 번째 API는webUtils.getPathForFile
이다. 이전에 Electron의File.path
확장은 웹 표준과 달랐지만, 이 새로운 API는 현재 웹 표준 동작에 더 부합한다.
스택 변경 사항
- Chromium
122.0.6261.39
- Chrome 122 및 DevTools 122에서 새로 추가된 기능
- Chrome 121 및 DevTools 121에서 새로 추가된 기능
- Node
20.9.0
- V8
12.2
Electron 29은 Chromium을 120.0.6099.56
에서 122.0.6261.39
로, Node를 18.18.2
에서 20.9.0
로, V8을 12.0
에서 12.2
로 업그레이드한다.
새로운 기능
- Web API 객체와 상호작용하기 위한 유틸리티 계층인 새로운
webUtils
모듈을 추가해File.path
확장을 대체한다. #38776 - 유틸리티 프로세스에 net 모듈을 추가한다. #40890
file://
프로토콜이 Chromium과 동일한 더 안전하고 제한적인 동작을 선택하도록 하는 새로운 Electron Fuse인grantFileProtocolExtraPrivileges
를 추가한다. #40372- 커스텀 스킴에서 V8 코드 캐시를 허용하는 옵션을
protocol.registerSchemesAsPrivileged
에 추가한다. #40544 - macOS 13.0 이상에서
app.{set|get}LoginItemSettings(settings)
가 Apple의 새로운 권장 프레임워크를 사용하도록 마이그레이션한다. #37244
주요 변경 사항
동작 변경: ipcRenderer
를 contextBridge
를 통해 전달할 수 없음
contextBridge
를 통해 ipcRenderer
모듈 전체를 객체로 전달하려고 하면, 이제 브리지의 수신 측에서 빈 객체를 받게 된다. 이 변경은 보안상의 위험을 제거하거나 완화하기 위해 도입되었다. ipcRenderer
나 그 메서드를 직접 브리지에 노출시키면 안 된다. 대신 다음과 같이 안전한 래퍼를 제공해야 한다:
contextBridge.exposeInMainWorld('app', {
onEvent: (cb) => ipcRenderer.on('foo', (e, ...args) => cb(args)),
});
app
객체의 renderer-process-crashed
이벤트가 제거되었다. 이제 새로운 render-process-gone
이벤트를 사용해야 한다.
// 제거됨
app.on('renderer-process-crashed', (event, webContents, killed) => {
/* ... */
});
// 대체 코드
app.on('render-process-gone', (event, webContents, details) => {
/* ... */
});
제거됨: WebContents
와 <webview>
의 crashed
이벤트
WebContents
와 <webview>
의 crashed
이벤트가 제거되었다. 대신 새로운 render-process-gone
이벤트를 사용한다.
// 제거됨
win.webContents.on('crashed', (event, killed) => {
/* ... */
});
webview.addEventListener('crashed', (event) => {
/* ... */
});
// 대체 코드
win.webContents.on('render-process-gone', (event, details) => {
/* ... */
});
webview.addEventListener('render-process-gone', (event) => {
/* ... */
});
제거됨: app
의 gpu-process-crashed
이벤트
app
의 gpu-process-crashed
이벤트가 제거되었다. 이제 새로운 child-process-gone
이벤트를 사용해야 한다.
// 제거됨
app.on('gpu-process-crashed', (event, killed) => {
/* ... */
});
// 대체 코드
app.on('child-process-gone', (event, details) => {
/* ... */
});
26.x.y 버전 지원 종료
Electron 26.x.y 버전은 프로젝트의 지원 정책에 따라 지원이 종료되었다. 개발자와 애플리케이션은 더 새로운 버전의 Electron으로 업그레이드할 것을 권장한다.
E29 (2024년 2월) | E30 (2024년 4월) | E31 (2024년 6월) |
---|---|---|
29.x.y | 30.x.y | 31.x.y |
28.x.y | 29.x.y | 30.x.y |
27.x.y | 28.x.y | 29.x.y |
다음 단계
Electron이 최근 커뮤니티 RFC(Request for Comments) 프로세스를 도입한 것을 알고 있는가? 프레임워크에 새로운 기능을 추가하고 싶다면, RFC는 유지 관리자와 설계에 대해 논의를 시작할 수 있는 유용한 도구다. 또한 Pull Requests에서 논의 중인 예정된 변경 사항을 확인할 수도 있다. 더 자세한 내용은 Introducing electron/rfcs 블로그 포스트를 참고하거나 electron/rfcs 저장소의 README를 직접 확인해 보자.
단기적으로, Electron 팀은 Chromium, Node, V8 등 Electron을 구성하는 주요 컴포넌트의 개발을 따라가는 데 계속 집중할 예정이다.
Electron의 공개 타임라인은 여기서 확인할 수 있다.
향후 예정된 변경 사항에 대한 더 많은 정보는 Planned Breaking Changes 페이지에서 찾아볼 수 있다.