Skip to main content

Electron 3.0.0

· 8 min read

Electron 팀은 Electron 3의 첫 번째 안정 버전을 출시하게 되어 기쁘게 생각합니다. 이제 electronjs.org에서 또는 npm install electron@latest 명령어를 통해 다운로드할 수 있습니다. 이번 버전은 다양한 업그레이드, 수정 사항, 그리고 새로운 기능으로 가득 차 있습니다. 여러분이 이 기능들을 활용해 무엇을 만들어 낼지 기대가 큽니다. 아래는 이번 릴리스에 대한 상세 정보입니다. 여러분의 피드백을 환영합니다.

릴리스 프로세스​

v3.0.0 개발을 진행하면서, 우리는 점진적인 베타 릴리스에 대한 피드백 프로세스를 공식화하여 안정적인 릴리스 기준을 더 실질적으로 정의하려고 노력했다. 앱 피드백 프로그램 파트너들이 없었다면 v3.0.0은 불가능했을 것이다. 이 파트너들은 베타 주기 동안 초기 테스트와 피드백을 제공했다. Atlassian, Atom, Microsoft Teams, Oculus, OpenFin, Slack, Symphony, VS Code 및 다른 프로그램 멤버들의 노력에 감사한다. 앞으로의 베타 테스트에 참여하고 싶다면 info@electronjs.org로 메일을 보내주길 바란다.

변경 사항 / 새로운 기능​

Electron의 핵심 툴체인에 대한 주요 업데이트가 이루어졌다. Chrome v66.0.3359.181, Node v10.2.0, 그리고 V8 v6.6.346.23 버전으로 업그레이드됐다.

  • [#12656] 기능 추가: app.isPackaged
  • [#12652] 기능 추가: app.whenReady()
  • [#13183] 기능 추가: process.getHeapStatistics()
  • [#12485] 기능 추가: win.moveTop()을 통해 윈도우의 z-order를 최상위로 이동
  • [#13110] 기능 추가: TextField 및 Button API
  • [#13068] 기능 추가: 동적 로깅 제어를 위한 netLog API
  • [#13539] 기능 추가: 샌드박스 렌더러에서 webview 사용 가능
  • [#14118] 기능 추가: fs.readSync가 대용량 파일에서도 작동
  • [#14031] 기능 추가: fs.realpathSync.native 및 fs.realpath.native를 사용할 수 있는 node fs 래퍼 추가

주요 API 변경 사항​

  • [#12362] 기능: 메뉴 아이템 순서 제어 업데이트
  • [#13050] 리팩토링: 문서화된 사용 중단 API 제거
    • 자세한 내용은 문서 참고
  • [#12477] 리팩토링: did-get-response-details 및 did-get-redirect-request 이벤트 제거
  • [#12655] 기능: 드래그/드롭 시 기본적으로 네비게이션 비활성화
  • [#12993] 기능: electron npm 모듈 사용을 위해 Node v4.x 이상 필요
  • [#12008 #12140 #12503 #12514 #12584 #12596 #12637 #12660 #12696 #12716 #12750 #12787 #12858] 리팩토링: NativeWindow
  • [#11968] 리팩토링: menu.popup()
  • [#8953] 기능: ipcRenderer.sendSync 결과 전송 시 더 이상 JSON 사용하지 않음
  • [#13039] 기능: URL 뒤에 오는 커맨드라인 인수 기본적으로 무시
  • [#12004] 리팩토링: api::Window를 api::BrowserWindow로 이름 변경
  • [#12679] 기능: 시각적 줌 기능 기본적으로 비활성화
  • [#12408] 리팩토링: 앱 커맨드 media-play_pause를 media-play-pause로 이름 변경

macOS​

  • [#12093] feat: 워크스페이스 알림 지원 추가
  • [#12496] feat: 트레이 더블 클릭 이벤트 무시 기능 추가 (tray.setIgnoreDoubleClickEvents(ignore))
  • [#12281] feat: macOS에서 마우스 포워딩 기능 추가
  • [#12714] feat: 화면 잠금 / 잠금 해제 이벤트 추가

Windows​

  • [#12879] 기능: DIP와 스크린 좌표 간 변환 기능 추가

주의: 이 버전을 실행한 후 이전 버전의 Electron으로 전환하려면 사용자 데이터 디렉터리를 삭제해야 한다. 그렇지 않으면 이전 버전이 충돌할 수 있다. 사용자 데이터 디렉터리는 console.log(app.getPath("userData"))를 실행하거나 문서를 참조하여 확인할 수 있다.

버그 수정​

  • [#13397] 수정: fs.statSyncNoException에서 예외가 발생하는 문제 해결
  • [#13476, #13452] 수정: jquery를 사용하는 사이트 로드 시 크래시 문제 해결
  • [#14092] 수정: net::ClientSocketHandle 소멸자에서 발생하는 크래시 문제 해결
  • [#14453] 수정: 다음 틱(tick)이 아닌 즉시 포커스 변경 알림 전송

macOS​

  • [#13220] 수정: <input file="type"> 파일 열기 대화상자에서 번들을 선택할 수 있는 문제 해결
  • [#12404] 수정: 비동기 대화상자 사용 시 메인 프로세스가 블로킹되는 문제 해결
  • [#12043] 수정: 컨텍스트 메뉴 클릭 콜백 문제 해결
  • [#12527] 수정: 터치바 아이템 재사용 시 이벤트 누수 문제 해결
  • [#12352] 수정: 트레이 제목 충돌 문제 해결
  • [#12327] 수정: 드래그 불가능한 영역 문제 해결
  • [#12809] 수정: 메뉴가 열려 있는 동안 업데이트되지 않도록 수정
  • [#13162] 수정: 트레이 아이콘 경계값이 음수를 허용하지 않는 문제 해결
  • [#13085] 수정: 트레이 제목이 강조될 때 색상이 반전되지 않는 문제 해결
  • [#12196] 수정: enable_run_as_node==false일 때 macOS 빌드 문제 해결
  • [#12157] 수정: 투명 효과가 적용된 프레임리스 윈도우에서 발생하는 추가 문제 해결
  • [#13326] 수정: app.removeAsDefaultProtocolClient 호출 후 macOS 프로토콜을 none으로 설정하도록 수정
  • [#13530] 수정: MAS 빌드에서 개인 API의 잘못된 사용 문제 해결
  • [#13517] 수정: tray.setContextMenu 충돌 문제 해결
  • [#14205] 수정: defaultId가 설정된 경우에도 ESC 키를 눌러 대화상자를 닫을 수 있도록 수정

Linux​

  • [#12507] 수정: 오프스크린 윈도우에서 BrowserWindow.focus() 문제 해결

기타 참고 사항​

  • PDF 뷰어는 현재 작동하지 않지만, 곧 다시 정상적으로 사용할 수 있도록 작업 중이다.
  • TextField와 Button API는 실험적 기능이므로 기본적으로 비활성화되어 있다.
    • enable_view_api 빌드 플래그를 사용해 활성화할 수 있다.

다음 단계

Electron 팀은 Chromium, Node, V8의 개발 주기와 궁극적으로 동일한 속도를 유지하기 위해 보다 빠르고 원활한 업그레이드 프로세스를 정의하는 작업을 계속 진행하고 있다.