Skip to main content

Electron 24.0.0

· 6 min read

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


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

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

주요 변경 사항

스택 변경

주요 변경 사항

API 변경: nativeImage.createThumbnailFromPath(path, size)

maxSize 매개변수가 size로 변경되어 전달된 크기가 생성될 썸네일의 크기를 명확히 반영한다. 이전에는 윈도우에서 이미지가 maxSize보다 작을 경우 크기를 확대하지 않았고, macOS에서는 항상 크기를 maxSize로 설정했다. 이제는 플랫폼 간 동작이 일관되게 변경되었다.

// 128x128 크기의 이미지
const imagePath = path.join('path', 'to', 'capybara.png');

// 작은 이미지를 확대
const upSize = { width: 256, height: 256 };
nativeImage.createThumbnailFromPath(imagePath, upSize).then((result) => {
console.log(result.getSize()); // { width: 256, height: 256 }
});

// 큰 이미지를 축소
const downSize = { width: 64, height: 64 };
nativeImage.createThumbnailFromPath(imagePath, downSize).then((result) => {
console.log(result.getSize()); // { width: 64, height: 64 }
});

새로운 기능

  • cookies.get()에서 HttpOnly 쿠키를 필터링할 수 있는 기능이 추가되었다. #37365
  • shell.openExternal() 옵션에 logUsage가 추가되었다. 이는 Windows에서 ShellExecuteExSEE_MASK_FLAG_LOG_USAGE 플래그를 전달할 수 있게 한다. SEE_MASK_FLAG_LOG_USAGE 플래그는 사용자가 시작한 실행을 나타내며, 자주 사용하는 프로그램을 추적하고 다른 동작을 활성화한다. #37291
  • webRequest 필터에 types가 추가되어, 리스닝할 요청을 필터링할 수 있게 되었다. #37427
  • webContents에 새로운 devtools-open-url 이벤트가 추가되어, 개발자가 새로운 윈도우를 열 수 있게 되었다. #36774
  • webContents.print()에 여러 표준 페이지 크기 옵션이 추가되었다. #37265
  • ses.setDisplayMediaRequestHandler() 콜백에 enableLocalEcho 플래그가 추가되었다. 이는 audioWebFrameMain일 때, 원격 오디오 입력을 로컬 출력 스트림에서 반향할 수 있게 한다. #37528
  • inAppPurchase.purchaseProduct()에 애플리케이션별 사용자 이름을 전달할 수 있게 되었다. #35902
  • macOS에서 잔여 시각적 잔상을 지우기 위해 window.invalidateShadow()가 노출되었다. #32452
  • 이제 Electron 노드 헤더 설정 파일에서 전체 프로그램 최적화가 기본적으로 활성화된다. 이를 통해 컴파일러는 프로그램의 모든 모듈 정보를 기반으로 최적화를 수행할 수 있다. #36937
  • SystemPreferences::CanPromptTouchID (macOS)가 이제 Apple Watch를 지원한다. #36935

21.x.y 버전 지원 종료

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

Windows 7/8/8.1 지원 종료 공지에서 언급한 바와 같이, Electron 22(Chromium 108)의 지원 종료 일정이 2023년 5월 30일에서 2023년 10월 10일로 연장되었다. Electron 팀은 2023년 10월 10일까지 Electron 22에 대한 보안 수정 사항을 계속해서 백포트할 예정이다.

E24 (2023년 4월)E25 (2023년 5월)E26 (2023년 8월)
24.x.y25.x.y26.x.y
23.x.y24.x.y25.x.y
22.x.y23.x.y24.x.y
--22.x.y22.x.y

앞으로의 계획

단기적으로, Electron 팀은 Chromium, Node, V8 등 주요 구성 요소의 개발을 따라가는 데 계속 집중할 예정이다.

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

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

10 years of Electron 🎉

· 20 min read

electron/electron 저장소에 첫 커밋이 이루어진 날은 2013년 3월 13일이었다1.

@aroben이 electron/electron에 첫 커밋을 하는 모습

10년이 지나고, 1192명의 기여자가 27,147개의 커밋을 추가한 후, Electron은 현재 데스크톱 애플리케이션을 구축하는 가장 인기 있는 프레임워크 중 하나가 되었다. 이번 마일스톤은 지금까지의 여정을 돌아보고, 그동안 배운 것을 공유하며 축하할 수 있는 완벽한 기회다.

프로젝트에 시간과 노력을 기울여 기여한 모든 사람들이 없었다면 오늘의 Electron은 존재할 수 없었다. 소스 코드 커밋이 항상 가장 눈에 띄는 기여이지만, 버그를 보고하고, 사용자 모듈을 유지보수하며, 문서와 번역을 제공하고, 온라인 공간에서 Electron 커뮤니티에 참여한 사람들의 노력도 인정해야 한다. 모든 기여는 유지보수자로서 우리에게 귀중하다.

이 글을 계속하기 전에: 감사합니다. ❤️

우리가 여기까지 온 여정

Atom Shell은 GitHub의 Atom 에디터를 위한 핵심 기술로 개발되었다. 2014년 4월 공개 베타로 출시된 Atom 에디터는 당시 웹 기반 데스크톱 프레임워크(node-webkit과 Chromium Embedded Framework)의 대안으로 처음부터 새롭게 구축되었다. Atom Shell의 주요 특징은 Node.js와 Chromium을 내장해 웹 기술을 위한 강력한 데스크톱 런타임을 제공하는 것이었다.

출시 후 1년도 채 되지 않아 Atom Shell은 기능과 인기 면에서 급격한 성장을 이루었다. 대기업, 스타트업, 개인 개발자들이 모두 이 플랫폼을 사용해 앱을 개발하기 시작했고, Slack, GitKraken, WebTorrent 등이 초기 사용자로 포함되었다. 이 프로젝트는 Electron이라는 이름으로 재탄생했다.

그 이후로 Electron은 빠르게 성장하며 멈추지 않았다. npmtrends.com의 데이터를 통해 시간에 따른 주간 다운로드 수를 살펴보면 다음과 같다:

Electron weekly downloads graph over time

Electron v1은 2016년에 출시되었으며, API 안정성 강화와 더 나은 문서 및 도구 제공을 약속했다. Electron v2는 2018년에 출시되며 시맨틱 버저닝을 도입해 개발자들이 릴리스 주기를 더 쉽게 추적할 수 있게 했다.

Electron v6부터는 Chromium의 릴리스 주기에 맞춰 12주 단위의 정기적인 메이저 릴리스 주기로 전환했다. 이 결정은 프로젝트의 사고방식 변화를 의미했으며, "최신 Chromium 버전 유지"를 선택 사항에서 우선순위로 끌어올렸다. 이를 통해 업그레이드 간 기술 부채를 줄이고, Electron을 최신 상태로 유지하며 보안을 강화하는 것이 더 쉬워졌다.

그 이후로 Electron은 잘 정비된 기계처럼 작동하며, Chromium 안정 버전이 출시되는 날마다 새로운 Electron 버전을 릴리스했다. 2021년 Chromium이 릴리스 주기를 4주로 단축했을 때, Electron도 어깨를 으쓱하며 릴리스 주기를 8주로 조정할 수 있었다.

