Electron は v.11 が安定版になった(2020/11/17)


Electronが、ついに v.11 を安定版としました。主な変更点は以下のページにあります(しかもすでにその15時間後に、v11.0.1に更新済み)。
https://www.electronjs.org/releases/stable#release-notes-for-v1100

すでに、Electronは先行して、v.11, v12 のβ版を走らせていたので、大きな変更やサプライズはありませんが、詳しく何が変更になったのかは各βバージョンをあたるしかなく、散逸的だったので、今回まとまったことで一覧を見ることができるようになりました。

Apple Silicon ビルドに対応

Electron は、いま話題の Apple Siliconに対応を表明していたので(Appleの発表スライドのリストにひっそり載っていた)、今回から実験的にビルドが追加されたようです。おそらく新しい M1チップの載ったマシンでも動作可能だと思います(※私は今回、買えませんので動作未確認)。

context bridge の強化

また、今回のバージョンから、さらに context bridge への強化を図ってきていますので、今後対応はより必須になってくるとは思います。これについては、Qiitaの別記事にまとめていますので、参考になさってください。こちらも、v.11 を私の方で検証しつつ、近々記事を更新したと思っています。

Electron(v11.0.3現在)の IPC 通信入門 - よりセキュアな方法への変遷
https://qiita.com/hibara/items/c59fb6924610fc22a9db

これらも含め、以下に今回のバージョンの主な追加項目、改善点を翻訳してまとめましたので、ご参考にしてください。

Release Notes for v11.0.0(意訳)

スタックの更新

  • Chromium 87.0.4280.47

  • Node v12.18.3

  • V8 v8.7

破壊的な変更

  • 実験的だったAPI BrowserView.{destroy, fromId, fromWebContents, getAllViews}と、BrowserViewidプロパティの削除。

特徴

追加

  • 新しく実験的にApple Silicon(darwin arm64)ビルドの追加。

  • Apple Silicon で Rosetta が動作するときを検知したときのためのプロパティ app.runningUnderRosettaTranslation を新しく追加。

  • V8エンジンのクラッシュメッセージと場所情報を crashReport パラメータに追加。(v10にも)

  • レンダラーのクラッシュをデバッグするのに役立つように、コンソールに小さなコンソールヒントを追加。(v9, v10にも)

  • システムのコンテキストメニューの防止とオーバーライドを可能にするために、新しい system-context-menu を追加。

  • レンダラーがハングしたときの回復をアシストするために、レンダラープロセスを強制的に終了するための webContents.forcefullyCrashRenderer() を追加。

  • 特定のプロトコルを扱うアプリの詳細情報を返すAPI app.getApplicationInfoForProtocol() を追加。

  • app.getAppMetrics() 出力に、name を追加。

  • utility-process-gone イベントを app に追加。

  • macOS 上でバイブレンシーエフェクト(半透明のぼやけた背景を映す効果)の状態のカスタマイズを許すための visualEffectState オプションを BrowserWindows に追加

  • ファイルパスと、最大サムネイルサイズを与えられたプレビューイメージを返す、app.createThumbnailFromPath() API を追加。

  • 以前からずっと壊れていた setVisibleOnAllWorkspaces のための visibleOnFullScreen オプションを戻して追加。

  • WebContent のストリームを得るための getUserMedia で使用することができるように、desktopCapturer.getMediaSourceIdForWebContents() を追加。

  • どんなアプリケーションのアクティブ状態も監視するために、Mac上で did-become-active イベントを追加。

  • コンテキスト分離が有効になっている場合は、webFrame.executeJavaScript からの返す値がワールドセーフになることを保証をするための worldSafeExecuteJavaScript の webPreference を新しく追加。(v9, v10にも)

  • macOS トレイのタイトルのための特定等幅フォントタイプへのオプションパラメーターを追加。

  • Windows へのイベントのサスペンドとレジュームサポートを追加。(v8, v9, v10にも)

  • macOS へのイベントのサスペンドとレジュームサポートを追加。(v8, v9, v10にも)

  • Apple's StoreKit in-app-purchasing ライブラリが提供するが、currencyCode フィールドを追加。

  • Apple の StoreKit アプリ内課金ライブラリが提供しているが、inAppPurchase.getProducts が返す Product オブジェクトには追加されていない currencyCode フィールドを追加。

  • 'resized' (Windows/macOS) と、'moved' (Windows) イベントを BrowserWindow へ追加。

改善

  • context bridge を経由して、JSプリミティブを送信する際のパフォーマンスを改善。(v9, v10にも)

  • context bridge を経由しての大きなオブジェクトを送信する際のパフォーマンスを改善。

  • --interactive フラグで Electron を走らせた時のデフォルトの REPL エクスペリエンスを改善。

  • takeHeapSnapshot() のパフォーマンスを改善。

  • アプリケーションがログイン時に起動できるかどうかを判断する際に起動承認キーを考慮するように app.getLoginItemSettings() と、app.setLoginItemSettings() API を変更。

  • デバッガーモジュールからターゲットに関連付けられた sessionId を公開。(v.8, v9, v10にも)

  • Windows に systemPreferences.getMediaAccessStatus() を実装。(v.8, v9, v10にも)

  • コードキャッシングポリシーを強制するため、V8CacheOptions は、新しい webpreference オプションになった。(v.8, v9, v10にも)

  • disabled-by-default-v8.cpu_profiler のトレースカテゴリが有効になっている場合、レンダラーだけでなくメインプロセスからも cpu サンプルが収集されるようになりました。

削除/非推奨

  • 実験的だったAPI BrowserView.{destroy, fromId, fromWebContents, getAllViews}と、BrowserViewidプロパティの削除。

修正点は、要望があれば

修正点は、かなりの量なので、要望が多ければ翻訳して追記したいと思います。

詳しくは、
https://www.electronjs.org/releases/stable#release-notes-for-v1100

を参照ください。