メインコンテンツへ飛ぶ

Tech Talk: How Electron went Wayland-native, and what it means for your apps

· 読むのにかかる時間 1 分
info

Tech talks are a new blog post series where we share glimpses into our work on Electron. If you find this work interesting, please consider contributing!

When Electron switched to Wayland on Linux last fall, most people didn't notice.

Major Linux distributions adopted the modern display protocol years ago, and both the KDE Plasma and GNOME desktop environments are in the process of dropping X11 support completely.

But a platform migration isn't complete without apps, and a large part of the Linux app ecosystem went through a second Wayland transition last August — well after most distros had changed their defaults. That's when Chromium turned on Wayland by default, bringing Electron and dozens of Linux desktop apps along with it.

Electron 41

· 読むのにかかる時間 1 分

Electron 41 has been released! It includes upgrades to Chromium 146.0.7680.65, V8 14.6, and Node v24.14.0.


The Electron team is excited to announce the release of Electron 41! npm install electron@latest から npm でインストールするか、リリースウェブサイト からダウンロードできます。 このリリースの詳細は続きをご覧ください。

何かフィードバックがあれば、BlueskyMastodon で共有したり、コミュニティの Discord に参加してみましょう! バグや機能の要望は Electron の Issue トラッカー で報告できます。

info

After publishing the initial 41.0.0 package, we integrated some high-priority bugs into follow-up patch releases. We recommend installing 41.0.2 when upgrading to Electron 41.

注目すべき変更

ASAR Integrity digest for improved security

As of Electron 41, macOS Electron apps can now embed a digest of their ASAR Integrity information. This adds an additional layer of tamper detection for apps that use ASAR Integrity by validating the integrity information itself at app launch.

To enable the feature for your app, you can run the following command with @electron/asar v4.1.0 and above:

asar integrity-digest on /path/to/YourApp.app

You must re-sign your app afterwards. For more information, see the @electron/asar CLI documentation.