현재 Electron v23(그 이상)까지 출시되었으며, 여전히 크로스 플랫폼 데스크톱 애플리케이션을 구축하기 위한 최고의 런타임을 만들기 위해 노력하고 있다. 최근 몇 년간 JavaScript 개발자 도구가 급격히 증가했음에도 불구하고, Electron은 데스크톱 앱 프레임워크 분야에서 안정적이고 검증된 강자로 자리 잡았다. 이제 Electron 앱은 어디서나 찾아볼 수 있다: Visual Studio Code로 프로그래밍하고, Figma로 디자인하고, Slack으로 소통하고, Notion으로 메모를 작성하는 등 다양한 용도로 활용된다. 이 성과를 이루기 위해 노력한 모든 이들에게 깊은 감사를 표한다.

여정에서 배운 것들

10년이라는 시간 동안 우리는 길고도 복잡한 여정을 걸어왔다. 이 과정에서 대규모 오픈소스 프로젝트를 지속 가능하게 운영하는 데 도움이 된 몇 가지 핵심 요소를 정리해본다.

거버넌스 모델로 확장된 분산 의사결정 관리

Electron이 처음으로 인기를 끌기 시작했을 때, 우리가 극복해야 했던 과제 중 하나는 프로젝트의 장기적인 방향성을 어떻게 관리할지였다. 여러 회사와 국가, 시간대에 걸쳐 분산된 수십 명의 엔지니어로 구성된 팀을 어떻게 효율적으로 운영할 수 있을까?

초기에는 Electron의 메인테이너 그룹이 비공식적인 협업 방식을 사용했다. 이 방식은 작은 규모의 프로젝트에서는 빠르고 가볍게 동작하지만, 더 넓은 협업으로 확장하기에는 한계가 있었다. 2019년, 우리는 공식적인 책임 영역을 가진 다양한 작업 그룹(Working Group, WG)으로 구성된 거버넌스 모델로 전환했다. 이 모델은 프로세스를 간소화하고 프로젝트 소유권의 일부를 특정 메인테이너에게 할당하는 데 중요한 역할을 했다. 현재 각 작업 그룹의 책임은 다음과 같다:

  • Electron 릴리즈 관리 (Releases WG)
  • Chromium과 Node.js 업그레이드 (Upgrades WG)
  • 공개 API 설계 감독 (API WG)
  • Electron 보안 유지 (Security WG)
  • 웹사이트, 문서, 도구 관리 (Ecosystem WG)
  • 커뮤니티 및 기업 외부 연계 (Outreach WG)
  • 커뮤니티 규제 (Community & Safety WG)
  • 빌드 인프라, 메인테이너 도구, 클라우드 서비스 유지 (Infrastructure WG)

우리가 거버넌스 모델로 전환한 시기와 거의 동시에, Electron의 소유권도 GitHub에서 OpenJS Foundation으로 이전했다. 원래의 코어 팀은 여전히 Microsoft에서 근무하고 있지만, 이제는 Electron 거버넌스를 구성하는 더 큰 협력자 그룹의 일부일 뿐이다.2

이 모델이 완벽하지는 않지만, 전 세계적인 팬데믹과 지속적인 거시경제적 어려움 속에서도 우리에게 잘 맞아왔다. 앞으로 우리는 Electron의 두 번째 10년을 이끌어갈 수 있도록 거버넌스 헌장을 개선할 계획이다.

info

더 자세한 내용을 알고 싶다면 electron/governance 저장소를 확인해 보자!

커뮤니티

오픈소스의 커뮤니티 부분은 쉽지 않다. 특히 아웃리치 팀이 '커뮤니티 매니저'라는 이름의 트렌치코트를 입은 소수의 엔지니어들로 구성되어 있을 때는 더욱 그렇다. 하지만 대규모 오픈소스 프로젝트로서 우리는 많은 사용자를 보유하고 있으며, 이들의 에너지를 활용해 Electron을 위한 사용자 중심의 생태계를 구축하는 것은 프로젝트의 건강을 유지하는 데 중요한 부분이다.

그렇다면 우리는 커뮤니티 존재감을 강화하기 위해 어떤 노력을 기울이고 있을까?

가상 커뮤니티 구축

  • 2020년에 우리는 커뮤니티 디스코드 서버를 출시했다. 이전에는 Atom 포럼의 한 섹션을 사용했지만, 더 비공식적인 메시징 플랫폼을 통해 관리자와 Electron 개발자 간의 토론 공간을 마련하고 일반적인 디버깅 도움을 제공하기로 결정했다.
  • 2021년에는 @BlackHole1의 도움으로 Electron China 사용자 그룹을 설립했다. 이 그룹은 중국의 급성장하는 기술 환경에서 Electron 사용자 증가에 중요한 역할을 했다. 중국 사용자들이 아이디어를 공유하고 영어 공간 외에서 Electron에 대해 논의할 수 있는 공간을 제공했다. 또한 cnpm이 중국 npm 미러에서 Electron의 나이틀리 릴리스를 지원한 노력에 감사드린다.

주목받는 오픈소스 프로그램에 참여하기

  • 우리는 2019년부터 매년 Hacktoberfest를 기념해 왔다. Hacktoberfest는 DigitalOcean이 주관하는 오픈소스 연례 행사로, 매년 수십 명의 열정적인 기여자들이 오픈소스 소프트웨어에 자신의 흔적을 남기기 위해 참여한다.

  • 2020년에는 Google Season of Docs의 첫 번째 버전에 참여했으며, @bandantonio와 함께 Electron의 신규 사용자 튜토리얼 흐름을 개선하는 작업을 진행했다.

  • 2022년에는 처음으로 Google Summer of Code 학생을 멘토링했다. @aryanshridharElectron Fiddle의 핵심 버전 로딩 로직을 리팩토링하고, 번들러를 webpack로 마이그레이션하는 훌륭한 작업을 수행했다.

모든 것을 자동화하자!

현재 Electron 프로젝트에는 약 30명의 활발한 메인테이너가 있다. 이 중 절반 미만이 풀타임 기여자이기 때문에, 처리해야 할 작업이 상당히 많다. 모든 것이 원활하게 돌아가도록 유지하는 비결은 무엇일까? 우리의 모토는 "컴퓨터는 저렴하지만, 인간의 시간은 비싸다"이다. 전형적인 엔지니어의 방식대로, 우리는 작업을 더 쉽게 하기 위해 다양한 자동화 지원 도구를 개발했다.

Electron의 핵심 코드베이스는 C++로 이루어진 거대한 규모를 자랑하며, 빌드 시간은 버그 수정과 새로운 기능을 빠르게 배포하는 데 항상 걸림돌이었다. 2020년, 우리는 Google의 분산 컴파일러 서비스인 Goma을 위한 커스텀 백엔드인 Not Goma을 배포했다. Not Goma는 인증된 사용자의 머신에서 컴파일 요청을 처리하고, 이를 백엔드의 수백 개의 코어에 분산시킨다. 또한 컴파일 결과를 캐싱하여 동일한 파일을 컴파일하는 다른 사용자가 미리 컴파일된 결과만 다운로드하면 되도록 한다.

