本文へスキップ

Electron 14.0.0

·6分間の読書

Electron 14.0.0がリリースされました!Chromium 93とV8 9.3へのアップグレードが含まれています。いくつかのAPIアップデート、バグ修正、および一般的な改善を追加しました。詳細については以下をお読みください!


Electronチームは、Electron 14.0.0のリリースを発表できることを嬉しく思います!npm install electron@latestでnpmを使用してインストールするか、リリースウェブサイトからダウンロードできます。このリリースに関する詳細については読み進めてください。ご意見をお寄せください!

注目すべき変更点

Electronリリースサイクルの変更

2021年9月、Electron 15から、Electronは8週間ごとに新しいメジャー安定版をリリースします。詳細はこちらをご覧ください。Electron 15は2021年9月1日にベータ版、2021年9月21日に安定版がリリースされます。Electronのパブリックタイムラインはこちらにあります。さらに、Electronは2022年5月まで、サポートされるバージョンを最新の3バージョンから最新の4バージョンに変更します。Electronのバージョニングに関するドキュメントで、Electronのバージョニングに関する詳細情報をご覧ください。

スタックの変更

注目機能

  • デフォルトの変更:nativeWindowOpenは、デフォルトでtrueになります。(ドキュメントを参照)
  • 子ウィンドウは、親からBrowserWindowの構築オプションを継承しなくなりました。#28550
  • セッション固有のデータのディスク上のパスを取得するための新しいsession.storagePath APIを追加しました。#28665
  • @electron/remoteで使用されるprocess.contextIdを追加しました。#28007
  • Electron Fuseの背後にある実験的なCookie暗号化サポートを追加しました。#29492

新機能と変更点の完全なリストについては、14.0.0リリースノートを参照してください。

破壊的変更

以下は、Electron 14で導入された破壊的変更です。これらと今後の変更の詳細については、計画されている破壊的変更ページをご覧ください。

削除済み:app.allowRendererProcessReuse

セキュリティ、パフォーマンス、保守性の向上のため、Chromiumのプロセスモデルにより緊密に連携する計画の一環として、app.allowRendererProcessReuseプロパティが削除されました。

詳細については、#18397を参照してください。

削除済み:ブラウザウィンドウの関連付け

セキュリティ、パフォーマンス、保守性の向上のため、Chromiumのプロセスモデルにより緊密に連携する計画の一環として、新しいBrowserWindowを構築する際のaffinityオプションが削除されました。

詳細については、#18397を参照してください。

API変更:window.open()

オプションパラメータframeNameは、ウィンドウのタイトルを設定しなくなりました。この動作は、windowNameパラメータについてネイティブドキュメントで説明されている仕様に従うようになりました。

このパラメータを使用してウィンドウのタイトルを設定していた場合は、代わりにwin.setTitle(title)メソッドを使用できます。

削除済み:worldSafeExecuteJavaScript

worldSafeExecuteJavaScriptは、代替手段なしに削除されました。このプロパティが有効になっている状態でコードが動作することを確認してください。Electron 12以降、デフォルトで有効になっています。

webFrame.executeJavaScriptまたはwebFrame.executeJavaScriptInIsolatedWorldのいずれかを使用している場合、この変更の影響を受けます。これらのメソッドは同じ値渡しセマンティクスを使用するため、これらのメソッドによって返される値がContext Bridge APIでサポートされていることを確認する必要があります。

デフォルトの変更:nativeWindowOpentrueがデフォルトになります

Electron 14以前では、window.openはデフォルトでBrowserWindowProxyを使用してシムされていました。そのため、window.open('about:blank')は、同期的にスクリプト可能な子ウィンドウを開くことができず、その他の非互換性も存在していました。nativeWindowOpenは実験段階ではなくなり、現在はデフォルトになっています。

詳細は、Electronのwindow.openに関するドキュメントを参照してください。

削除:親ウィンドウから継承するBrowserWindowConstructorOptions

Electron 14以前では、window.openで開かれたウィンドウは、transparentresizableなどのBrowserWindowコンストラクタオプションを親ウィンドウから継承していました。Electron 14以降、この動作は削除され、ウィンドウは親からBrowserWindowコンストラクタオプションを継承しなくなりました。

