Skip to main content

Electron 33.0.0

· 7 min read

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 명령어를 통해 설치하거나 릴리스 웹사이트에서 다운로드할 수 있다. 이번 릴리스에 대한 자세한 내용은 계속 읽어보자.

피드백이 있다면 TwitterMastodon을 통해 공유하거나, 커뮤니티 Discord에 참여하자! 버그 및 기능 요청은 Electron의 이슈 트래커에 보고할 수 있다.

주요 변경 사항

주요 기능

  • 암호화 장치의 잠금을 해제할 때 PIN이 필요한 경우를 처리하기 위해 app.setClientCertRequestPasswordHandler(handler) 핸들러를 추가했다. #41205
  • 네비게이션 히스토리 관리를 더욱 효과적으로 하기 위해 navigationHistory API에 2개의 새로운 함수를 추가했다. #42014
  • 네이티브 테마의 투명도 검사 기능을 개선했다. #42862

스택 변경 사항

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 필요

업스트림 변경 사항으로 인해, V8Node.js 모두 이제 최소 C++20 버전을 요구한다. 네이티브 노드 모듈을 사용하는 개발자는 --std=c++17 대신 --std=c++20으로 모듈을 빌드해야 한다. gcc9 이하 버전을 사용하는 이미지는 컴파일을 위해 gcc10으로 업데이트해야 할 수도 있다. 자세한 내용은 #43555을 참고한다.

동작 변경: Windows에서 커스텀 프로토콜 URL 처리

Chromium의 Non-Special Scheme URLs 지원을 위한 변경으로 인해, Windows 파일 경로를 사용하는 커스텀 프로토콜 URL은 더 이상 protocol.registerFileProtocolBrowserWindow.loadURL, WebContents.loadURL, <webview>.loadURLbaseURLForDataURL 속성과 함께 제대로 작동하지 않는다. 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');

변경된 동작: applogin 이벤트에서 webContents 프로퍼티

respondToAuthRequestsFromMainProcess 옵션과 함께 생성된 유틸리티 프로세스에서 발생한 요청에 대해 applogin 이벤트가 트리거될 때, webContents 프로퍼티는 null이 된다.

더 이상 사용되지 않음: BrowserWindowConstructorOption.typetextured 옵션

BrowserWindowConstructorOptionstype에 있는 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.y34.x.y35.x.y
32.x.y33.x.y34.x.y
31.x.y32.x.y33.x.y

다음 단계

단기적으로, Electron 팀은 Chromium, Node, V8 등 Electron을 구성하는 주요 컴포넌트의 개발을 꾸준히 따라가기 위해 노력할 것이다.

Electron의 공개 타임라인에서 자세한 정보를 확인할 수 있다.

향후 예정된 변경 사항에 대한 더 많은 정보는 Planned Breaking Changes 페이지에서 찾아볼 수 있다.