Electron 29.0.0
Electron 29.0.0 がリリースされました! これには Chromium 102.0.6261.39
、V8 12.2
、Node.js 20.9.2
へのアップグレードが含まれています。
Electron チームは、Electron 29.0.0 のリリース発表にワクワクしています! npm install electron@latest
から npm でインストールするか、リリースウェブサイト からダウンロードできます。 このリリースの詳細は続きをご覧ください。
何かフィードバックがあれば、Twitter や Mastodon で共有したり、コミュニティの Discord に参加してみましょう! バグや機能の要望は Electron の Issue トラッカー で報告できます。
注目すべき変更
ハイライト
- 新しいトップレベルの
webUtils
モジュールを追加しました。これは Web API のオブジェクトと対話するユーティリティレイヤーを提供するレンダラープロセスのモジュールです。 このモジュールで最初に利用可能な API はwebUtils.getPathForFile
です。 Electron の以前のFile.path
拡張は Web 標準から逸脱していましたが、この新しい API は現在の Web 標準の動作に沿ったものになっています。
累積的変更
- Chromium
122.0.6261.39
- Chrome 122 と デベロッパーツール 122 の新機能
- Chrome 121 と デベロッパーツール 121 の新機能
- Node
20.9.0
- V8
12.2
Electron 29 では、120.0.6099.56
から 122.0.6261.39
へ、Node は 18.18.2
から 20.9.0
へ、V8 は 12.0
から 12.2
へとアップグレードしています。
新機能
- Web API のオブジェクトと対話するユーティリティレイヤーとして
webUtils
モジュールを追加しました。これはFile.path
拡張を置き換えるものです。 #38776 - ユーティリティプロセス に net モジュールを追加しました。 #40890
- 新しい Electron Fuse の
grantFileProtocolExtraPrivileges
を追加しました。これは、file://
プロトコルを Chromium と一致するよりセキュアな動作に制限するものです。 #40372 - カスタムスキームで V8 コードのキャッシュを許可するためのオプションを
protocol.registerSchemesAsPrivileged
に追加しました。 #40544 app.{set|get}LoginItemSettings(settings)
を macOS 13.0 以降で Apple 推奨の新しい基盤フレームワークを使用するように移行しました。 #37244
破壊的変更
動作変更:ipcRenderer
は contextBridge
を越えて送信できなくなりました。
ipcRenderer
モジュール全体をオブジェクトとして contextBridge
経由で送信しようとすると、ブリッジの受信側には空のオブジェクトが生成されるようになりました。 この変更は、セキュリティの落とし穴を撤去/軽減するために行われました。 ipcRenderer やそのメソッドをブリッジ越しに直接公開してはいけません。
代わりに、以下のような安全なラッパーを用意してください。
contextBridge.exposeInMainWorld('app', {
onEvent: (cb) => ipcRenderer.on('foo', (e, ...args) => cb(args)),
});
削除: app
の renderer-process-crashed
イベント
app
での renderer-process-crashed
イベントは削除されました。
代わりに新しいイベントである render-process-gone
を使用してください。
// 削除済み
app.on('renderer-process-crashed', (event, webContents, killed) => {
/* ... */
});
// こちらで置き換えてください
app.on('render-process-gone', (event, webContents, details) => {
/* ... */
});
削除: WebContents
と <webview>
の crashed
イベント
WebContents
と <webview>
の crashed
イベントは削除されました。
代わりに新しいイベントである render-process-gone
を使用してください。
// 削除済み
win.webContents.on('crashed', (event, killed) => {
/* ... */
});
webview.addEventListener('crashed', (event) => {
/* ... */
});
// こちらに置き換えてください
win.webContents.on('render-process-gone', (event, details) => {
/* ... */
});
webview.addEventListener('render-process-gone', (event) => {
/* ... */
});
削除: app
の gpu-process-crashed
イベント
app
の gpu-process-crashed
イベントは削除されました。
代わりに新しいイベントである child-process-gone
を使用してください。
// 削除済み
app.on('gpu-process-crashed', (event, killed) => {
/* ... */
});
// こちらに置き換えてください
app.on('child-process-gone', (event, details) => {
/* ... */
});
26.x.y サポートの終了
プロジェクトの サポートポリシー に則り、Electron 26.x.y はサポート終了を迎えました。 開発者とアプリケーションは新しいバージョンの Electron にアップグレードすることを推奨します。
E29 (Feb'24) | E30 (Apr'24) | E31 (2024 年 6 月) |
---|---|---|
29.x.y | 30.x.y | 31.x.y |
28.x.y | 29.x.y | 30.x.y |
27.x.y | 28.x.y | 29.x.y |
次回予告
この度 Electron がコミュニティの Request for Comments (RFC) のプロセスを追加したことはご存知でしょうか? フレームワークに機能を追加したい場合、RFC はその設計においてメンテナとの対話を始める有用なツールとなります。 プルリクエストで議論されている今後の変更も確認できます。 詳細については、electron/rfcs の紹介 のブログ記事をご覧いただくか、electron/rfcs リポジトリの README を直接ご確認ください。
短期的には、Chromium、Node、V8 といった Electron を構成する主要コンポーネントの開発に遅れないでチームが注力し続けるでしょう。
Electron の公開タイムラインはこちらで ご覧いただけます。
今後の変更についての詳細は、予定されている破壊的変更 のページをご覧ください。