メインコンテンツへ飛ぶ

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 クラスが追加されました。

累積的変更

Electron 35 では、Chromium は 132.0.6834.83 から 134.0.6998.44 へ、Node は 20.18.1 から 22.14.0 へ、V8 は 13.2 から 13.5 へとアップグレードしています。

新機能

  • Info.plistNSPrefersDisplaySafeAreaCompatibilityMode = false を追加してアプリの設定から「内蔵カメラの下に収まるようにサイズ調整」を削除しました。 #45357 (同じく v34.1.0)
  • メインプロセスでサービスワーカーとやり取りするための ServiceWorkerMain クラスを追加しました。 #45341
    • サービスワーカーの実行状態が変化したことを表すために、ServiceWorkersrunning-status-changed イベントを追加しました。
    • 以前に停止された可能性のあるワーカーを起動するために、ServiceWorkersstartWorkerForScope を追加しました。
  • ワールドの境界を越えてコードを安全に実行するための実験的な contextBridge.executeInMainWorld を追加しました。 #45330
  • 'console-message' イベントに frame を追加しました。 #43617
  • Windows 向けに、query-session-end イベントを追加し session-end イベントを改善しました。 #44598
  • view.getVisible()を追加しました。 #45409
  • ナビゲーション履歴の復元を可能にする webContents.navigationHistory.restore(index, entries) API を追加しました。 #45583
  • BrowserWindow.setVibrancy に任意のアニメーション引数を追加しました。 #35987
  • document.executeCommand("paste") の権限サポートを追加しました。 #45471 (同じく v34.1.0)
  • Windows 向けに BrowserWindow コンストラクタのオプション roundedCorners のサポートを追加しました。 #45740 (同じく v34.3.0)
  • サービスワーカーのプリロードスクリプトのサポートを追加しました。 #45408
  • Portal の globalShortcuts をサポートします。 この機能を動作させるには、Electron を --enable-features=GlobalShortcutsPortal で実行する必要があります。 #45297

破壊的変更

削除: PrinterInfoisDefault プロパティと status プロパティ

これらのプロパティは上流の Chromium から削除されたため、PrinterInfo オブジェクトからも削除されました。

非推奨化: session.serviceWorkersfromVersionID

session.serviceWorkers.getInfoFromVersionID(versionId) の代わりに session.serviceWorkers.fromVersionID(versionId) API は非推奨化されました。 session.serviceWorkers.getWorkerFromVersionID(versionId) API を導入したため、何のオブジェクトを返すかがより明確になるように変更されました。

// 非推奨
session.serviceWorkers.fromVersionID(versionId);

// こちらで置換
session.serviceWorkers.getInfoFromVersionID(versionId);

非推奨化: SessionsetPreloadsgetPreloads

非推奨メソッドの代わりとして、registerPreloadScriptunregisterPreloadScriptgetPreloadScripts が導入されました。 These new APIs allow third-party libraries to register preload scripts without replacing existing scripts. また、新たな type オプションにより frame 以外のさらなるプリロード対象を指定できます。

// 非推奨
session.setPreloads([path.join(__dirname, 'preload.js')]);

// こちらで置換:
session.registerPreloadScript({
type: 'frame',
id: 'app-preload',
filePath: path.join(__dirname, 'preload.js'),
});

非推奨化: WebContentsconsole-message イベントの levelmessagelinesourceId 引数

WebContentsconsole-message イベントが更新され、Event 引数で詳細が提供されるようになりました。

// 非推奨
webContents.on(
'console-message',
(event, level, message, line, sourceId) => {},
);

// こちらで置換:
webContents.on(
'console-message',
({ level, message, lineNumber, sourceId, frame }) => {},
);

さらに、levelinfowarningerrordebug のうちいずれかの値を持つ文字列になりました。

動作変更: WebRequestFilterurls プロパティ

Previously, an empty urls array was interpreted as including all URLs. 明示的にすべての URL を含めるには、開発者が <all_urls> パターンを使用する必要があります。これは、考えられるすべての URL に一致する 特定の URL パターン です。 This change clarifies the intent and ensures more predictable behavior.

// 非推奨
const deprecatedFilter = {
urls: [],
};

// こちらで置換
const newFilter = {
urls: ['<all_urls>'],
};

非推奨化: systemPreferences.isAeroGlassEnabled()

systemPreferences.isAeroGlassEnabled() 関数は代替なしで非推奨になりました。 Electron 23 以降は常に true を返しています。Electron 23 からは Windows 10 以降のみをサポートしており、この Windows からは DWM のコンポジションを無効化できなくなりました。

https://learn.microsoft.com/en-us/windows/win32/dwm/composition-ovw#disabling-dwm-composition-windows7-and-earlier

32.x.y サポートの終了

プロジェクトの サポートポリシー に則り、Electron 32.x.y はサポート終了を迎えました。 開発者とアプリケーションは新しいバージョンの Electron にアップグレードすることを推奨します。

E35 (2025 年 3 月)E36 (2025 年 4 月)E37 (2025 年 6 月)
35.x.y36.x.y37.x.y
34.x.y35.x.y36.x.y
33.x.y34.x.y35.x.y

次回予告

短期的には、Chromium、Node、V8 といった Electron を構成する主要コンポーネントの開発に遅れないでチームが注力し続けるでしょう。

Electron の公開タイムラインはこちらで ご覧いただけます。

今後の変更についての詳細は、予定されている破壊的変更 のページをご覧ください。