Not Goma를 도입한 이후, 메인테이너들의 컴파일 시간은 몇 시간에서 몇 분으로 크게 단축되었다. 이제는 안정적인 인터넷 연결만 있으면 누구나 Electron을 컴파일할 수 있게 되었다!

info

오픈소스 기여자라면 Electron Build Tools를 통해 기본적으로 제공되는 Not Goma의 읽기 전용 캐시를 사용해 볼 수 있다.

지속적 인증(Continuous Factor Authentication)

지속적 인증(CFA)은 npm의 2단계 인증(2FA) 시스템을 자동화한 레이어로, semantic-release와 결합하여 다양한 @electron/ npm 패키지의 안전하고 자동화된 릴리즈를 관리한다.

semantic-release는 이미 npm 패키지 배포 과정을 자동화하지만, 2단계 인증을 비활성화하거나 이 제한을 우회하는 비밀 토큰을 전달해야 한다.

CFA는 npm 2FA를 위한 시간 기반 일회용 비밀번호(TOTP)를 임의의 CI 작업에 제공하도록 설계되었다. 이를 통해 semantic-release의 자동화 기능을 활용하면서도 2단계 인증의 추가 보안을 유지할 수 있다.

CFA는 Slack 통합 프론트엔드와 함께 사용되며, 유지 관리자는 TOTP 생성기가 있는 한 Slack이 설치된 모든 기기에서 패키지 배포를 검증할 수 있다.

info

CFA를 직접 프로젝트에서 사용해보고 싶다면, GitHub 저장소문서를 확인해보자. CircleCI를 CI 프로바이더로 사용한다면, CFA를 빠르게 설정할 수 있는 편리한 orb도 제공한다.

Sheriff

Sheriff는 GitHub, Slack, Google Workspace의 권한 관리를 자동화하기 위해 개발한 오픈소스 도구다.

Sheriff의 핵심 가치는 권한 관리를 투명한 프로세스로 만드는 데 있다. 이 도구는 단일 YAML 설정 파일을 사용해 위에 언급한 모든 서비스의 권한을 지정한다. Sheriff를 사용하면 리포지토리에 협력자로 추가되거나 새로운 메일링 리스트를 만드는 작업이 PR을 승인하고 병합하는 것만큼 간단해진다.

또한 Sheriff는 Slack에 감사 로그를 전송해 Electron 조직 내에서 의심스러운 활동이 발생할 때 관리자에게 경고를 보낸다.

GitHub는 풍부한 API 확장성을 제공하며, 공식적인 봇 애플리케이션 프레임워크인 Probot을 지원한다. 우리가 더 창의적인 업무에 집중할 수 있도록, 다양한 작은 봇들을 개발해 반복적인 작업을 자동화했다. 몇 가지 예를 살펴보자:

  • Sudowoodo는 Electron 릴리스 프로세스를 처음부터 끝까지 자동화한다. 빌드를 시작하고, 릴리스 자산을 GitHub와 npm에 업로드하는 작업을 포함한다.
  • Trop은 Electron의 백포트 프로세스를 자동화한다. GitHub PR 레이블을 기반으로 이전 릴리스 브랜치에 패치를 적용한다.
  • Roller는 Electron의 Chromium과 Node.js 의존성을 자동으로 업그레이드한다.
  • Cation은 electron/electron PR의 상태를 확인하는 봇이다.

이러한 봇들은 개발자 생산성을 크게 향상시켰다. 작은 봇들이 모여 큰 효율을 만들어낸 셈이다.

앞으로의 계획

Electron 프로젝트가 두 번째 10년을 맞이한 지금, 여러분은 Electron의 미래가 어떻게 펼쳐질지 궁금할 것이다.

우리는 Chromium의 릴리스 주기에 맞춰 Electron의 새로운 주요 버전을 8주마다 출시할 계획이다. 이를 통해 웹 플랫폼과 Node.js의 최신 기술을 Electron 프레임워크에 반영하면서도, 엔터프라이즈급 애플리케이션에 필요한 안정성과 보안을 유지할 것이다.

구체적인 계획이 확정되면, 우리는 이를 공식적으로 발표할 예정이다. 앞으로의 릴리스, 새로운 기능, 그리고 프로젝트 업데이트에 대한 최신 정보를 받아보고 싶다면 Electron 블로그를 읽거나, 소셜 미디어 프로필(TwitterMastodon)을 팔로우하면 된다.

Footnotes

  1. 이는 사실 electron-archive/brightray 프로젝트의 첫 번째 커밋이다. 이 프로젝트는 2017년 Electron에 통합되었고, Git 기록도 병합되었다. 하지만 누가 숫자를 세겠는가? 오늘은 우리의 생일이니, 우리만의 규칙을 만들겠다!

  2. 흔히 알려진 것과 달리, Electron은 더 이상 GitHub이나 Microsoft 소유가 아니며, 현재는 OpenJS Foundation의 일부이다.

Electron 23.0.0

· 5 min read

Electron 23.0.0이 출시되었습니다! 이번 버전에서는 Chromium 110, V8 11.0, Node.js 18.12.1로 업그레이드되었으며, Windows 7/8/8.1에 대한 지원이 중단되었습니다. 더 자세한 내용은 아래를 참고하세요!


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

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

주요 변경 사항

스택 변경 사항

새로운 기능

  • Display 객체에 label 속성을 추가했다. #36933
  • 사용자의 시스템 언어를 반환하는 app.getPreferredSystemLanguages() API를 추가했다. #36035
  • WebUSB API 지원을 추가했다. #36289
  • SerialPort.forget() 지원과 함께, 특정 오리진이 취소될 때 Session 객체에서 발생하는 새로운 이벤트 serial-port-revoked를 추가했다. #35310
  • macOS에서 Mission Control을 선택적으로 제외할 수 있도록 win.setHiddenInMissionControl API를 추가했다. #36092

윈도우 7/8/8.1 지원 중단

Electron 23부터는 윈도우 7, 8, 8.1을 더 이상 지원하지 않는다. Electron은 Chromium의 지원 중단 정책을 따르며, Chromium 109부터 윈도우 7, 8, 8.1과 윈도우 서버 2012 및 2012 R2 지원을 중단한다. 자세한 내용은 이 링크에서 확인할 수 있다.

주요 API 변경 사항

Electron 23 버전에서 도입된 주요 변경 사항은 다음과 같다. 더 자세한 내용과 향후 예정된 변경 사항은 Planned Breaking Changes 페이지에서 확인할 수 있다.

제거됨: BrowserWindow의 scroll-touch-* 이벤트

더 이상 사용되지 않는 scroll-touch-begin, scroll-touch-end, scroll-touch-edge 이벤트가 BrowserWindow에서 제거되었다. 대신 WebContents에서 새롭게 제공되는 input-event 이벤트를 사용한다.

