Skip to main content

42 posts tagged with "Release"

Blog posts about new Electron releases

View All Tags

Electron 34.0.0

· 5 min read

Electron 34.0.0이 출시되었다! 이번 버전은 Chromium 132.0.6834.83, V8 13.2, 그리고 Node 20.18.1로 업그레이드되었다.


Electron 팀은 Electron 34.0.0의 출시를 기쁘게 발표한다! npm install electron@latest 명령어를 통해 npm으로 설치하거나 릴리스 웹사이트에서 다운로드할 수 있다. 이번 릴리스에 대한 자세한 내용은 계속 읽어보길 바란다.

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

주요 변경 사항

주요 기능

  • 응답하지 않는 렌더러의 JavaScript 호출 스택에 접근하기 위해 WebFrameMain.collectJavaScriptCallStack()를 추가했다. #44938
  • Brotli 또는 ZStandard를 사용한 압축 효율성을 높이기 위해 공유 사전을 관리하는 새로운 API를 추가했다. 이 API는 session.getSharedDictionaryUsageInfo(), session.getSharedDictionaryInfo(options), session.clearSharedDictionaryCache(), session.clearSharedDictionaryCacheForIsolationKey(options)이다. #44950

스택 변경 사항

Electron 34은 Chromium을 130.0.6723.44에서 132.0.6834.83로, Node를 20.18.0에서 20.18.1로, 그리고 V8을 13.0에서 13.2로 업그레이드한다.

새로운 기능

  • Brotli 또는 ZStandard 압축 효율을 위해 공유 딕셔너리를 관리할 수 있는 새로운 API를 추가했다. 새로운 API는 session.getSharedDictionaryUsageInfo(), session.getSharedDictionaryInfo(options), session.clearSharedDictionaryCache(), session.clearSharedDictionaryCacheForIsolationKey(options)이다. #44950
  • 응답하지 않는 렌더러의 JavaScript 호출 스택에 접근하기 위해 WebFrameMain.collectJavaScriptCallStack()을 추가했다. #44938
  • 언로드 상태의 프레임을 위해 WebFrameMain.detached를 추가했다.
    • 프레임이 파괴되었는지 확인하기 위해 WebFrameMain.isDestroyed()를 추가했다.
    • 프레임이 언로드 상태일 때 webFrameMain.fromId(processId, frameId)가 주어진 매개변수와 일치하지 않는 WebFrameMain 인스턴스를 반환하는 문제를 수정했다. #43473
  • V8 치명적 오류에 대한 진단 보고를 지원하기 위해 유틸리티 프로세스에 오류 이벤트를 추가했다. #43774
  • GPU 가속 공유 텍스처 오프스크린 렌더링 기능을 추가했다. #42953

주요 변경 사항

동작 변경: Windows에서 전체 화면 시 메뉴 바가 숨겨짐

이 변경으로 Windows의 동작이 Linux와 동일하게 조정되었다. 기존 동작: Windows에서 전체 화면 시에도 메뉴 바가 표시됨. 새로운 동작: Windows에서 전체 화면 시 메뉴 바가 숨겨짐.

수정 사항: 이 변경 사항은 이전에 Electron 33의 주요 변경 사항으로 소개되었지만, 실제로는 Electron 34에서 처음 릴리스되었다.

31.x.y 버전 지원 종료

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

E34 (2025년 1월)E35 (2025년 4월)E36 (2025년 6월)
34.x.y35.x.y36.x.y
33.x.y34.x.y35.x.y
32.x.y33.x.y34.x.y

다음 단계

앞으로 짧은 기간 동안, Electron 팀은 Chromium, Node, V8과 같은 주요 컴포넌트의 개발 동향을 계속 따라가며 이를 유지하는 데 주력할 것이다.

Electron의 공개 타임라인은 여기에서 확인할 수 있다.

향후 변경 사항에 대한 더 자세한 정보는 Planned Breaking Changes 페이지에서 찾을 수 있다.

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 페이지에서 찾아볼 수 있다.

Electron 32.0.0

· 7 min read

Electron 32.0.0이 출시되었습니다! 이번 버전은 Chromium 128.0.6613.36, V8 12.8, 그리고 Node 20.16.0으로 업그레이드되었습니다.


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

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

주요 변경 사항

하이라이트

  • Google Summer of Code 프로젝트의 일환으로 @piotrpdev가 개발한 새로운 API 버전 히스토리 기능을 문서에 추가했다. 자세한 내용은 이 블로그 포스트에서 확인할 수 있다. #42982
  • 웹 File API에서 비표준 확장자인 File.path를 제거했다. #42053
  • Web File System API에서 차단된 경로의 파일이나 디렉토리를 열려고 할 때의 실패 경로를 업스트림과 맞췄다. #42993
  • webcontents.navigationHistory에 기존 네비게이션 관련 API인 canGoBack, goBack, canGoForward, goForward, canGoToOffset, goToOffset, clear를 추가했다. 이전 네비게이션 API는 이제 더 이상 사용되지 않는다. #41752

스택 변경 사항