Support for this feature in Electron Forge is planned for the near future (electron/forge#4159).

Improved Wayland support

On Wayland (Linux), frameless windows now have drop shadows and extended resize boundaries. To create fully frameless windows with no decorations, set hasShadow: false in the window constructor. #49885

Mitchell Cohen is writing a blog article about recent work to improve Electron's support of Wayland and client-side decorations on Linux. Watch this space!

Added support for MSIX auto-updating

The Electron team recently added MSIX auto-updater support according to RFC #21. You can now ship both MSIX and Squirrel.Mac in your update server essentially with the same JSON response format. See the autoUpdater documentation for more information.

This was added in Electron 41 by #49586 and has also been backported to Electron 39.5.0 (#49585) and 40.2.0 (#49587).

Electron 40.0.0

· 読むのにかかる時間 1 分

Electron 40.0.0 がリリースされました! これには Chromium 144.0.7559.60、V8 14.4、Node 24.11.1 へのアップグレードが含まれています。


Electron チームは、Electron 40.0.0 のリリース発表にワクワクしています! npm install electron@latest から npm でインストールするか、リリースウェブサイト からダウンロードできます。 このリリースの詳細は続きをご覧ください。

何かフィードバックがあれば、BlueskyMastodon で共有したり、コミュニティの Discord に参加してみましょう! バグや機能の要望は Electron の Issue トラッカー で報告できます。

テックトーク: ウインドウのサイズ変更動作の改善

· 読むのにかかる時間 1 分

私たちは、Electron での取り組みを垣間見られる新しいブログ投稿シリーズを開始します。 この働きに興味を感じましたら、貢献をご検討ください!


最近、私は Electron と Chromium のウインドウのサイズ変更動作の改善に取り組みました。

バグ

Windows では、ウインドウのサイズを変更すると以下のように古いフレームが表示されるという問題が発生していました。

ウインドウのサイズを変更するときに古いフレームが表示される問題を示すアニメーション GIF

このバグに特に興味深かった理由は何ですか?

  1. 挑戦的だった。
  2. 大規模なコードベースの奥深くにあった。
  3. 後でわかるように、内部には 2 つの異なるバグがあった。

バグの修正

このようなバグの場合、最初の課題は調べ始めを把握することです。

Electron は、Google Chrome のオープンソース版である Chromium をベースに構築されています。 Electron をコンパイルするとき、Electron のソースコードがサブディレクトリとして Chromium のソースツリーに追加されます。 Electron は、最新ブラウザの機能を提供するためにそののほとんどを Chromium のコードに依存しています。

Chromium には約 3600 万行のコードがあります。 Electron も大きなプロジェクトです。 この問題の原因となる可能性のあるコードは大量にあります。

12 月の安息月 (Dec'25)

· 読むのにかかる時間 1 分

12 月 1 日から Electron プロジェクトは安息期間に入り、2026 年 1 月にフル稼働に戻る予定です。 完全な詳細は、ポリシー の節をご参照ください。

2020 年以来、12 月はプロジェクトメンテナが通常のメンテナンス業務から離れて休憩をとったり集中して作業したりする時期となっています。 この休暇は私たちが休息して来たる年に向けて元気を取り戻すのに役立ちます。

とはいえ、こういった 1 か月に及ぶ休止はオープンソースプロジェクトが健全な状態にあるからこそ実現できます。プロジェクトを継続的に推進してくださっているすべてのメンテナと外部貢献者の方々に感謝申し上げます。 ❤️

Electron 39.0.0

· 読むのにかかる時間 1 分

Electron 39.0.0 がリリースされました! これには Chromium 142.0.7444.52、V8 14.2、Node 22.20.0 へのアップグレードが含まれています。


Electron チームは、Electron 39.0.0 のリリース発表にワクワクしています! npm install electron@latest から npm でインストールするか、リリースウェブサイト からダウンロードできます。 このリリースの詳細は続きをご覧ください。

何かフィードバックがあれば、BlueskyMastodon で共有したり、コミュニティの Discord に参加してみましょう! バグや機能の要望は Electron の Issue トラッカー で報告できます。

注目すべき変更

ASAR 整合性が安定版に

長年「実験的」機能だったASAR 整合性は、Electron 39 で安定版になりました。 この機能を有効にすると、パッケージされた app.asar が実行時にビルド時のハッシュに対して検証され、改ざんを検出します。 ハッシュが存在しない場合、またはハッシュが一致しない場合は、アプリが強制終了します。

ASAR 整合性のドキュメント から、この機能がどのように機能するか、アプリケーションにどのように活用するか、Electron Forge や Electron Packager でどのように使用するかといった、詳細な情報をご覧いただけます。

関連して、Electron Packager v19 はデフォルトで ASAR が有効になります。 #1841

Electron 38.0.0

· 読むのにかかる時間 1 分

Electron 38.0.0 がリリースされました! これには Chromium 140.0.7339.41、V8 14.0、Node 22.16.0 へのアップグレードが含まれています。


Electron チームは、Electron 38.0.0 のリリース発表にワクワクしています! npm install electron@latest から npm でインストールするか、リリースウェブサイト からダウンロードできます。 このリリースの詳細は続きをご覧ください。

何かフィードバックがあれば、BlueskyMastodon で共有したり、コミュニティの Discord に参加してみましょう! バグや機能の要望は Electron の Issue トラッカー で報告できます。

Electron 37.0.0

· 読むのにかかる時間 1 分

Electron 37.0.0 がリリースされました! これには Chromium 138、V8 13.8、Node 22.16.0 へのアップグレードが含まれています。


Electron チームは、Electron 37.0.0 のリリース発表にワクワクしています! npm install electron@latest から npm でインストールするか、リリースウェブサイト からダウンロードできます。 このリリースの詳細は続きをご覧ください。

何かフィードバックがあれば、BlueskyMastodon で共有したり、コミュニティの Discord に参加してみましょう! バグや機能の要望は Electron の Issue トラッカー で報告できます。

Google Summer of Code の開始

2 人の Google Summer of Code の貢献者がプログラムのコーディング期間を開始しました!

  • @nilayarya は Electron コアで新しい ウィンドウ状態の保存/復元 API を作成しています。 この新しい API は、ウインドウの状態の永続化処理のための組み込みで標準化された方法を提供します。 electron/rfcs#16 で Nilay さんの進行中の RFC を参照してください。
  • @hitarth-gg は、Chrome Manifest V3 API を使用して、長らく休止状態にあった Devtron 拡張機能を最新化することに熱心に取り組んでいます。 このプロジェクトは、開発者が IPC 通信のデバッグ、イベントリスナーの追跡、および Electron アプリケーション内のモジュールの依存関係を視覚化するためのツールを提供します。

GSOC 参加者にとってこの数週間は刺激的な日々でした。今後の更新情報もご期待ください!

注目すべき変更

滑らかな角: ネイティブ CSS のスクワークル

長方形に異なる角のスムージング値 (0%、30%、60%、100%) を適用した画像。60% は macOS のスタイルに一致するというラベル付き

Electron 37 では、カスタムの -electron-corner-smoothing CSS プロパティが導入され、アプリは Apple の macOS デザイン言語に合わせたより滑らかな丸角を作成できるようになりました。 この機能はもともと Electron 36 に搭載されていましたが、もっと注目されるべき機能だと感じました。

角スムージング 100% の例
コード結果
.box {
width: 128px;
height: 128px;
border-radius: 24px;
-electron-corner-smoothing: 100%;
}

長方形から四分円の角を削り出す標準の border-radius プロパティとは異なり、 -electron-corner-smoothing は連続した縁を持つ 四角形 状で曲線をスムーズに遷移させます。

0% から 100% までの値を使用して滑らかさを調整したり、system-ui 値を使用してオペレーティングシステムのスタイルに一致させたりできます (macOS では 60%、それ以外の場合は 0%)。 このデザイン強化は、境界線、アウトライン、影にも適用でき、アプリに絶妙な上品さを加えることができます。

ヒント

Electron のスクワークル実装の詳細については、@clavinRFC 0012 をご参照ください。 この文書ではその動機と技術的な実装について詳しく説明してあります。

初期デザインは Figma の角スムージングの実装からインスピレーションを得ています。 滑らかな角を求める彼らの探求について詳しくは、"スクワークルを必死に求めて" をご覧ください。

Electron 36.0.0

· 読むのにかかる時間 1 分

Electron 36.0.0 がリリースされました! これには Chromium 136、V8 13.6、Node 22.14.0 へのアップグレードが含まれています。


Electron チームは、Electron 36.0.0 のリリース発表にワクワクしています! npm install electron@latest から npm でインストールするか、リリースウェブサイト からダウンロードできます。 このリリースの詳細は続きをご覧ください。

何かフィードバックがあれば、BlueskyMastodon で共有したり、コミュニティの Discord に参加してみましょう! バグや機能の要望は Electron の Issue トラッカー で報告できます。

注目すべき変更

作文ツールサポート

Electron 36 では、コンテキストメニューでの作文ツール (スペルと文法)、自動入力、サービスメニュー項目など macOS システムレベルの機能を有効化できます。 これを行うには、WebFrameMain のインスタンスを menu.popup()frame 引数に渡します。

import { BrowserWindow, Menu, WebFrameMain } from 'electron';

const currentWindow = BrowserWindow.getFocusedWindow();
const focusedFrame = currentWindow.webContents.focusedFrame;
const menu = Menu.buildFromTemplate([{ label: 'Copy', role: 'copy' }]);

menu.popup({
window: currentWindow,
frame: focusedFrame,
});

Electron 35.0.0

· 読むのにかかる時間 1 分

Electron 35.0.0 がリリースされました! これには Chromium 134.0.6998.44、V8 13.5、Node 22.14.0 へのアップグレードが含まれています。


Electron チームは、Electron 35.0.0 のリリース発表にワクワクしています! npm install electron@latest から npm でインストールするか、リリースウェブサイト からダウンロードできます。 このリリースの詳細は続きをご覧ください。

何かフィードバックがあれば、BlueskyMastodon で共有したり、コミュニティの Discord に参加してみましょう! バグや機能の要望は Electron の Issue トラッカー で報告できます。

注目すべき変更

拡張機能サポートの改善のためのサービスワーカーのプリロードスクリプト

もともと RFC #8@samuelmaddock によって提案されていたもので、Electron 35 にて サービスワーカー にプリロードスクリプトをアタッチする機能を追加します。 Chrome の Manifest V3 拡張機能では多くの機能が 拡張機能のサービスワーカー を通じて提供されるため、この機能は Electron と最新の Chrome 拡張機能との間のサポートに関するギャップを埋めます。

Session のレベルでプログラムでプリロードスクリプトを登録する場合、ses.registerPreloadScript(script) API でそれをサービスワーカーのコンテキストへ指定し適用できるようになりました。

Main Process
// セッションにプリロードレルムスクリプトを追加します。
session.defaultSession.registerPreloadScript({
// スクリプトはサービスワーカーのプリロードレルムでのみ実行されるべきです。
type: 'service-worker',
// スクリプトへの絶対パス。
script: path.join(__dirname, 'extension-sw-preload.js'),
});

さらに、ServiceWorkerMain.ipc のインスタンスを介して、サービスワーカーとそれにアタッチされたプリロードスクリプトの間で IPC が利用できるようになりました。 プリロードスクリプトは引き続き ipcRenderer モジュールでもサービスワーカーと通信できます。 詳細は元の RFC をご参照ください。

この機能の実装前に、以下の前提となる他多くの変更が行われました。

  • #45329 で Session モジュールのプリロード API を再設計し、個々のプリロードスクリプトの登録と解除をサポートするようになりました。
  • #45229 でコンテキストブリッジを介してメイン ワールドで JavaScript を評価するための実験的なスクリプト contextBridge.executeInMainWorld(executionScript) が追加されました。
  • #45341 でメインプロセスでサービスワーカーとやり取りするための ServiceWorkerMain クラスが追加されました。