// Electron 23.0에서 제거됨
-win.on('scroll-touch-begin', scrollTouchBegin)
-win.on('scroll-touch-edge', scrollTouchEdge)
-win.on('scroll-touch-end', scrollTouchEnd)

// 대체 방법
+win.webContents.on('input-event', (_, event) => {
+ if (event.type === 'gestureScrollBegin') {
+ scrollTouchBegin()
+ } else if (event.type === 'gestureScrollUpdate') +{
+ scrollTouchEdge()
+ } else if (event.type === 'gestureScrollEnd') {
+ scrollTouchEnd()
+ }
+})

20.x.y 버전 지원 종료

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

E22 (2022년 11월)E23 (2023년 2월)E24 (2023년 4월)E25 (2023년 5월)E26 (2023년 8월)
22.x.y23.x.y24.x.y25.x.y26.x.y
21.x.y22.x.y23.x.y24.x.y25.x.y
20.x.y21.x.y22.x.y23.x.y24.x.y

다음 단계

단기적으로 Electron 팀은 Chromium, Node, V8과 같은 주요 구성 요소의 개발 상황을 계속 따라가는데 주력할 예정이다.

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

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

Electron 22.0.0

· 9 min read

Electron 22.0.0이 출시되었다! 이번 버전에는 새로운 유틸리티 프로세스 API, Windows 7/8/8.1 지원 업데이트, 그리고 Chromium 108, V8 10.8, Node.js 16.17.1로의 업그레이드가 포함되었다. 자세한 내용은 아래를 참고하자!


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

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

주요 변경 사항

스택 변경 사항

주요 기능

UtilityProcess API #36089

새로운 UtilityProcess 메인 프로세스 모듈은 Node.js 통합만 포함된 가벼운 Chromium 자식 프로세스를 생성할 수 있게 해준다. 또한 MessageChannel을 통해 샌드박스된 렌더러와 통신도 가능하다. 이 API는 Node.js의 child_process.fork를 기반으로 설계되어 전환이 더 쉽도록 했다. 주요 차이점은 진입점 modulePath가 패키지된 애플리케이션 내에 있어야 하며, 신뢰할 수 있는 스크립트만 로드되도록 보장한다는 점이다. 또한 이 모듈은 기본적으로 렌더러와의 통신 채널 설정을 방지하여, 메인 프로세스가 애플리케이션 내에서 유일하게 신뢰할 수 있는 프로세스라는 계약을 유지한다.

새로운 UtilityProcess API에 대한 자세한 내용은 여기서 확인할 수 있다.

Windows 7/8/8.1 지원 업데이트

info

2023/02/16: Windows Server 2012 지원 업데이트

지난달 Google은 Chrome 109이 Windows Server 2012와 Windows Server 2012 R2에 대한 중요한 보안 수정 사항을 2023년 10월 10일까지 계속 제공할 것이라고 발표했다. 이에 따라 Electron 22(Chromium 108)의 예정된 지원 종료일이 2023년 5월 30일에서 2023년 10월 10일로 연장된다. Electron 팀은 2023년 10월 10일까지 이 프로그램의 일환으로 제공되는 모든 보안 수정 사항을 Electron 22에 백포트할 예정이다.

단, Windows 7/8/8.1에 대해서는 추가적인 보안 수정 사항을 제공하지 않는다. 또한, Electron 23(Chromium 110)은 이전에 발표한 대로 Windows 10 이상에서만 작동한다.

Electron 22은 Windows 7/8/8.1을 지원하는 마지막 Electron 주요 버전이 될 것이다. Electron은 Chromium의 지원 중단 정책을 따르며, Chromium 109에서 Windows 7/8/8.1 지원을 중단할 예정이다(자세히 알아보기).

Electron 23 및 이후 주요 버전에서는 Windows 7/8/8.1을 지원하지 않는다.

주요 변경 사항

  • Linux와 Windows에서 Web Bluetooth 핀 페어링을 지원하도록 추가했다. #35416
  • LoadBrowserProcessSpecificV8Snapshot 퓨즈를 추가했다. 이 퓨즈는 메인/브라우저 프로세스가 browser_v8_context_snapshot.bin 파일에서 V8 스냅샷을 로드하도록 한다. 다른 프로세스는 현재와 동일한 경로를 사용한다. #35266
  • WebContents.opener를 추가해 윈도우 오프너에 접근할 수 있게 했다. 또한 webContents.fromFrame(frame)을 추가해 WebFrameMain 인스턴스에 해당하는 WebContents를 가져올 수 있도록 했다. #35140
  • 새로운 세션 핸들러 ses.setDisplayMediaRequestHandler를 통해 navigator.mediaDevices.getDisplayMedia를 지원하도록 추가했다. #30702

주요 API 변경 사항

Electron 22에서 도입된 주요 변경 사항은 다음과 같다. 더 자세한 내용과 향후 예정된 변경 사항은 Planned Breaking Changes 페이지에서 확인할 수 있다.

더 이상 사용되지 않음: webContents.incrementCapturerCount(stayHidden, stayAwake)

webContents.incrementCapturerCount(stayHidden, stayAwake)는 이제 더 이상 사용되지 않는다. 페이지 캡처가 완료되면 webContents.capturePage가 자동으로 처리한다.

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

- w.webContents.incrementCapturerCount()
- w.capturePage().then(image => {
- console.log(image.toDataURL())
- w.webContents.decrementCapturerCount()
- })

+ w.capturePage().then(image => {
+ console.log(image.toDataURL())
+ })

더 이상 사용되지 않음: webContents.decrementCapturerCount(stayHidden, stayAwake)

webContents.decrementCapturerCount(stayHidden, stayAwake)는 더 이상 사용되지 않는다. 이제 페이지 캡처가 완료되면 webContents.capturePage에 의해 자동으로 처리된다.

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

- w.webContents.incrementCapturerCount()
- w.capturePage().then(image => {
- console.log(image.toDataURL())
- w.webContents.decrementCapturerCount()
- })

+ w.capturePage().then(image => {
+ console.log(image.toDataURL())
+ })

제거됨: WebContents new-window 이벤트

WebContents의 new-window 이벤트가 제거되었다. 이 이벤트는 webContents.setWindowOpenHandler()로 대체되었다.

- webContents.on('new-window', (event) => {
- event.preventDefault()
- })

+ webContents.setWindowOpenHandler((details) => {
+ return { action: 'deny' }
+ })

더 이상 사용되지 않음: BrowserWindow의 scroll-touch-* 이벤트

BrowserWindow의 scroll-touch-begin, scroll-touch-end, scroll-touch-edge 이벤트는 더 이상 사용되지 않는다. 대신 WebContents에서 새로 제공되는 input-event 이벤트를 사용한다.

// 더 이상 사용되지 않음
- win.on('scroll-touch-begin', scrollTouchBegin)
- win.on('scroll-touch-edge', scrollTouchEdge)
- win.on('scroll-touch-end', scrollTouchEnd)

// 대체 코드
+ win.webContents.on('input-event', (_, event) => {
+ if (event.type === 'gestureScrollBegin') {
+ scrollTouchBegin()
+ } else if (event.type === 'gestureScrollUpdate') {
+ scrollTouchEdge()
+ } else if (event.type === 'gestureScrollEnd') {
+ scrollTouchEnd()
+ }
+ })