Electron 32는 Chromium을 126.0.6478.36에서 128.0.6613.36으로, Node를 20.14.0에서 20.16.0으로, 그리고 V8을 12.6에서 12.8로 업그레이드한다.

새로운 기능

  • app 모듈의 'login' 이벤트를 통해 유틸리티 프로세스에서 시작된 인증 요청에 응답할 수 있는 기능을 추가했다. #43317
  • CPUUsage 구조체에 cumulativeCPUUsage 속성을 추가했다. 이 속성은 프로세스 시작 이후 사용된 총 CPU 시간(초)을 반환한다. #41819
  • webContents.navigationHistory에 기존 네비게이션 관련 API를 추가했다. 추가된 API는 canGoBack, goBack, canGoForward, goForward, canGoToOffset, goToOffset, clear이다. #41752
  • WebContentsView가 기존 webContents 객체를 받아들일 수 있도록 기능을 확장했다. #42086
  • nativeTheme에 새로운 속성 prefersReducedTransparency를 추가했다. 이 속성은 사용자가 시스템 접근성 설정을 통해 OS 수준의 투명도를 줄이도록 선택했는지 여부를 나타낸다. #43137
  • 차단된 경로에서 파일 또는 디렉터리를 열려고 시도할 때 File System Access API의 실패 경로를 업스트림과 일치시켰다. #42993
  • Linux에서 Windows Control Overlay API를 활성화했다. #42681
  • 네트워크 요청에서 zstd 압축을 활성화했다. #43300

주요 변경 사항

제거됨: File.path

File 객체의 비표준 path 프로퍼티는 초기 Electron 버전에서 추가되었다. 당시 렌더러 프로세스에서 모든 작업을 처리하는 것이 일반적이었기 때문에, 네이티브 파일 작업을 편리하게 하기 위해 도입되었다. 하지만 이는 표준에서 벗어난 방식이며, 사소한 보안 위험도 내포하고 있다. 따라서 Electron 32.0부터는 이 프로퍼티를 제거하고, 대신 webUtils.getPathForFile 메서드를 사용하도록 변경했다.

// 이전 (렌더러)
const file = document.querySelector('input[type=file]');
alert(`업로드된 파일 경로: ${file.path}`);
// 이후 (렌더러)
const file = document.querySelector('input[type=file]');
electron.showFilePath(file);

// 이후 (프리로드)
const { contextBridge, webUtils } = require('electron');

contextBridge.exposeInMainWorld('electron', {
showFilePath(file) {
// 가능하다면 웹 콘텐츠에 전체 파일 경로를 노출하지 않는 것이 좋다.
const path = webUtils.getPathForFile(file);
alert(`업로드된 파일 경로: ${path}`);
},
});

더 이상 사용되지 않는 API: clearHistory, canGoBack, goBack, canGoForward, goForward, goToIndex, canGoToOffset, goToOffset on WebContents

WebContents 인스턴스에서 네비게이션 관련 API는 이제 더 이상 사용되지 않는다. 이 API들은 네비게이션 기록을 관리하기 위해 더 구조적이고 직관적인 인터페이스를 제공하기 위해 WebContentsnavigationHistory 속성으로 이동했다.

// 더 이상 사용되지 않는 API
win.webContents.clearHistory();
win.webContents.canGoBack();
win.webContents.goBack();
win.webContents.canGoForward();
win.webContents.goForward();
win.webContents.goToIndex(index);
win.webContents.canGoToOffset();
win.webContents.goToOffset(index);

// 대체 방법
win.webContents.navigationHistory.clear();
win.webContents.navigationHistory.canGoBack();
win.webContents.navigationHistory.goBack();
win.webContents.navigationHistory.canGoForward();
win.webContents.navigationHistory.goForward();
win.webContents.navigationHistory.canGoToOffset();
win.webContents.navigationHistory.goToOffset(index);

29.x.y 버전 지원 종료

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

E32 (2024년 8월)E33 (2024년 10월)E34 (2025년 1월)
32.x.y33.x.y34.x.y
31.x.y32.x.y33.x.y
30.x.y31.x.y32.x.y

다음 단계

단기적으로, Electron 팀은 Chromium, Node, V8과 같은 주요 컴포넌트의 개발에 발맞추는 데 계속 집중할 것이다.

Electron의 공개 타임라인을 통해 현재 진행 상황을 확인할 수 있다.

미래의 주요 변경 사항에 대한 자세한 정보는 예정된 주요 변경 사항 페이지에서 찾아볼 수 있다.

Electron 31.0.0

· 6 min read

Electron 31.0.0이 출시되었다! 이번 버전은 Chromium 126.0.6478.36, V8 12.6, 그리고 Node 20.14.0으로 업그레이드되었다.


Electron 팀은 Electron 31.0.0의 출시를 기쁘게 발표한다! 여러분은 npm install electron@latest 명령어를 통해 설치하거나 릴리스 웹사이트에서 다운로드할 수 있다. 이번 릴리스에 대한 자세한 내용은 계속 읽어보자.

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

주요 변경 사항