代わりに、setWindowOpenHandlerを使用して新しいウィンドウのオプションを明示的に設定してください。

webContents.setWindowOpenHandler((details) => {
return {
action: 'allow',
overrideBrowserWindowOptions: {
// ...
},
};
});

削除:additionalFeatures

new-windowおよびdid-create-windowイベントのWebContentsにある非推奨のadditionalFeaturesプロパティが削除されました。new-windowは位置引数を使用するため、引数は存在しますが、常に空の配列[]になります。(注:new-windowイベント自体は既に非推奨であり、setWindowOpenHandlerに置き換えられています。)ウィンドウ機能のベアメタキーは、オプションオブジェクト内で値がtrueのキーとして表示されるようになります。

// Removed in Electron 14
// Triggered by window.open('...', '', 'my-key')
webContents.on('did-create-window', (window, details) => {
if (details.additionalFeatures.includes('my-key')) {
// ...
}
});

// Replace with
webContents.on('did-create-window', (window, details) => {
if (details.options['my-key']) {
// ...
}
});

削除:remoteモジュール

Electron 12で非推奨になったremoteモジュールは、Electron自体から削除され、別のパッケージ@electron/remoteとして抽出されました。@electron/remoteモジュールは、メインプロセスからレンダラープロセスへのJavaScriptオブジェクトのブリッジングを行います。これにより、メインプロセスのみで使用可能なオブジェクトを、レンダラープロセスで使用可能なかのようにアクセスできます。これはremoteモジュールの直接的な代替品です。移行手順とリファレンスについては、モジュールのREADMEを参照してください。

APIの変更

  • ウィンドウがフォーカス可能かどうかを判断するためのBrowserWindow.isFocusable()メソッドを追加しました。#28642
  • WebFrameMain.visibilityStateインスタンスプロパティを追加しました。#28706
  • setWindowOpenHandlerで登録されたウィンドウオープンハンドラーに渡されるdetailsオブジェクトに、dispositionreferrerpostBodyを追加しました。#28518
  • @electron/remoteで使用されるprocess.contextIdを追加しました。#28007
  • Electron Fuseの背後にある実験的なCookie暗号化サポートを追加しました。#29492
  • webRequestリスナーの詳細について、不足していたresourceType変換を追加しました:fontpingcspReportmediawebSocket#30050
  • セッション固有のデータのディスク上のパスを取得するための新しいsession.storagePath APIを追加しました。#28665
  • macOSでWindowsコントロールオーバーレイのサポートを追加しました。#29986
  • --log-file=.../path/to/file.logを使用してChromiumのログをファイルに書き出すサポートを追加しました。また、最初のJSティック中にコマンドラインスイッチを追加することで、JavaScriptからログを有効にすることも可能になりました。#29963
  • node cryptoでdes-ede3暗号のサポートを追加しました。#27897
  • コンテキストブリッジオブジェクトを変更できるContextBridgeMutability機能を追加しました。#27348

削除/非推奨の変更

以下のAPIは削除されたか、非推奨になりました。

  • Electron 12で非推奨になったremoteモジュールが削除されました。#25734
  • 子ウィンドウは、親からBrowserWindowの構築オプションを継承しなくなりました。#28550
  • new-windowおよびdid-create-window WebContentsイベントから非推奨のadditionalFeaturesプロパティを削除しました。#28548
  • 非推奨のapp.allowRendererProcessReuseおよびBrowserWindowのaffinityオプションを削除しました。#26874
  • uploadToServerがfalseの場合、crashReporter.startsubmitURLオプションは必須引数ではなくなりました。#28105

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

プロジェクトのサポートポリシーに従って、Electron 11.x.yのサポートが終了しました。開発者とアプリケーションは、新しいバージョンのElectronへのアップグレードを推奨します。

今後の予定

短期的に、Chromium、Node、V8を含むElectronを構成する主要コンポーネントの開発を継続することに重点を置く予定です。リリース日については約束できませんが、これらのコンポーネントの新しいバージョンを含むElectronの新しいメジャーバージョンのリリースを四半期ごとに行う予定です。

今後のElectronのバージョンの計画されている破壊的変更については、計画されている破壊的変更を参照してください。