Electron 19.x.y 지원 종료

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

E19 (2022년 5월)E20 (2022년 8월)E21 (2022년 9월)E22 (2022년 11월)E23 (2023년 1월)
19.x.y20.x.y21.x.y22.x.y23.x.y
18.x.y19.x.y20.x.y21.x.y22.x.y
17.x.y18.x.y19.x.y20.x.y21.x.y

다음은 무엇인가

Electron 프로젝트는 2022년 12월 한 달 동안 일시 중단되고, 2023년 1월에 다시 시작될 예정이다. 자세한 내용은 12월 중단 관련 블로그 글에서 확인할 수 있다.

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

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

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

Farewell, Windows 7/8/8.1

· 5 min read

Electron은 Electron 23부터 Windows 7, Windows 8, Windows 8.1에 대한 지원을 중단한다.


Chromium의 지원 중단 정책에 따라, Electron은 Electron 23부터 Windows 7, Windows 8, Windows 8.1에 대한 지원을 종료한다. 이는 Microsoft가 Windows 7 ESUWindows 8.1 extended에 대한 지원을 2023년 1월 10일에 종료한 것과 일치한다.

Electron 22는 Windows 10 이전 버전을 지원하는 마지막 주요 버전이 된다. Electron 23 및 이후 주요 버전에서는 Windows 7/8/8.1을 더 이상 지원하지 않는다. 이전 버전의 Electron은 Windows 7에서 계속 작동하며, 2023년 5월 30일까지 Electron 22.x 시리즈에 대한 패치를 계속 제공할 예정이다. 이 날짜는 지원 타임라인에 따라 Electron이 22.x에 대한 지원을 종료하는 시점이다.

지원 중단 이유

Electron은 Chromium의 지원 중단 정책을 따르며, Chromium 109부터 지원이 중단된다. Chromium 110을 포함하는 Electron 23은 이전 버전의 Windows를 더 이상 지원하지 않는다.

Chromium 108을 포함하는 Electron 22는 따라서 마지막 지원 버전이 된다.

지원 중단 일정

다음은 계획된 지원 중단 일정이다:

  • 2022년 12월: Electron 팀이 연말 휴가 기간 동안 조용한 기간을 갖는다.
  • 2023년 1월: Windows 7 및 8 관련 이슈를 모든 지원되는 릴리스 브랜치에서 수용한다.
  • 2023년 2월 7일: Electron 23이 출시된다.
  • 2023년 2월 8일 - 2023년 5월 29일: Electron은 Electron 23 이전 버전의 지원 라인에 대한 수정 사항을 계속 수용한다.
  • 2023년 5월 30일: Electron 22의 지원 주기가 종료된다.

이것이 개발자에게 의미하는 바는 다음과 같다:

  • Electron 팀은 Windows 7/8/8.1 관련 이슈와 수정 사항을 각 지원 라인의 지원 주기가 종료될 때까지 안정적인 지원 라인에서 수용한다.
    • 이는 특히 Electron 22, Electron 21 및 Electron 20에 적용된다.
  • Windows 7/8/8.1 관련 새로운 이슈는 Electron 23 이전 버전에서만 수용된다.
    • 새로운 릴리스 라인에서는 어떤 새로운 이슈도 수용하지 않는다.
  • Electron 22의 지원 주기가 종료되면 Windows 7/8/8.1 관련 모든 기존 이슈는 종료된다.
info

2023/02/16: Windows Server 2012 지원 업데이트

지난달, Google은 Chrome 109이 Windows Server 2012 및 Windows Server 2012 R2에 대한 중요한 보안 수정 사항을 2023년 10월 10일까지 계속 제공할 것이라고 발표했다. 이에 따라 Electron 22(Chromium 108)의 지원 종료 예정일은 2023년 5월 30일에서 2023년 10월 10일로 연장된다. Electron 팀은 2023년 10월 10일까지 이 프로그램의 일부인 보안 수정 사항을 Electron 22에 백포트할 계획이다.

단, Windows 7/8/8.1에 대한 추가 보안 수정 사항은 제공하지 않는다. 또한, 이전에 발표한 대로 Electron 23(Chromium 110)은 Windows 10 이상에서만 작동한다.

다음 단계

궁금한 점이나 문의사항이 있다면 info@electronjs.org로 편하게 연락해 주세요. 또한 공식 Electron Discord에서 커뮤니티 지원을 받을 수 있습니다.