주요 업데이트

  • WebContentsView가 기존 webContents 객체를 받아들일 수 있도록 확장. #42319
  • NODE_EXTRA_CA_CERTS 지원 추가. #41689
  • macOS에서 window.flashFrame(bool)이 지속적으로 깜빡이도록 업데이트. #41391
  • WebSQL 지원 제거 #41868
  • nativeImage.toDataURL이 PNG 색상 공간을 보존하도록 변경 #41610
  • webContents.setWindowOpenHandler가 수동으로 BrowserWindow를 생성할 수 있도록 확장. #41432

스택 변경 사항

Electron 31은 Chromium을 124.0.6367.49에서 126.0.6478.36으로, Node를 20.11.1에서 20.14.0으로, V8을 12.4에서 12.6으로 업그레이드했다.

새로운 기능

  • SessionclearData 메서드를 추가했다. #40983
    • Session.clearData API에 options 파라미터를 추가했다. #41355
  • navigator.serial에서 서비스 클래스 ID를 통해 Bluetooth 포트를 요청할 수 있는 기능을 추가했다. #41638
  • Node.js의 NODE_EXTRA_CA_CERTS 환경 변수를 지원하도록 추가했다. #41689
  • webContents.setWindowOpenHandlerBrowserWindow를 수동으로 생성할 수 있도록 기능을 확장했다. #41432
  • 웹 표준 File System API를 지원하도록 구현했다. #41419
  • WebContentsView가 기존 WebContents 인스턴스를 받아들일 수 있도록 기능을 확장했다. #42319
  • webContents API에 navigationHistory 인스턴스 프로퍼티와 navigationHistory.getEntryAtIndex 메서드를 추가해, 애플리케이션이 브라우징 기록 내의 모든 네비게이션 항목의 URL과 제목을 조회할 수 있게 했다. #41577 (또한 29, 30에서도 확인 가능)

주요 변경 사항

제거됨: WebSQL 지원

Chromium은 WebSQL 지원을 제거하고 Android 플랫폼으로만 이전했다. 자세한 내용은 Chromium의 제거 의도 논의를 참고한다.

변경된 동작: nativeImage.toDataURL이 PNG 컬러스페이스를 보존

PNG 디코더 구현이 변경되어 컬러스페이스 데이터를 보존하도록 업데이트되었다. 이제 이 함수에서 반환되는 인코딩된 데이터는 원본 컬러스페이스와 일치한다.

자세한 내용은 crbug.com/332584706에서 확인할 수 있다.

동작 변경: win.flashFrame(bool)이 macOS에서 도크 아이콘을 지속적으로 깜빡임

이 변경으로 macOS의 동작이 Windows와 Linux와 동일해졌다. 이전 동작: flashFrame(true)를 처음 호출하면 도크 아이콘이 한 번만 튕기고(NSInformationalRequest 수준 사용), flashFrame(false)는 아무 동작도 하지 않았다. 새로운 동작: flashFrame(false)가 호출될 때까지 도크 아이콘을 지속적으로 깜빡인다. 이제 NSCriticalRequest 수준을 사용한다. 도크 아이콘을 한 번만 튕기게 하려면 여전히 dock.bounce('informational')을 사용할 수 있다.

28.x.y 버전 지원 종료

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

E31 (2024년 6월)E32 (2024년 8월)E33 (2024년 10월)
31.x.y32.x.y33.x.y
30.x.y31.x.y32.x.y
28.x.y29.x.y31.x.y

다음 단계

앞으로는 Electron 팀이 Chromium, Node, V8과 같은 주요 구성 요소의 개발 속도를 따라가는 데 계속 집중할 것으로 예상된다.

Electron의 공개 타임라인은 여기에서 확인할 수 있다.

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

Electron 30.0.0

· 8 min read

Electron 30.0.0이 출시되었다! 이번 버전은 Chromium 124.0.6367.49, V8 12.4, 그리고 Node.js 20.11.1로 업그레이드되었다.


Electron 팀은 Electron 30.0.0 출시를 발표하게 되어 기쁘다. npm install electron@latest 명령어를 통해 npm으로 설치하거나 릴리스 웹사이트에서 직접 다운로드할 수 있다. 이번 릴리스에 대한 자세한 내용은 계속 읽어보자.

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

주요 변경 사항

