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チップの載ったマシンでも動作可能だと思います(※私は今回、買えませんので動作未確認)。
https://www.electronjs.org/blog/apple-silicon
context bridge の強化
また、今回のバージョンから、さらに context bridge
への強化を図ってきていますので、今後対応はより必須になってくるとは思います。これについては、Qiitaの別記事にまとめていますので、参考になさってください。こちらも、v.11 を私の方で検証しつつ、近々記事を更新したと思っています。
Electron(v11.0.3現在)の IPC 通信入門 - よりセキュアな方法への変遷
https://qiita.com/hibara/items/c59fb6924610fc22a9db
これらも含め、以下に今回のバージョンの主な追加項目、改善点を翻訳してまとめましたので、ご参考にしてください。
Release Notes for v11.0.0(意訳)
https://www.electronjs.org/releases/stable#release-notes-for-v1100
スタックの更新
-
Chromium 87.0.4280.47
-
Node v12.18.3
-
V8 v8.7
破壊的な変更
- 実験的だったAPI
BrowserView.{destroy, fromId, fromWebContents, getAllViews}
と、BrowserView
のid
プロパティの削除。
特徴
追加
-
新しく実験的に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}
と、BrowserView
のid
プロパティの削除。
修正点は、要望があれば
修正点は、かなりの量なので、要望が多ければ翻訳して追記したいと思います。
詳しくは、
https://www.electronjs.org/releases/stable#release-notes-for-v1100
を参照ください。