"Electron은 Chromium 릴리스 주기에 맞춰 8주마다 새 메이저 버전을 출시한다" — 주기적인 업그레이드가 보안과 성능을 위해 필수입니다.


Electron 버전 정책

  • 8주 주기 로 새 메이저 버전 릴리스
  • 최신 3개 메이저 버전만 지원
  • 각 메이저 버전은 약 6개월간 보안 패치 제공
PLAINTEXT
Electron 28 → Chromium 120, Node.js 18
Electron 29 → Chromium 122, Node.js 20
Electron 30 → Chromium 124, Node.js 20
...

주요 Breaking Changes 히스토리

contextIsolation 기본값 변경 (v12)

JAVASCRIPT
// v11 이하: contextIsolation 기본값 false
// v12+: contextIsolation 기본값 true

// 마이그레이션: contextBridge 사용으로 전환
// 이전
window.myAPI = { getData: () => ipcRenderer.invoke('getData') };

// 이후
contextBridge.exposeInMainWorld('myAPI', {
  getData: () => ipcRenderer.invoke('getData'),
});

remote 모듈 제거 (v14)

JAVASCRIPT
// 이전: remote로 메인 모듈을 렌더러에서 직접 접근
const { dialog } = require('@electron/remote');

// 이후: IPC를 통해 접근
// preload.js
contextBridge.exposeInMainWorld('api', {
  showDialog: () => ipcRenderer.invoke('dialog:show'),
});

BrowserView → WebContentsView (v30)

JAVASCRIPT
// 이전: BrowserView 사용
const view = new BrowserView({ webPreferences: { ... } });
win.setBrowserView(view);
view.setBounds({ x: 0, y: 0, width: 400, height: 400 });

// 이후: WebContentsView 사용
const view = new WebContentsView({ webPreferences: { ... } });
win.contentView.addChildView(view);
view.setBounds({ x: 0, y: 0, width: 400, height: 400 });

마이그레이션 전략

1. 점진적 업그레이드

BASH
# 현재 버전 확인
npx electron --version

# 한 메이저 버전씩 올리기
npm install electron@29 --save-dev
# 테스트 → 수정 → 다시 테스트

npm install electron@30 --save-dev
# 테스트 → 수정 → 다시 테스트

2. Breaking Changes 확인

BASH
# Electron 릴리스 노트에서 Breaking Changes 확인
# https://www.electronjs.org/docs/latest/breaking-changes

3. Deprecation 경고 처리

JAVASCRIPT
// 개발 모드에서 deprecation 경고를 로그로 출력
process.on('warning', (warning) => {
  if (warning.name === 'DeprecationWarning') {
    console.warn('Deprecation:', warning.message);
  }
});

마이그레이션 체크리스트

  • Breaking Changes 문서 확인
  • Deprecated API 사용 여부 점검
  • 네이티브 모듈 재빌드 (electron-rebuild)
  • 모든 플랫폼에서 빌드 테스트
  • 자동 업데이트 동작 확인
  • 코드 서명/공증 정상 동작 확인
  • E2E 테스트 통과 확인

면접 포인트 정리

  • Electron은 8주 주기 릴리스, 최신 3개 버전만 지원
  • 한 번에 여러 버전을 건너뛰지 말고 한 단계씩 업그레이드
  • contextIsolation, remote 제거, BrowserView 교체가 대표적 Breaking Changes
  • Deprecation 경고를 미리 처리하면 마이그레이션이 수월해짐
  • 네이티브 모듈은 Electron 버전 변경 시 반드시 재빌드

마이그레이션을 다뤘으면, 다음은 Tauri와의 비교를 알아봅시다.

댓글 로딩 중...