주요 사항

  • Windows에서 ASAR Integrity fuse 지원 추가 (#40504)
    • ASAR Integrity가 활성화된 기존 앱은 올바르게 설정되지 않으면 Windows에서 작동하지 않을 수 있다. Electron 패키징 도구를 사용하는 앱은 @electron/packager@18.3.1 또는 @electron/forge@7.4.0으로 업그레이드해야 한다.
    • 자세한 내용은 ASAR Integrity 튜토리얼을 참고한다.
  • WebContentsViewBaseWindow 메인 프로세스 모듈 추가, BrowserView를 대체하며 더 이상 사용되지 않음 (#35658). BrowserView에서 WebContentsView로 마이그레이션하는 방법은 이 블로그 포스트에서 확인할 수 있다.
    • BrowserView는 이제 WebContentsView를 기반으로 한 shim이며, 이전 구현은 제거되었다.
    • 새로운 WebContentsView API와 다른 유사한 API를 비교하려면 Web Embeds 문서를 참고한다.
  • File System API 지원 구현 (#41827)

스택 변경 사항

Electron 30은 Chromium을 122.0.6261.39에서 124.0.6367.49로, Node를 20.9.0에서 20.11.1로, V8을 12.2에서 12.4로 업그레이드한다.

새로운 기능

  • 웹뷰에 transparent 웹 환경설정을 추가했다. (#40301)
  • webContents API에 navigationHistory 인스턴스 프로퍼티와 navigationHistory.getEntryAtIndex 메서드를 추가해, 애플리케이션이 브라우징 히스토리 내의 모든 네비게이션 항목의 URL과 제목을 가져올 수 있게 했다. (#41662)
  • 새로운 BrowserWindow.isOccluded() 메서드를 추가해 앱이 윈도우의 가려짐 상태를 확인할 수 있게 했다. (#38982)
  • 유틸리티 프로세스에서 net 모듈을 사용해 만든 요청에 대한 프록시 설정 지원을 추가했다. (#41417)
  • navigator.serial에서 서비스 클래스 ID로 블루투스 포트를 요청하는 기능을 지원한다. (#41734)
  • Node.js의 NODE_EXTRA_CA_CERTS CLI 플래그를 지원한다. (#41822)

주요 변경 사항

동작 변경: 크로스 오리진 iframe에서 기능 접근 시 Permission Policy 사용

이제 크로스 오리진 iframe은 allow 속성을 통해 특정 iframe에서 사용 가능한 기능을 명시해야 한다. 이를 통해 해당 기능에 접근할 수 있다.

자세한 내용은 문서를 참고한다.

제거됨: --disable-color-correct-rendering 커맨드라인 스위치

이 스위치는 공식적으로 문서화된 적은 없지만, 여기서 제거 사항을 기록한다. 크로미엄 자체가 이제 색상 공간을 더 잘 지원하므로 이 플래그가 더 이상 필요하지 않다.

변경된 동작: macOS에서 BrowserView.setAutoResize의 동작

Electron 30에서는 BrowserView가 새로운 WebContentsView API를 기반으로 동작하도록 변경되었다.

이전에는 BrowserView API의 setAutoResize 함수가 macOS에서는 autoresizing을, Windows와 Linux에서는 커스텀 알고리즘을 사용했다. BrowserView가 전체 윈도우를 채우는 간단한 사용 사례에서는 두 접근 방식의 동작이 동일했다. 하지만 더 복잡한 경우에는 macOS의 autoresizing API와 Windows 및 Linux의 커스텀 리사이징 알고리즘이 완벽히 일치하지 않아 BrowserView가 플랫폼별로 다르게 리사이징되었다. 이제는 모든 플랫폼에서 리사이징 동작이 표준화되었다.

만약 여러분의 앱이 BrowserView.setAutoResize를 사용해 BrowserView가 전체 윈도우를 채우는 것보다 더 복잡한 작업을 수행한다면, macOS에서의 동작 차이를 처리하기 위해 이미 커스텀 로직을 구현했을 가능성이 높다. 이 경우, Electron 30에서는 리사이징 동작이 일관되게 변경되었기 때문에 더 이상 해당 로직이 필요하지 않다.

제거됨: WebContentscontext-menu 이벤트에서 params.inputFormType 속성

WebContentscontext-menu 이벤트에서 params 객체의 inputFormType 속성이 제거되었다. 대신 새로운 formControlType 속성을 사용한다.

제거됨: process.getIOCounters()

Chromium은 이 정보에 대한 접근을 제거했다.

27.x.y 버전 지원 종료

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

E30 (2024년 4월)E31 (2024년 6월)E32 (2024년 8월)
30.x.y31.x.y32.x.y
29.x.y30.x.y31.x.y
28.x.y29.x.y30.x.y

다음 단계

앞으로 짧은 기간 동안, Electron 팀은 Chromium, Node, V8 등 주요 컴포넌트의 개발 동향을 계속 따라가며 이를 유지하는 데 주력할 것으로 예상된다.

Electron의 공개 타임라인은 여기서 확인할 수 있다.

향후 예정된 변경 사항에 대한 자세한 정보는 계획된 주요 변경 사항 페이지에서 찾아볼 수 있다.

Electron 29.0.0

· 7 min read

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

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

주요 변경 사항

하이라이트

  • 새로운 최상위 webUtils 모듈을 추가했다. 이 모듈은 렌더러 프로세스에서 Web API 객체와 상호작용하기 위한 유틸리티 계층을 제공한다. 이 모듈의 첫 번째 API는 webUtils.getPathForFile이다. 이전에 Electron의 File.path 확장은 웹 표준과 달랐지만, 이 새로운 API는 현재 웹 표준 동작에 더 부합한다.

스택 변경 사항

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 FusegrantFileProtocolExtraPrivileges를 추가한다. #40372
  • 커스텀 스킴에서 V8 코드 캐시를 허용하는 옵션을 protocol.registerSchemesAsPrivileged에 추가한다. #40544
  • macOS 13.0 이상에서 app.{set|get}LoginItemSettings(settings)가 Apple의 새로운 권장 프레임워크를 사용하도록 마이그레이션한다. #37244

주요 변경 사항

동작 변경: ipcRenderercontextBridge를 통해 전달할 수 없음

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) => {
/* ... */
});

제거됨: appgpu-process-crashed 이벤트

appgpu-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.y30.x.y31.x.y
28.x.y29.x.y30.x.y
27.x.y28.x.y29.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 페이지에서 찾아볼 수 있다.

Electron 28.0.0

· 6 min read

Electron 28.0.0이 출시되었습니다! 이번 버전은 Chromium 120.0.6099.56, V8 12.0, 그리고 Node.js 18.18.2로 업그레이드되었습니다.


Electron 팀은 Electron 28.0.0 출시를 기쁘게 발표합니다. npm install electron@latest 명령어를 통해 npm으로 설치하거나 릴리스 웹사이트에서 직접 다운로드할 수 있습니다. 이번 릴리스에 대한 자세한 내용은 계속해서 읽어보세요.

여러분의 피드백은 트위터마스토돈을 통해 공유하거나, 커뮤니티 디스코드에 참여해 주세요. 버그 및 기능 요청은 Electron의 이슈 트래커에 보고할 수 있습니다.

주요 변경 사항

하이라이트

  • ECMAScript 모듈(ESM) 지원을 구현했다. (ECMAScript 모듈이란 무엇인가? 여기서 자세히 알아보기). 이는 Electron 자체뿐만 아니라 UtilityProcess API 진입점과 같은 영역에서도 ESM을 지원한다. 자세한 내용은 ESM 문서를 참고한다.
  • Electron 자체에서 ESM 지원을 활성화하는 것 외에도, Electron Forge도 ESM을 사용해 Electron 애플리케이션을 패키징, 빌드, 개발하는 것을 지원한다. 이 기능은 Forge v7.0.0 이상에서 사용할 수 있다.

스택 변경 사항

새로운 기능

  • ESM 지원 활성화. #37535
  • UtilityProcess API에 ESM 진입점 추가. #40047
  • display 객체에 detected, maximumCursorSize, nativeOrigin 등 여러 속성 추가. #40554
  • 리눅스에서 ELECTRON_OZONE_PLATFORM_HINT 환경 변수 지원 추가. #39792

주요 변경 사항

동작 변경: WebContents.backgroundThrottling을 false로 설정하면 호스트 BrowserWindow 내의 모든 WebContents에 영향을 미침

WebContents.backgroundThrottling을 false로 설정하면 해당 BrowserWindow에 표시된 모든 WebContents의 프레임 스로틀링이 비활성화된다.

제거됨: BrowserWindow.setTrafficLightPosition(position)

BrowserWindow.setTrafficLightPosition(position)은 더 이상 사용되지 않는다. 대신 BrowserWindow.setWindowButtonPosition(position) API를 사용해야 한다. 이 새로운 API는 위치를 시스템 기본값으로 재설정하기 위해 { x: 0, y: 0 } 대신 null을 인자로 받는다.

// Electron 28에서 제거됨
win.setTrafficLightPosition({ x: 10, y: 10 });
win.setTrafficLightPosition({ x: 0, y: 0 });

// 대체 코드
win.setWindowButtonPosition({ x: 10, y: 10 });
win.setWindowButtonPosition(null);

제거됨: BrowserWindow.getTrafficLightPosition()

BrowserWindow.getTrafficLightPosition() 메서드가 제거되었다. 이제는 BrowserWindow.getWindowButtonPosition() API를 사용해야 한다. 이 메서드는 커스텀 위치가 없을 때 { x: 0, y: 0 } 대신 null을 반환한다.

// Electron 28에서 제거됨
const pos = win.getTrafficLightPosition();
if (pos.x === 0 && pos.y === 0) {
// 커스텀 위치가 없음.
}

// 대체 코드
const ret = win.getWindowButtonPosition();
if (ret === null) {
// 커스텀 위치가 없음.
}

삭제됨: ipcRenderer.sendTo()

ipcRenderer.sendTo() API가 삭제되었다. 이 기능은 두 렌더러 사이에 MessageChannel을 설정하여 대체해야 한다.

IpcRendererEventsenderIdsenderIsMainFrame 속성도 함께 삭제되었다.

제거됨: app.runningUnderRosettaTranslation

app.runningUnderRosettaTranslation 프로퍼티가 제거되었다.
대신 app.runningUnderARM64Translation을 사용한다.

// 제거됨
console.log(app.runningUnderRosettaTranslation);
// 대체 코드
console.log(app.runningUnderARM64Translation);

25.x.y 버전 지원 종료

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

E28 (2023년 12월)E29 (2024년 2월)E30 (2024년 4월)
28.x.y29.x.y30.x.y
27.x.y28.x.y29.x.y
26.x.y27.x.y28.x.y

다음 단계

단기적으로는 Electron 팀이 Chromium, Node, V8과 같은 주요 컴포넌트의 개발 속도를 따라잡는 데 계속 집중할 것으로 예상된다.

Electron의 공개 타임라인은 여기에서 확인할 수 있다.

향후 변경 사항에 대한 더 자세한 정보는 예정된 주요 변경 사항 페이지에서 찾아볼 수 있다.

Electron 27.0.0

· 6 min read

Electron 27.0.0이 출시되었습니다! 이번 버전은 Chromium 118.0.5993.32, V8 11.8, 그리고 Node.js 18.17.1로 업그레이드되었습니다.


Electron 팀은 Electron 27.0.0 출시를 발표하게 되어 기쁩니다. npm install electron@latest 명령어를 통해 npm으로 설치하거나 릴리스 웹사이트에서 다운로드할 수 있습니다. 이번 릴리스에 대한 자세한 내용은 계속 읽어보세요.

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

주요 변경 사항

스택 변경 사항

주요 변경 사항

삭제: macOS 10.13 / 10.14 지원 중단

macOS 10.13 (High Sierra)와 macOS 10.14 (Mojave)는 더 이상 Chromium에서 지원하지 않는다.

이전 버전의 Electron은 해당 운영체제에서 계속 실행할 수 있지만, Electron v27.0.0 이상 버전을 실행하려면 macOS 10.15 (Catalina) 이상이 필요하다.

더 이상 사용되지 않음: ipcRenderer.sendTo()

ipcRenderer.sendTo() API는 더 이상 사용되지 않는다. 이제는 두 렌더러 사이에 MessageChannel을 설정해 사용해야 한다.

IpcRendererEventsenderIdsenderIsMainFrame 속성도 더 이상 사용되지 않는다.

제거됨: systemPreferences의 컬러 스킴 이벤트

다음 systemPreferences 이벤트가 제거됐다:

  • inverted-color-scheme-changed
  • high-contrast-color-scheme-changed

대신 nativeTheme 모듈의 새로운 updated 이벤트를 사용한다.

// 제거됨
systemPreferences.on('inverted-color-scheme-changed', () => {
/* ... */
});
systemPreferences.on('high-contrast-color-scheme-changed', () => {
/* ... */
});

// 대체 코드
nativeTheme.on('updated', () => {
/* ... */
});

제거됨: webContents.getPrinters

webContents.getPrinters 메서드는 더 이상 사용되지 않는다. 대신 webContents.getPrintersAsync를 사용한다.

const w = new BrowserWindow({ show: false });

// 제거됨
console.log(w.webContents.getPrinters());
// 대체 코드
w.webContents.getPrintersAsync().then((printers) => {
console.log(printers);
});

제거된 기능: systemPreferences.{get,set}AppLevelAppearancesystemPreferences.appLevelAppearance

systemPreferences.getAppLevelAppearancesystemPreferences.setAppLevelAppearance 메서드, 그리고 systemPreferences.appLevelAppearance 프로퍼티가 제거되었다. 이제는 nativeTheme 모듈을 사용해야 한다.

// 제거됨
systemPreferences.getAppLevelAppearance();
// 대체 코드
nativeTheme.shouldUseDarkColors;

// 제거됨
systemPreferences.appLevelAppearance;
// 대체 코드
nativeTheme.shouldUseDarkColors;

// 제거됨
systemPreferences.setAppLevelAppearance('dark');
// 대체 코드
nativeTheme.themeSource = 'dark';

제거됨: systemPreferences.getColoralternate-selected-control-text

systemPreferences.getColoralternate-selected-control-text 값이 제거되었다. 대신 selected-content-background를 사용한다.

// 제거됨
systemPreferences.getColor('alternate-selected-control-text');
// 대체
systemPreferences.getColor('selected-content-background');

새로운 기능

  • 앱 접근성 투명도 설정 API 추가 #39631
  • chrome.scripting 확장 API 지원 추가 #39675
  • WaylandWindowDecorations 기본값 활성화 #39644

24.x.y 지원 종료 안내

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

E27 (2023년 10월)E28 (2023년 12월)E29 (2024년 2월)
27.x.y28.x.y29.x.y
26.x.y27.x.y28.x.y
25.x.y26.x.y27.x.y

22.x.y 버전의 확장 지원 종료

올해 초, Electron 팀은 Windows 7/8/8.1에 대한 Chrome의 확장 지원 기간과 맞추기 위해 Electron 22의 지원 종료 예정일을 2023년 5월 30일에서 2023년 10월 10일로 연장했다. 자세한 내용은 Windows 7/8/8.1 지원 종료 공지를 참고하면 된다.

Electron 22.x.y는 프로젝트의 지원 정책과 이번 확장 지원에 따라 지원이 종료되었다. 이로 인해 지원 범위가 최신 3개의 안정적인 메이저 버전으로 축소되었으며, Windows 7/8/8.1에 대한 공식 지원도 종료되었다.

다음 단계

앞으로도 Electron 팀은 Chromium, Node, V8 등 주요 컴포넌트의 개발 속도를 따라가기 위해 계속 노력할 것이다.

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

향후 예정된 변경 사항에 대한 자세한 내용은 Planned Breaking Changes 페이지에서 찾아볼 수 있다.

Electron 26.0.0

· 4 min read

Electron 26.0.0이 출시되었습니다! 이번 버전은 Chromium 116.0.5845.62, V8 11.2, 그리고 Node.js 18.16.1로 업그레이드되었습니다. 자세한 내용은 아래를 참고하세요!


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

피드백이 있다면 Twitter를 통해 공유하거나, 우리의 커뮤니티 Discord에 참여해 주세요. 버그 및 기능 요청은 Electron의 이슈 트래커에 보고할 수 있습니다.

주요 변경 사항

스택 변경

주요 변경 사항

더 이상 사용되지 않는 기능: webContents.getPrinters

webContents.getPrinters 메서드는 더 이상 사용되지 않는다. 대신 webContents.getPrintersAsync를 사용한다.

const w = new BrowserWindow({ show: false });

// 더 이상 사용되지 않음
console.log(w.webContents.getPrinters());
// 대체 방법
w.webContents.getPrintersAsync().then((printers) => {
console.log(printers);
});

더 이상 사용되지 않음: systemPreferences.{get,set}AppLevelAppearancesystemPreferences.appLevelAppearance

systemPreferences.getAppLevelAppearancesystemPreferences.setAppLevelAppearance 메서드, 그리고 systemPreferences.appLevelAppearance 속성은 더 이상 사용되지 않는다. 이제 nativeTheme 모듈을 사용해야 한다.

// 더 이상 사용되지 않음
systemPreferences.getAppLevelAppearance();
// 대체 방법
nativeTheme.shouldUseDarkColors;

// 더 이상 사용되지 않음
systemPreferences.appLevelAppearance;
// 대체 방법
nativeTheme.shouldUseDarkColors;

// 더 이상 사용되지 않음
systemPreferences.setAppLevelAppearance('dark');
// 대체 방법
nativeTheme.themeSource = 'dark';

더 이상 사용되지 않음: systemPreferences.getColoralternate-selected-control-text

systemPreferences.getColoralternate-selected-control-text 값은 더 이상 사용되지 않는다. 대신 selected-content-background를 사용한다.

// 더 이상 사용되지 않음
systemPreferences.getColor('alternate-selected-control-text');
// 대체 코드
systemPreferences.getColor('selected-content-background');

새로운 기능

  • safeStorage.setUsePlainTextEncryptionsafeStorage.getSelectedStorageBackend API를 추가했다. #39107
  • safeStorage.setUsePlainTextEncryptionsafeStorage.getSelectedStorageBackend API를 추가했다. #39155
  • ipcRenderer.sendTo()를 통해 전송된 메시지에 senderIsMainFrame 속성을 추가했다. #39206
  • 키보드로 시작된 Menu를 플래그로 표시하는 기능을 추가했다. #38954

23.x.y 버전 지원 종료

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

E26 (2023년 8월)E27 (2023년 10월)E28 (2024년 1월)
26.x.y27.x.y28.x.y
25.x.y26.x.y27.x.y
24.x.y25.x.y26.x.y
22.x.y

앞으로의 계획

단기적으로, Electron 팀은 Chromium, Node, V8과 같은 주요 컴포넌트의 개발 속도를 따라잡는 데 계속 집중할 예정이다.

Electron의 공개 타임라인은 여기에서 확인할 수 있다.

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

Electron 25.0.0

· 8 min read

Electron 25.0.0이 출시되었다! 이번 버전은 Chromium 114, V8 11.4, 그리고 Node.js 18.15.0으로 업그레이드되었다. 자세한 내용은 아래를 참고하자!


Electron 팀은 Electron 25.0.0 출시를 발표하게 되어 기쁘게 생각한다. npm install electron@latest를 통해 npm으로 설치하거나 릴리스 웹사이트에서 직접 다운로드할 수 있다. 이번 릴리스에 대한 자세한 내용은 계속 읽어보자.

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

주요 변경 사항

주요 기능

  • Electron의 net 모듈 내에 net.fetch를 구현했다. 이 기능은 Chromium의 네트워킹 스택을 사용한다. Node.js의 HTTP 스택을 사용하는 Node의 fetch()와는 다르다. 자세한 내용은 #36733#36606을 참고한다.

  • protocol.handle을 추가했다. 이는 protocol.{register,intercept}{String,Buffer,Stream,Http,File}Protocol을 대체하며, 기존 기능을 더 이상 사용하지 않도록 권고한다. #36674

  • Electron 22에 대한 지원을 확장했다. 이는 Chromium과 Microsoft의 Windows 7/8/8.1 지원 중단 계획에 맞추기 위함이다. 자세한 내용은 이 블로그 포스트의 끝 부분에서 확인할 수 있다.

스택 변경 사항

주요 변경 사항

사용 중단: protocol.{register,intercept}{Buffer,String,Stream,File,Http}Protocol

protocol.register*Protocolprotocol.intercept*Protocol 메서드는 protocol.handle로 대체되었다.

새로운 메서드는 새로운 프로토콜을 등록하거나 기존 프로토콜을 가로챌 수 있으며, 응답은 어떤 타입이든 가능하다.

// Electron 25에서 사용 중단됨
protocol.registerBufferProtocol('some-protocol', () => {
callback({ mimeType: 'text/html', data: Buffer.from('<h5>Response</h5>') });
});

// 대체 코드
protocol.handle('some-protocol', () => {
return new Response(
Buffer.from('<h5>Response</h5>'), // 문자열이나 ReadableStream도 가능
{ headers: { 'content-type': 'text/html' } },
);
});
// Electron 25에서 사용 중단됨
protocol.registerHttpProtocol('some-protocol', () => {
callback({ url: 'https://electronjs.org' });
});

// 대체 코드
protocol.handle('some-protocol', () => {
return net.fetch('https://electronjs.org');
});
// Electron 25에서 사용 중단됨
protocol.registerFileProtocol('some-protocol', () => {
callback({ filePath: '/path/to/my/file' });
});

// 대체 코드
protocol.handle('some-protocol', () => {
return net.fetch('file:///path/to/my/file');
});

더 이상 사용되지 않음: BrowserWindow.setTrafficLightPosition(position)

BrowserWindow.setTrafficLightPosition(position)은 더 이상 사용되지 않는다. 대신 BrowserWindow.setWindowButtonPosition(position) API를 사용해야 한다. 이 API는 위치를 시스템 기본값으로 재설정할 때 { x: 0, y: 0 } 대신 null을 인자로 받는다.

// Electron 25에서 더 이상 사용되지 않음
win.setTrafficLightPosition({ x: 10, y: 10 });
win.setTrafficLightPosition({ x: 0, y: 0 });

// 대체 코드
win.setWindowButtonPosition({ x: 10, y: 10 });
win.setWindowButtonPosition(null);

더 이상 사용되지 않음: BrowserWindow.getTrafficLightPosition()

BrowserWindow.getTrafficLightPosition()은 더 이상 사용되지 않는다. 이제는 BrowserWindow.getWindowButtonPosition() API를 사용해야 한다. 이 API는 사용자 지정 위치가 없을 때 { x: 0, y: 0 } 대신 null을 반환한다.

// Electron 25에서 더 이상 사용되지 않음
const pos = win.getTrafficLightPosition();
if (pos.x === 0 && pos.y === 0) {
// 사용자 지정 위치가 없음.
}

// 대체 코드
const ret = win.getWindowButtonPosition();
if (ret === null) {
// 사용자 지정 위치가 없음.
}

새로운 기능

  • net.fetch()를 추가했다. #36733
    • net.fetchfile: URL과 protocol.register*Protocol로 등록된 커스텀 프로토콜에 대한 요청을 지원한다. #36606
  • BrowserWindow.set/getWindowButtonPosition API를 추가했다. #37094
  • protocol.handle을 추가하고, protocol.{register,intercept}{String,Buffer,Stream,Http,File}Protocol을 대체하며 더 이상 사용하지 않는다. #36674
  • webContents<webview> 태그에 will-frame-navigate 이벤트를 추가했다. 이 이벤트는 프레임 계층 구조 내의 어떤 프레임이 네비게이션을 시도할 때마다 발생한다. #34418
  • 네비게이션 이벤트에 initiator 정보를 추가했다. 이 정보를 통해 window.open이 부모 프레임에 의해 발생한 것인지, 자식 프레임에 의해 시작된 것인지 구분할 수 있다. #37085
  • net.resolveHost를 추가했다. 이 함수는 defaultSession 객체를 사용해 호스트를 해결한다. #38152
  • app에 새로운 'did-resign-active' 이벤트를 추가했다. #38018
  • webContents.print()에 여러 표준 페이지 크기 옵션을 추가했다. #37159
  • ses.setDisplayMediaRequestHandler() 콜백에 enableLocalEcho 플래그를 추가했다. 이 플래그는 audioWebFrameMain일 때 원격 오디오 입력이 로컬 출력 스트림에서 반향되도록 허용한다. #37315
  • powerMonitor에 열 관리 정보를 추가했다. #38028
  • session.fromPath() API에 절대 경로를 전달할 수 있도록 허용했다. #37604
  • webContentsaudio-state-changed 이벤트를 노출시켰다. #37366

22.x.y 지속 지원

Farewell, Windows 7/8/8.1에서 언급한 바와 같이, Electron 22(Chromium 108)의 종료 예정일은 2023년 5월 30일에서 2023년 10월 10일로 연장된다. Electron 팀은 2023년 10월 10일까지 Electron 22에 대한 보안 수정 사항을 계속해서 백포트할 예정이다. 10월 지원 일정은 Chromium과 Microsoft의 연장된 지원 일정을 따른다. 2023년 10월 11일부터 Electron 팀은 지원을 최신 3개의 안정적인 주요 버전으로 축소할 것이며, 이 버전들은 Windows 7/8/8.1을 더 이상 지원하지 않는다.

E25 (2023년 5월)E26 (2023년 8월)E27 (2023년 10월)
25.x.y26.x.y27.x.y
24.x.y25.x.y26.x.y
23.x.y24.x.y25.x.y
22.x.y22.x.y--

다음은?

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

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

향후 예정된 변경 사항에 대한 자세한 내용은 Planned Breaking Changes 페이지에서 찾아볼 수 있다.