A Quiet Place Part II (Dec'22)

· 3 min read

Electron 프로젝트는 2022년 12월 한 달 동안 휴식기를 갖고, 2023년 1월에 다시 본격적으로 재개될 예정이다.

via GIPHY


12월에도 변하지 않는 것들

  1. 제로데이 및 기타 주요 보안 관련 릴리스는 필요에 따라 게시된다. 보안 사고는 SECURITY.md를 통해 보고해야 한다.
  2. Code of Conduct 보고와 조정은 계속 이어질 것이다.

12월에 달라지는 점

  1. 12월에는 새로운 안정판(Stable) 릴리스가 없습니다. 또한 12월 마지막 2주 동안은 Nightly와 Alpha 릴리스도 중단됩니다.

  2. 몇 가지 예외를 제외하고 풀 리퀘스트 리뷰나 머지는 진행되지 않습니다.

  3. 모든 저장소에서 이슈 트래커 업데이트가 중단됩니다.

  4. 유지 관리자들이 Discord에서 디버깅 도움을 제공하지 않습니다.

  5. 소셜 미디어 콘텐츠 업데이트가 이루어지지 않습니다.

왜 이런 조치를 취했나?

2021년 12월 Quiet Month의 성공적인 경험을 바탕으로, 2022년에도 이를 다시 시행하기로 결정했다. 대부분의 기업들에게 12월은 여전히 조용한 시기이기 때문에, 우리는 유지보수 담당자들이 충전할 수 있는 기회를 제공하고 싶었다. 모두가 2023년을 기대하고 있으며, 좋은 일들이 있을 것으로 예상한다! 다른 프로젝트들도 비슷한 조치를 고려해 보길 권장한다.

Introducing Electron Forge 6

· 11 min read

Electron Forge v6.0.0 출시를 발표하게 되어 기쁩니다! 이번 릴리스는 2018년 이후 첫 번째 메이저 업데이트이며, 프로젝트가 electron-userland에서 Github의 메인 electron 조직으로 이동했습니다.

Electron Forge의 새로운 기능과 여러분의 앱에 적용하는 방법을 계속 읽어보세요!

Electron Forge란 무엇인가?

Electron Forge는 Electron 애플리케이션을 패키징하고 배포하기 위한 도구다. Electron의 빌드 도구 생태계를 단일 확장 가능한 인터페이스로 통합하여 누구나 쉽게 Electron 앱을 만들 수 있도록 돕는다.

주요 기능은 다음과 같다:

  • 📦 애플리케이션 패키징 및 코드 서명
  • 🚚 Windows, macOS, Linux에서 커스텀 설치 프로그램 지원 (DMG, deb, MSI, PKG, AppX 등)
  • ☁️ 클라우드 프로바이더를 위한 자동화된 배포 기능 (GitHub, S3, Bitbucket 등)
  • ⚡️ webpack과 TypeScript를 위한 사용하기 쉬운 보일러플레이트 템플릿 제공
  • ⚙️ 네이티브 Node.js 모듈 지원
  • 🔌 확장 가능한 JavaScript 플러그인 API
더 알아보기

Forge의 철학과 아키텍처에 대해 더 알고 싶다면 [Why Electron Forge] 문서를 참고하자.

v6의 새로운 점

완전히 다시 작성됨

v1부터 v5까지 Electron Forge는 현재 중단된 electron-compile 프로젝트를 기반으로 했다. Forge 6는 완전히 다시 작성되어 새로운 모듈식 아키텍처를 도입했으며, 이는 모든 Electron 애플리케이션의 요구를 충족하도록 확장할 수 있다.

지난 몇 년 동안 Forge v6.0.0-beta는 v5와 동일한 기능을 구현했고, 코드 변경이 크게 줄어들어 이제 일반적으로 사용할 준비가 되었다.

잘못된 패키지를 설치하지 마세요

5버전 이하에서는 Electron Forge가 npm의 electron-forge 패키지로 배포되었다. v6부터는 Forge가 모노레포 프로젝트로 구조화되어 여러 작은 프로젝트로 구성된다.

공식 지원

역사적으로 Electron 관리자들은 빌드 도구에 대해 특별한 의견을 제시하지 않았고, 이를 다양한 커뮤니티 패키지에 맡겨왔다. 하지만 Electron이 프로젝트로서 성숙해짐에 따라, 새로운 Electron 개발자들이 자신의 앱을 빌드하고 배포하기 위해 어떤 도구가 필요한지 이해하기가 점점 어려워졌다.

Electron 개발자들이 배포 과정을 더 쉽게 따라갈 수 있도록 우리는 Forge를 Electron의 공식적인 통합 빌드 파이프라인으로 지정하기로 결정했다.

지난 한 해 동안, 우리는 Forge를 점진적으로 공식 Electron 문서에 통합해왔고, 최근에는 Forge를 electron-userland/electron-forge에서 electron/forge 리포지토리로 이전했다. 이제 우리는 드디어 Electron Forge를 일반 사용자들에게 공개할 준비가 되었다!

시작하기

새로운 Forge 프로젝트 초기화

Electron Forge 프로젝트를 새로 시작하려면 create-electron-app CLI 스크립트를 사용하면 된다.

yarn create electron-app my-app --template=webpack
cd my-app
yarn start

이 스크립트는 my-app 폴더에 Electron 프로젝트를 생성한다. 프로젝트는 완전한 JavaScript 번들링과 사전 구성된 빌드 파이프라인을 포함한다.

더 자세한 정보는 Forge 문서의 시작하기 가이드를 참고하면 된다.

퍼스트클래스 웹팩 지원

위 코드 조각은 Forge의 [Webpack Template]을 사용한다. 이 템플릿은 새로운 Electron 프로젝트를 시작하기에 적합하다. 이 템플릿은 @electron-forge/plugin-webpack 플러그인을 기반으로 한다. 이 플러그인은 웹팩과 Electron Forge를 다음과 같은 방식으로 통합한다:

  • webpack-dev-server를 통해 로컬 개발 흐름을 개선한다. 렌더러에서 HMR을 지원한다.
  • 애플리케이션 패키징 전에 웹팩 번들에 대한 빌드 로직을 처리한다.
  • 웹팩 번들링 과정에서 네이티브 Node 모듈을 지원한다.

타입스크립트 지원이 필요하다면 [Webpack + TypeScript Template]을 사용하는 것을 고려해 보면 된다.

기존 프로젝트 가져오기

Electron Forge CLI는 기존 Electron 프로젝트를 가져오는 명령어도 제공한다.

cd my-app
yarn add --dev @electron-forge/cli
yarn electron-forge import

import 명령어를 사용하면 Electron Forge는 몇 가지 핵심 의존성을 추가하고 새로운 forge.config.js 설정 파일을 생성한다. 만약 기존에 사용하던 빌드 도구(예: Electron Packager, Electron Builder, 또는 Forge 5)가 있다면 가능한 한 많은 설정을 자동으로 마이그레이션한다. 일부 기존 설정은 수동으로 마이그레이션해야 할 수도 있다.

수동 마이그레이션에 대한 자세한 내용은 Forge의 [가져오기 문서]에서 확인할 수 있다. 도움이 필요하다면 Discord 서버를 방문해 보자!

Forge로 전환해야 하는 이유

Electron 앱을 패키징하고 배포하기 위한 도구가 이미 있다 하더라도, Electron Forge를 도입함으로써 얻는 이점이 초기 전환 비용을 상쇄할 수 있다.

Forge를 사용하는 데에는 두 가지 주요 이점이 있다:

  1. Forge는 Electron에서 새로운 기능이 지원되자마자 앱 빌드에 바로 적용한다. 이 경우, 새로운 도구 지원을 직접 연결하거나, 다른 패키지가 해당 지원을 구현하기를 기다릴 필요 없이 바로 업그레이드할 수 있다. 최근 예시로는 macOS 유니버설 바이너리ASAR 무결성 검사가 있다.

  2. Forge의 다중 패키지 아키텍처는 이해와 확장이 쉽다. Forge는 명확한 책임을 가진 여러 작은 패키지로 구성되어 있어 코드 흐름을 따라가기 쉽다. 또한, Forge의 확장 가능한 API 설계는 제공된 구성 옵션과 별도로 고급 사용 사례를 위한 추가 빌드 로직을 작성할 수 있게 한다. 커스텀 Forge 플러그인, 메이커, 퍼블리셔를 작성하는 방법에 대한 자세한 내용은 문서의 Electron Forge 확장 섹션을 참고한다.

주요 변경 사항

Forge 6은 오랜 시간 동안 베타 단계를 거쳤으며, 릴리스 속도가 점차 느려졌다. 그러나 2022년 하반기에 개발 속도를 높였고, 최종 안정 버전인 v6.0.0 출시 전 마지막 몇 차례의 릴리스를 통해 주요 변경 사항을 적용했다.

Electron Forge 6 베타 사용자라면 최근 베타 버전(>=6.0.0-beta.65)에서 발생한 주요 변경 사항 목록을 확인하려면 v6.0.0 GitHub 릴리스 노트를 참고한다.

전체 변경 사항과 커밋 내역은 저장소의 CHANGELOG.md에서 확인할 수 있다.

여러분의 피드백을 보내주세요!

Electron Forge 팀은 항상 프로젝트를 더 나은 방향으로 개선하기 위해 노력하고 있습니다. 여러분의 의견을 통해 Electron Forge를 더욱 발전시킬 수 있습니다.

여러분은 다음과 같은 방법으로 도움을 줄 수 있습니다:

  • 기능 요청 제출
  • 이슈 등록
  • 피드백 공유

또한 공식 Electron Discord 서버에 참여하여 Electron Forge 관련 토론에 참여할 수 있습니다. Discord에는 Electron Forge 전용 채널이 마련되어 있습니다.

https://electronforge.io 사이트의 문서에 대한 피드백을 제공하고 싶다면, electron-forge/electron-forge-docs 저장소와 동기화된 GitBook 인스턴스를 활용할 수 있습니다.

Maintainer Summit 2022 Recap

· 10 min read

지난달, Electron의 메인테이너 그룹이 캐나다 밴쿠버에서 모여 2023년 및 그 이후의 프로젝트 방향을 논의했다. 4일간의 회의실에서 코어 메인테이너와 초대된 협력자들이 새로운 계획, 유지 관리의 어려움, 프로젝트 전반적인 상태에 대해 이야기를 나눴다.

단체 사진! @groundwater가 촬영.

앞으로도 팀은 정기적이고 빠른 Chromium 업그레이드, 버그 수정, 그리고 모든 사용자를 위해 Electron을 더 안전하고 성능 좋게 만드는 데 전념할 계획이다. 또한 커뮤니티와 공유하고 싶은 몇 가지 흥미로운 프로젝트도 진행 중이다!

혁신적인 새로운 API

Electron 프로젝트에서 합의가 필요한 주요 API 제안은 Request for Comments(RFC) 프로세스를 거친다. 이 과정은 API 작업 그룹 멤버들의 리뷰를 받는다.

올해 우리는 Electron 앱의 새로운 가능성을 열어줄 두 가지 주요 제안을 추진했다. 이 제안들은 아직 실험적이지만, 앞으로 어떤 변화가 예상되는지 미리 살펴보자!

새로운 네이티브 애드온 개선 사항 (C API)

이 제안은 앱 개발자가 Electron의 내부 리소스와 상호작용하는 네이티브 Node 애드온을 직접 작성할 수 있도록 하는 새로운 Electron C API 계층을 설명한다. 이는 Node의 Node-API와 유사한 방식으로 동작한다. 제안된 새로운 API에 대한 더 자세한 정보는 여기에서 확인할 수 있다.

예제: Chromium 리소스를 활용해 앱 성능 강화하기

많은 Electron 앱은 Chromium 내부와 직접 상호작용하기 위해 자체 포크를 유지한다. 이러한 리소스는 일반(수정되지 않은) Electron에서는 접근할 수 없다. C API 계층에서 이러한 리소스를 노출함으로써, 이 코드는 Electron과 함께 네이티브 모듈로 존재할 수 있다. 이는 앱 개발자의 유지보수 부담을 줄이는 데 도움이 된다.

크로미움의 UI 레이어 공개 (Views API)

크롬의 사용자 인터페이스(UI) 중 웹사이트가 아닌 부분, 예를 들어 툴바, 탭, 버튼 등은 Views라는 프레임워크로 구축된다. Views API 제안은 이 프레임워크의 일부를 Electron에서 JavaScript 클래스로 제공하는 것을 목표로 한다. 이를 통해 개발자는 Electron 애플리케이션에 웹 기반이 아닌 UI 엘리먼트를 추가할 수 있게 된다. 이는 앱이 웹 콘텐츠를 임시로 조합해야 하는 상황을 방지할 것이다.

이 새로운 API 세트를 가능하게 하기 위한 기반 작업이 현재 진행 중이다. 가까운 미래에 기대할 수 있는 몇 가지 기능은 다음과 같다.

예제: WebContentsView로 윈도우 모델 리팩토링하기

첫 번째로 계획한 변경 사항은 Chrome의 WebContentsView를 Electron API로 노출시키는 것이다. 이는 기존 BrowserView API를 대체할 예정이다. BrowserView는 이름과 달리 Chromium Views와 무관한 Electron 전용 코드였다. WebContentsView를 노출함으로써 웹 콘텐츠를 표시할 수 있는 재사용 가능한 View 객체를 확보하게 되며, 이를 통해 BrowserWindow 클래스를 순수 JavaScript로 만들고 코드 복잡성을 더욱 줄일 수 있다.

이 변경 사항은 앱 개발자에게 새로운 기능을 크게 제공하지는 않지만, 내부적으로 많은 코드를 제거하는 대규모 리팩토링이다. 이를 통해 Chromium 업그레이드가 간소화되고 주요 버전 간 새로운 버그 발생 위험이 줄어든다.

앱에서 BrowserViews를 사용하는 Electron 개발자라면 걱정하지 말자. 기존 BrowserView 클래스를 WebContentsView에 대한 셰임(shim)으로 만들어 새로운 API로 전환할 수 있는 완충 장치를 제공할 계획이다.

참고: electron/electron#35658

예제: ScrollView를 이용한 스크롤 가능한 웹 콘텐츠

Stack의 개발자들은 Chromium의 ScrollView 컴포넌트를 Electron API에 노출시키는 프로젝트를 진행하고 있다. 이 새로운 API를 사용하면 자식 View 컴포넌트를 가로 또는 세로로 스크롤 가능하게 만들 수 있다.

이 API는 단일 기능을 제공하지만, 팀의 궁극적인 목표는 더 복잡한 비 HTML 인터페이스를 구축할 수 있는 유틸리티 View 컴포넌트 세트를 만드는 것이다.

참여하기

이 API 제안에 관심이 있는 Electron 앱 개발자라면, 지금 바로 참여할 수 있다. 비록 추가 RFC를 받을 준비가 완벽히 되지는 않았지만, 앞으로 더 자세한 내용이 공개될 예정이니 계속 지켜봐 주길 바란다!

Electron Forge v6 안정 버전 출시

Electron 프레임워크가 처음 등장한 이래로, 빌드 도구 생태계는 주로 커뮤니티 주도로 발전해 왔다. 이 과정에서 electron-winstaller, electron-packager, electron-notarize, electron-osx-sign 등과 같은 단일 목적의 작은 패키지들이 많이 등장했다. 이러한 도구들은 잘 작동하지만, 사용자들이 이를 조합해 동작하는 빌드 파이프라인을 구성하는 것은 부담스러운 일이었다.

Electron 개발자들에게 더 친숙한 경험을 제공하기 위해, 우리는 기존의 모든 도구를 단일 인터페이스로 통합한 올인원 솔루션인 Electron Forge를 개발했다. Forge는 2017년부터 개발되어 왔지만, 지난 몇 년 동안 프로젝트가 잠정 중단된 상태였다. 그러나 Electron의 빌드 도구 상태에 대한 커뮤니티 피드백을 바탕으로, 우리는 차세대 안정 버전인 Forge의 주요 버전을 출시하기 위해 열심히 작업했다.

Electron Forge 6은 퍼스트클래스 TypeScript 및 Webpack 지원과 함께, 개발자가 자신만의 플러그인과 설치 프로그램을 만들 수 있도록 확장 가능한 API를 제공한다.

공지 예정: 곧 발표 예정입니다

Forge를 활용해 프로젝트를 구축하거나 Forge의 확장 가능한 서드파티 API를 사용해 템플릿이나 플러그인을 개발하는 데 관심이 있다면, 이번 달 중 예정된 Forge v6 안정판 출시에 대한 공식 발표를 기대해 주세요!

다음은 무엇을 준비하고 있나?

위에서 언급한 내용 외에도, 팀은 항상 앱 개발자와 최종 사용자를 위해 Electron 경험을 개선할 수 있는 다양한 탐구 프로젝트를 고민하고 있다. 업데이터 도구, API 리뷰 프로세스, 그리고 향상된 문서화 작업도 현재 실험 중인 부분이다. 가까운 미래에 더 많은 소식을 전할 수 있기를 기대한다!

Electron 21.0.0

· 5 min read

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


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

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

주요 변경 사항

스택 변경 사항

새로운 기능

  • webFrameMain.origin 추가. #35534
  • 새로운 WebContents.ipcWebFrameMain.ipc API 추가. #35231
  • 패널과 유사한 동작 지원 추가. 윈도우가 전체 화면 앱 위에 떠있을 수 있음. #34388
  • macOS 앱에서 APNs를 통한 푸시 알림 지원 추가. #33574

주요 변경 사항과 API 변화

Electron 21에서 도입된 주요 변경 사항은 다음과 같다.

V8 메모리 케이지 활성화

Electron 21은 Chrome 103에서와 마찬가지로 V8 샌드박스 포인터를 활성화했다. 이 기능은 네이티브 모듈에 몇 가지 영향을 미친다. V8 메모리 케이지는 성능과 보안 측면에서 이점을 제공하지만, 네이티브 모듈에 새로운 제약을 부과한다. 예를 들어, 외부("오프-힙") 메모리를 가리키는 ArrayBuffers 사용에 제한이 생긴다. 자세한 내용은 이 블로그 포스트를 참고하면 된다. #34724

리팩터링된 webContents.printToPDF

webContents.printToPDF가 Chromium의 헤드리스 구현과 일치하도록 리팩터링되었다. 자세한 내용은 #33654을 참고한다.

이러한 변경 사항과 향후 예정된 변경에 대한 자세한 정보는 Planned Breaking Changes 페이지에서 확인할 수 있다.

18.x.y 버전 지원 종료

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

E18 (2022년 3월)E19 (2022년 5월)E20 (2022년 8월)E21 (2022년 9월)E22 (2022년 12월)
18.x.y19.x.y20.x.y21.x.y22.x.y
17.x.y18.x.y19.x.y20.x.y21.x.y
16.x.y17.x.y18.x.y19.x.y20.x.y

다음 개발 계획

단기적으로, Electron 팀은 Chromium, Node, V8과 같은 주요 구성 요소의 개발 속도를 따라가며 지속적으로 업데이트하는 데 주력할 예정이다.

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

향후 예정된 주요 변경 사항은 Planned Breaking Changes 페이지에서 확인할 수 있다.

Electron 20.0.0

· 7 min read

Electron 20.0.0이 출시되었습니다! 이번 버전은 Chromium 104, V8 10.4, 그리고 Node.js 16.15.0으로 업그레이드되었습니다. 더 자세한 내용은 아래를 참고하세요!


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

주요 변경 사항

새로운 기능

  • 윈도우에서 몰입형 다크 모드를 추가했다. #34549
  • 패널 형태의 동작을 지원한다. 윈도우가 전체 화면 앱 위에 떠 있을 수 있다. #34665
  • 윈도우 11에서 윈도우 컨트롤 오버레이 버튼의 외관과 느낌을 더 네이티브하게 업데이트했다. #34888
  • nodeIntegration: true 또는 sandbox: false를 명시하지 않으면 기본적으로 렌더러가 샌드박스 처리된다. #35125
  • nan으로 네이티브 모듈을 빌드할 때 안전 장치를 추가했다. #35160

스택 변경사항

주요 변경 사항 및 API 변화

Electron 20 버전에서 도입된 주요 변경 사항은 다음과 같다. 이와 관련된 추가 정보와 향후 예정된 변경 사항은 Planned Breaking Changes 페이지에서 확인할 수 있다.

기본값 변경: nodeIntegration: true가 없는 렌더러는 기본적으로 샌드박스 처리됨

이전에는 프리로드 스크립트를 지정한 렌더러가 기본적으로 샌드박스 처리되지 않았다. 이는 기본적으로 프리로드 스크립트가 Node.js에 접근할 수 있음을 의미했다. Electron 20부터 이 기본값이 변경되었다. Electron 20부터는 nodeIntegration: true 또는 sandbox: false를 명시적으로 지정하지 않는 한, 렌더러는 기본적으로 샌드박스 처리된다.

만약 여러분의 프리로드 스크립트가 Node에 의존하지 않는다면, 별도의 조치가 필요 없다. 하지만 프리로드 스크립트가 Node에 의존한다면, 렌더러에서 Node 사용을 제거하도록 리팩토링하거나, 관련 렌더러에 대해 sandbox: false를 명시적으로 지정해야 한다.

수정: nan 네이티브 모듈의 자동 크래시 문제

Electron 20에서는 네이티브 모듈과 관련된 두 가지 사항을 변경했다:

  1. V8 헤더가 이제 기본적으로 c++17을 사용한다. 이 플래그는 electron-rebuild에 추가되었다.
  2. nan에 의존하는 네이티브 모듈에서 누락된 include로 인해 발생하던 자동 크래시 문제를 수정했다.

최대한 안정성을 확보하려면, 특히 nan에 의존하는 모듈을 리빌드할 때 node-gyp >=8.4.0과 electron-rebuild >=3.2.9를 사용할 것을 권장한다. 자세한 내용은 electron #35160과 node-gyp #2497을 참고한다.

제거됨: Linux에서 .skipTaskbar

X11 환경에서 skipTaskbar는 X11 윈도우 매니저에게 _NET_WM_STATE_SKIP_TASKBAR 메시지를 보낸다. Wayland에는 이에 직접 대응하는 기능이 없으며, 알려진 해결 방법들은 허용하기 어려운 단점을 가지고 있다. 예를 들어, GNOME에서 Window.is_skip_taskbar를 사용하려면 안전하지 않은 모드가 필요하다. 따라서 Electron은 Linux에서 이 기능을 지원할 수 없다.

17.x.y 버전 지원 종료

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

E18 (2022년 3월)E19 (2022년 5월)E20 (2022년 8월)E21 (2022년 9월)E22 (2022년 12월)
18.x.y19.x.y20.x.y21.x.y22.x.y
17.x.y18.x.y19.x.y20.x.y21.x.y
16.x.y17.x.y18.x.y19.x.y20.x.y
15.x.y--------

다음 단계

단기적으로, Electron 팀은 Chromium, Node, V8과 같은 주요 컴포넌트의 개발 속도를 따라잡는 데 계속 집중할 예정이다. 릴리스 일정에 대해 약속을 하지는 않지만, 대략 2개월마다 이러한 컴포넌트의 새 버전과 함께 Electron의 새로운 주요 버전을 출시할 계획이다.

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

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