メインコンテンツにスキップ

Electron 29.0.0

·4 分で読めます

Electron 29.0.0がリリースされました!Chromium 122.0.6261.39、V8 12.2、Node.js 20.9.0へのアップグレードが含まれています。


Electronチームは、Electron 29.0.0のリリースを発表できることを嬉しく思います! npm install electron@latest でnpm経由でインストールするか、リリースウェブサイトからダウンロードできます。このリリースの詳細については、引き続きお読みください。

フィードバックがある場合は、TwitterまたはMastodonで共有するか、コミュニティDiscordにご参加ください!バグと機能のリクエストは、Electronのイシュートラッカーで報告できます。

注目すべき変更点

ハイライト

  • Web APIオブジェクトと対話するためのユーティリティレイヤーを提供するレンダラープロセスモジュールである、新しいトップレベルのwebUtilsモジュールを追加しました。モジュールで最初に使用可能なAPIはwebUtils.getPathForFileです。Electronの以前のFile.path拡張はWeb標準からの逸脱でした。この新しいAPIは、現在のWeb標準の動作により沿っています。

スタックの変更点

Electron 29は、Chromiumを120.0.6099.56から122.0.6261.39に、Nodeを18.18.2から20.9.0に、V8を12.0から12.2にアップグレードします。

新機能

  • File.path拡張を置き換えるために、Web APIオブジェクトと対話するためのユーティリティレイヤーである新しいwebUtilsモジュールを追加しました。 #38776
  • netモジュールをユーティリティプロセスに追加しました。 #40890
  • Chromiumと一致する、より安全で制限的な動作にfile://プロトコルをオプトインさせる新しいElectron FusegrantFileProtocolExtraPrivilegesを追加しました。 #40372
  • カスタムスキームでV8コードキャッシュを許可するために、protocol.registerSchemesAsPrivilegedにオプションを追加しました。 #40544
  • macOS 13.0+でAppleの新しい推奨される基盤となるフレームワークを使用するために、app.{set|get}LoginItemSettings(settings)を移行しました。 #37244

破壊的変更

動作の変更: ipcRenderercontextBridge経由で送信できなくなりました

ipcRendererモジュール全体をオブジェクトとしてcontextBridge経由で送信しようとすると、ブリッジの受信側で空のオブジェクトが返されるようになりました。この変更は、セキュリティ上の落とし穴を削除/軽減するために行われました。 ipcRendererまたはそのメソッドをブリッジ経由で直接公開しないでください。代わりに、以下のような安全なラッパーを提供してください

contextBridge.exposeInMainWorld('app', {
onEvent: (cb) => ipcRenderer.on('foo', (e, ...args) => cb(args)),
});

削除: apprenderer-process-crashedイベント

apprenderer-process-crashedイベントが削除されました。代わりに、新しいrender-process-goneイベントを使用してください。

// Removed
app.on('renderer-process-crashed', (event, webContents, killed) => {
/* ... */
});

// Replace with
app.on('render-process-gone', (event, webContents, details) => {
/* ... */
});

削除: WebContents<webview>crashedイベント

WebContents<webview>crashedイベントが削除されました。代わりに、新しいrender-process-goneイベントを使用してください。

// Removed
win.webContents.on('crashed', (event, killed) => {
/* ... */
});
webview.addEventListener('crashed', (event) => {
/* ... */
});

// Replace with
win.webContents.on('render-process-gone', (event, details) => {
/* ... */
});
webview.addEventListener('render-process-gone', (event) => {
/* ... */
});

削除: appgpu-process-crashedイベント

appgpu-process-crashedイベントが削除されました。代わりに、新しい`child-process-gone`イベントを使用してください。

// Removed
app.on('gpu-process-crashed', (event, killed) => {
/* ... */
});

// Replace with
app.on('child-process-gone', (event, details) => {
/* ... */
});

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

Electron 26.x.yは、プロジェクトのサポートポリシーに従ってサポート終了に達しました。開発者とアプリケーションは、Electronの新しいバージョンにアップグレードすることをお勧めします。

E29 (2024年2月)E30 (2024年4月)E31 (2024年6月)
29.x.y30.x.y31.x.y
28.x.y29.x.y30.x.y
27.x.y28.x.y29.x.y

今後の予定

Electron が最近、コミュニティの Request for Comments (RFC) プロセスを追加したことをご存知ですか?フレームワークに機能を追加したい場合、RFC は、その設計についてメンテナーと対話するのに役立つツールです。また、プルリクエストで議論されている今後の変更点を確認することもできます。詳細については、Introducing electron/rfcs ブログ記事、または electron/rfcs リポジトリの README を直接確認してください。

短期的には、チームは、Chromium、Node、V8 など、Electron を構成する主要コンポーネントの開発に引き続き注力していく予定です。

Electron の公開タイムラインはこちらです。

今後の変更に関する詳細は、計画されている破壊的変更ページをご覧ください。