Skip to main content

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의 공개 타임라인은 여기에서 확인할 수 있다.

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