メインコンテンツへ飛ぶ

Electron 14.0.0

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

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 のバージョン管理の詳細については バージョン管理のドキュメントをご参照ください

累積的変更

注目の機能

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

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

破壊的変更

以下は、Electron 14 での破壊的変更点です。 これらの変更と将来の変更の詳細については、予定されている破壊的変更 のページを参照してください。

削除: app.allowRendererProcessReuse

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

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

削除: Browser Window の Affinity

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

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

API 変更: window.open()

任意引数 frameName は、ウインドウのタイトルに設定されなくなりました。 これにより、ネイティブのドキュメント に対応するパラメータ windowName で説明されている仕様に従う動作になります。

この引数でウィンドウのタイトルを設定していた場合は、代わりに win.setTitle(title) を利用できます。

削除: worldSafeExecuteJavaScript

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

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

省略値変更: nativeWindowOpen の省略値を true

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

WebContents の new-window イベントと did-create-window イベントの、非推奨となっていた additionalFeatures プロパティは削除されました。 new-window は引数の順番があるのでこの引数はまだ残りますが、常に空の配列 [] になります。 (注意: new-window イベント自体は非推奨であり setWindowOpenHandler に置き換えられました。) ウインドウ機能のキーに値が無い場合は、オプションオブジェクトで true の値を持つキーとして表示されるようになりました。

// Electron 14 で削除
// window.open('...', '', 'my-key') で動く
webContents.on('did-create-window', (window, details) => {
if (details.additionalFeatures.includes('my-key')) {
// ...
}
})

// こちらに置換
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 リスナーの details に不足していた resourceType である、fontpingcspReportmediawebSocket の変換を追加しました。 #30050
  • セッション固有のデータに対するディスク上のパスを取得するために新しく session.storagePath API を追加しました。 #28665
  • macOS でのウインドウコントロールオーバーレイの対応を追加しました。 #29986
  • --log-file=.../path/to/file.log で Chromium のログをファイルへ指定するサポートを追加しました。 また、最初の JavaScript ティックにてコマンドラインスイッチを追加することで、JS からログを有効化できるようになりました。 #29963
  • node の crypto における des-ede3 暗号のサポートを追加しました。 #27897
  • コンテキストブリッジオブジェクトを可変にできる ContextBridgeMutability 機能を追加しました。 #27348

削除/非推奨となった変更

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

  • remote モジュールは Electron 12 で非推奨となり、削除されました。 #25734
  • 子ウィンドウが親ウィンドウの BrowserWindow のコンストラクタのオプションを継承しなくなりました。 #28550
  • WebContents のイベントの new-windowdid-create-window にて、非推奨となっていた 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 で予定されている破壊的変更の詳細については、予定されている破壊的変更 をご参照ください。