Electron 33.0.0
Electron 33.0.0이 출시되었다! 이번 버전은 Chromium 130.0.6723.44, V8 13.0, 그리고 Node 20.18.0로 업그레이드되었다.
Electron 팀은 Electron 33.0.0 출시를 발표하게 되어 기쁘다! npm install electron@latest
명령어를 통해 설치하거나 릴리스 웹사이트에서 다운로드할 수 있다. 이번 릴리스에 대한 자세한 내용은 계속 읽어보자.
피드백이 있다면 Twitter나 Mastodon을 통해 공유하거나, 커뮤니티 Discord에 참여하자! 버그 및 기능 요청은 Electron의 이슈 트래커에 보고할 수 있다.
주요 변경 사항
주요 기능
- 암호화 장치의 잠금을 해제할 때 PIN이 필요한 경우를 처리하기 위해
app.setClientCertRequestPasswordHandler(handler)
핸들러를 추가했다. #41205 - 네비게이션 히스토리 관리를 더욱 효과적으로 하기 위해
navigationHistory
API에 2개의 새로운 함수를 추가했다. #42014 - 네이티브 테마의 투명도 검사 기능을 개선했다. #42862
스택 변경 사항
- Chromium
130.0.6723.44
- Node
20.18.0
- V8
13.0
Electron 33은 Chromium을 128.0.6613.36
에서 130.0.6723.44
로, Node를 20.16.0
에서 20.18.0
로, V8을 12.8
에서 13.0
으로 업그레이드한다.
새로운 기능
- PIN이 필요한 경우 암호화 장치를 잠금 해제할 수 있도록
app.setClientCertRequestPasswordHandler(handler)
핸들러를 추가했다. #41205 - V8 치명적 오류에 대한 진단 보고를 지원하기 위해 유틸리티 프로세스에 error 이벤트를 추가했다. #43997
View.setBorderRadius(radius)
를 추가해 뷰의 테두리 반경을 커스터마이징할 수 있게 했으며,WebContentsView
와도 호환된다. #42320- 더 나은 히스토리 관리를 위해
navigationHistory
API에 2개의 새로운 함수를 추가해 확장했다. #42014
주요 변경 사항
제거: macOS 10.15 지원 중단
macOS 10.15 (Catalina)는 더 이상 Chromium에서 지원하지 않는다.
이전 버전의 Electron은 Catalina에서 계속 실행되지만, Electron v33.0.0 이상 버전을 사용하려면 macOS 11 (Big Sur) 이상이 필요하다.
동작 변경: 네이티브 모듈 이제 C++20 필요
업스트림 변경 사항으로 인해, V8과 Node.js 모두 이제 최소 C++20 버전을 요구한다. 네이티브 노드 모듈을 사용하는 개발자는 --std=c++17
대신 --std=c++20
으로 모듈을 빌드해야 한다. gcc9 이하 버전을 사용하는 이미지는 컴파일을 위해 gcc10으로 업데이트해야 할 수도 있다. 자세한 내용은 #43555을 참고한다.
동작 변경: Windows에서 커스텀 프로토콜 URL 처리
Chromium의 Non-Special Scheme URLs 지원을 위한 변경으로 인해, Windows 파일 경로를 사용하는 커스텀 프로토콜 URL은 더 이상 protocol.registerFileProtocol
및 BrowserWindow.loadURL
, WebContents.loadURL
, <webview>.loadURL
의 baseURLForDataURL
속성과 함께 제대로 작동하지 않는다. protocol.handle
도 이러한 타입의 URL과 함께 작동하지 않지만, 이는 기존부터 그래왔기 때문에 변경 사항은 아니다.
// 더 이상 작동하지 않음
protocol.registerFileProtocol('other', () => {
callback({ filePath: '/path/to/my/file' });
});
const mainWindow = new BrowserWindow();
mainWindow.loadURL(
'data:text/html,<script src="loaded-from-dataurl.js"></script>',
{ baseURLForDataURL: 'other://C:\\myapp' },
);
mainWindow.loadURL('other://C:\\myapp\\index.html');
// 대체 방법
const path = require('node:path');
const nodeUrl = require('node:url');
protocol.handle(other, (req) => {
const srcPath = 'C:\\myapp\\';
const reqURL = new URL(req.url);
return net.fetch(
nodeUrl.pathToFileURL(path.join(srcPath, reqURL.pathname)).toString(),
);
});
mainWindow.loadURL(
'data:text/html,<script src="loaded-from-dataurl.js"></script>',
{ baseURLForDataURL: 'other://' },
);
mainWindow.loadURL('other://index.html');
변경된 동작: app
의 login
이벤트에서 webContents
프로퍼티
respondToAuthRequestsFromMainProcess
옵션과 함께 생성된 유틸리티 프로세스에서 발생한 요청에 대해 app
의 login
이벤트가 트리거될 때, webContents
프로퍼티는 null
이 된다.
더 이상 사용되지 않음: BrowserWindowConstructorOption.type
의 textured
옵션
BrowserWindowConstructorOptions
의 type
에 있는 textured
옵션은 대체 기능 없이 더 이상 사용되지 않는다. 이 옵션은 macOS에서 NSWindowStyleMaskTexturedBackground
스타일 마스크에 의존했는데, 이 마스크 역시 대체 기능 없이 더 이상 사용되지 않는다.
더 이상 사용되지 않음: systemPreferences.accessibilityDisplayShouldReduceTransparency
systemPreferences.accessibilityDisplayShouldReduceTransparency
속성은 더 이상 사용되지 않으며, 동일한 정보를 제공하고 크로스 플랫폼에서 작동하는 새로운 nativeTheme.prefersReducedTransparency
로 대체되었다.
// 더 이상 사용되지 않음
const shouldReduceTransparency =
systemPreferences.accessibilityDisplayShouldReduceTransparency;
// 대체 코드:
const prefersReducedTransparency = nativeTheme.prefersReducedTransparency;
30.x.y 버전 지원 종료
프로젝트의 지원 정책에 따라 Electron 30.x.y 버전의 지원이 종료되었다. 개발자와 애플리케이션은 최신 버전의 Electron으로 업그레이드하는 것을 권장한다.
E33 (2024년 10월) | E34 (2025년 1월) | E35 (2025년 4월) |
---|---|---|
33.x.y | 34.x.y | 35.x.y |
32.x.y | 33.x.y | 34.x.y |
31.x.y | 32.x.y | 33.x.y |
다음 단계
단기적으로, Electron 팀은 Chromium, Node, V8 등 Electron을 구성하는 주요 컴포넌트의 개발을 꾸준히 따라가기 위해 노력할 것이다.
Electron의 공개 타임라인에서 자세한 정보를 확인할 수 있다.
향후 예정된 변경 사항에 대한 더 많은 정보는 Planned Breaking Changes 페이지에서 찾아볼 수 있다.