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

「Release」タグの付いた投稿 41 件

新しい Electron リリースに関するブログ投稿

すべてのタグを表示

Electron 33.0.0

·4 分で読めます

Electron 33.0.0 がリリースされました! Chromium 130.0.6723.44、V8 13.0、および Node 20.18.0 へのアップグレードが含まれています。


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

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

注目すべき変更点

ハイライト

  • PIN が必要な場合に暗号化デバイスのロックを解除するのに役立つハンドラー app.setClientCertRequestPasswordHandler(handler) を追加しました。#41205
  • より良い履歴管理のために、2 つの新しい関数で navigationHistory API を拡張しました。#42014
  • ネイティブ テーマの透明度チェックを改善しました。#42862

スタックの変更

Electron 33 は、Chromium を 128.0.6613.36 から 130.0.6723.44 に、Node を 20.16.0 から 20.18.0 に、V8 を 12.8 から 13.0 にアップグレードします。

新機能

  • PIN が必要な場合に暗号化デバイスのロックを解除するのに役立つハンドラー app.setClientCertRequestPasswordHandler(handler) を追加しました。#41205
  • V8 の致命的なエラーに関する診断レポートをサポートするために、ユーティリティ プロセスにエラー イベントを追加しました。#43997
  • WebContentsView との互換性により、ビューの境界半径をカスタマイズするための View.setBorderRadius(radius) を追加しました。#42320
  • より良い履歴管理のために、2 つの新しい関数で navigationHistory API を拡張しました。#42014

破壊的変更

削除:macOS 10.15 のサポート

macOS 10.15 (Catalina) は、Chromium でサポートされなくなりました。

古いバージョンの Electron は引き続き Catalina で実行されますが、Electron v33.0.0 以降を実行するには macOS 11 (Big Sur) 以降が必要になります。

動作変更:ネイティブ モジュールで C++20 が必須に

アップストリームで行われた変更により、V8Node.js の両方で、最小バージョンとして C++20 が必要になりました。ネイティブ ノード モジュールを使用する開発者は、--std=c++17 ではなく --std=c++20 でモジュールをビルドする必要があります。gcc9 以下のイメージは、コンパイルするために gcc10 に更新する必要がある場合があります。詳細については、#43555 を参照してください。

動作変更:Windows でのカスタム プロトコル URL の処理

非特殊スキーム URLをサポートするために Chromium で行われた変更により、Windows ファイル パスを使用するカスタム プロトコル URL は、非推奨の protocol.registerFileProtocol および BrowserWindow.loadURLWebContents.loadURL、および <webview>.loadURLbaseURLForDataURL プロパティで正しく動作しなくなります。protocol.handle はこれらのタイプの URL では機能しませんが、これは常にそのように機能していたため変更ではありません。

// No longer works
protocol.registerFileProtocol('other', () => {
callback({ filePath: '/path/to/my/file' });
});

const mainWindow = new BrowserWindow();
mainWindow.loadURL(
'data:text/html,<script src="loaded-from-dataurl.js"></script>',
{ baseURLForDataURL: 'other://C:\\myapp' }
);
mainWindow.loadURL('other://C:\\myapp\\index.html');

// Replace with
const path = require('node:path');
const nodeUrl = require('node:url');
protocol.handle(other, (req) => {
const srcPath = 'C:\\myapp\\';
const reqURL = new URL(req.url);
return net.fetch(
nodeUrl.pathToFileURL(path.join(srcPath, reqURL.pathname)).toString()
);
});

mainWindow.loadURL(
'data:text/html,<script src="loaded-from-dataurl.js"></script>',
{ baseURLForDataURL: 'other://' }
);
mainWindow.loadURL('other://index.html');

動作変更:apploginwebContents プロパティ

respondToAuthRequestsFromMainProcess オプションで作成されたユーティリティ プロセスからのリクエストに対してイベントがトリガーされる場合、app からの login イベントの webContents プロパティは null になります。

非推奨: BrowserWindowConstructorOption.typetextured オプション

BrowserWindowConstructorOptionstypetextured オプションは、代替となるものがなく非推奨となりました。このオプションは、macOS の NSWindowStyleMaskTexturedBackground スタイルマスクに依存していましたが、代替となるものがなく非推奨となっています。

非推奨: systemPreferences.accessibilityDisplayShouldReduceTransparency

systemPreferences.accessibilityDisplayShouldReduceTransparency プロパティは、クロスプラットフォームで同じ情報を提供し動作する新しい nativeTheme.prefersReducedTransparency に置き換えられ、非推奨となりました。

// Deprecated
const shouldReduceTransparency =
systemPreferences.accessibilityDisplayShouldReduceTransparency;

// Replace with:
const prefersReducedTransparency = nativeTheme.prefersReducedTransparency;

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

Electron 30.x.y は、プロジェクトの サポートポリシー に従い、サポートが終了しました。開発者およびアプリケーションは、より新しいバージョンの Electron にアップグレードすることが推奨されます。

E33 (2024年10月)E34 (2025年1月)E35 (2025年4月)
33.x.y34.x.y35.x.y
32.x.y33.x.y34.x.y
31.x.y32.x.y33.x.y

今後の予定

短期的には、チームは Chromium、Node、V8 を含む Electron を構成する主要コンポーネントの開発に遅れないように注力し続ける予定です。

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

将来の変更に関する詳細情報は、計画されている破壊的変更のページで確認できます。

Electron 32.0.0

·4 分で読めます

Electron 32.0.0 がリリースされました!これには、Chromium 128.0.6613.36、V8 12.8、および Node 20.16.0 へのアップグレードが含まれています。


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

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

注目すべき変更点

ハイライト

  • Google Summer of Code の一部として @piotrpdev によって作成された機能である、ドキュメントに新しい API バージョン履歴を追加しました。詳細については、こちらのブログ記事をご覧ください。#42982
  • Web File API から非標準の File.path 拡張機能を削除しました。#42053
  • ブロックされたパスでファイルまたはディレクトリを開こうとしたときに、Web File System API の失敗パスをアップストリームと一致させました。#42993
  • 既存のナビゲーション関連の API (canGoBackgoBackcanGoForwardgoForwardcanGoToOffsetgoToOffsetclear) を webcontents.navigationHistory に追加しました。以前のナビゲーション API は非推奨となりました。#41752

スタックの変更

Electron 32 は、Chromium を 126.0.6478.36 から 128.0.6613.36 に、Node を 20.14.0 から 20.16.0 に、V8 を 12.6 から 12.8 にアップグレードします。

新機能

  • ユーティリティプロセスから開始された認証リクエストに応答するためのサポートを、app モジュールの 'login' イベント経由で追加しました。#43317
  • CPUUsage 構造体に cumulativeCPUUsage プロパティを追加しました。これは、プロセスの起動以降に使用された CPU 時間の合計秒数を返します。#41819
  • 既存のナビゲーション関連の API (canGoBackgoBackcanGoForwardgoForwardcanGoToOffsetgoToOffsetclear) を webContents.navigationHistory に追加しました。#41752
  • 既存の webContents オブジェクトを受け入れるように WebContentsView を拡張しました。#42086
  • システムアクセシビリティ設定を通じてユーザーが OS レベルの透明度を低減することを選択したかどうかを示す、新しいプロパティ prefersReducedTransparencynativeTheme に追加しました。#43137
  • ブロックされたパスでファイルまたはディレクトリを開こうとしたときに、File System Access API の失敗パスをアップストリームと一致させました。#42993
  • Linux で Windows コントロールオーバーレイ API を有効にしました。#42681
  • ネットワークリクエストで zstd 圧縮を有効にしました。#43300

破壊的変更

削除: File.path

Web File オブジェクトの非標準の path プロパティは、レンダラーですべてを行うことがより一般的だった初期の Electron バージョンで、ネイティブファイルの操作を簡単にするための便宜的な方法として追加されました。ただし、これは標準からの逸脱を表しており、わずかなセキュリティリスクももたらすため、Electron 32.0 以降では、webUtils.getPathForFile メソッドに置き換えられて削除されました。

// Before (renderer)
const file = document.querySelector('input[type=file]');
alert(`Uploaded file path was: ${file.path}`);
// After (renderer)
const file = document.querySelector('input[type=file]');
electron.showFilePath(file);

// After (preload)
const { contextBridge, webUtils } = require('electron');

contextBridge.exposeInMainWorld('electron', {
showFilePath(file) {
// It's best not to expose the full file path to the web content if
// possible.
const path = webUtils.getPathForFile(file);
alert(`Uploaded file path was: ${path}`);
},
});

非推奨: WebContentsclearHistorycanGoBackgoBackcanGoForwardgoForwardgoToIndexcanGoToOffsetgoToOffset

WebContents インスタンスのナビゲーション関連 API は非推奨となりました。これらの API は、ナビゲーション履歴を管理するためのより構造化された直感的なインターフェースを提供するために、WebContentsnavigationHistory プロパティに移動されました。

// Deprecated
win.webContents.clearHistory();
win.webContents.canGoBack();
win.webContents.goBack();
win.webContents.canGoForward();
win.webContents.goForward();
win.webContents.goToIndex(index);
win.webContents.canGoToOffset();
win.webContents.goToOffset(index);

// Replace with
win.webContents.navigationHistory.clear();
win.webContents.navigationHistory.canGoBack();
win.webContents.navigationHistory.goBack();
win.webContents.navigationHistory.canGoForward();
win.webContents.navigationHistory.goForward();
win.webContents.navigationHistory.canGoToOffset();
win.webContents.navigationHistory.goToOffset(index);

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

Electron 29.x.y は、プロジェクトの サポートポリシー に従い、サポートが終了しました。開発者およびアプリケーションは、より新しいバージョンの Electron にアップグレードすることが推奨されます。

E32 (2024年8月)E33 (2024年10月)E34 (2025年1月)
32.x.y33.x.y34.x.y
31.x.y32.x.y33.x.y
30.x.y31.x.y32.x.y

今後の予定

短期的には、チームは Chromium、Node、V8 を含む Electron を構成する主要コンポーネントの開発に遅れないように注力し続ける予定です。

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

将来の変更に関する詳細情報は、計画されている破壊的変更のページで確認できます。

Electron 31.0.0

·3 分で読めます

Electron 31.0.0 がリリースされました!これには、Chromium 126.0.6478.36、V8 12.6、および Node 20.14.0 へのアップグレードが含まれています。


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

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

注目すべき変更点

ハイライト

  • 既存の webContents オブジェクトを受け入れるように WebContentsView を拡張しました。#42319
  • NODE_EXTRA_CA_CERTS のサポートを追加しました。#41689
  • macOS でウィンドウ.flashFrame(bool) が継続的に点滅するように更新しました。#41391
  • WebSQL のサポートを削除しました #41868
  • nativeImage.toDataURL は PNG カラースペースを保持します #41610
  • webContents.setWindowOpenHandler を拡張して、BrowserWindow の手動作成をサポートしました。#41432

スタックの変更

Electron 31 は、Chromium を 124.0.6367.49 から 126.0.6478.36 に、Node を 20.11.1 から 20.14.0 に、V8 を 12.4 から 12.6 にアップグレードします。

新機能

  • SessionclearData メソッドを追加しました。#40983
    • Session.clearData API に options パラメータを追加しました。#41355
  • navigator.serial でサービス クラス ID によって要求される Bluetooth ポートのサポートを追加しました。#41638
  • Node の NODE_EXTRA_CA_CERTS 環境変数のサポートを追加しました。#41689
  • webContents.setWindowOpenHandler を拡張して、BrowserWindow の手動作成をサポートしました。#41432
  • Web 標準の File System API のサポートを実装しました。#41419
  • 既存の WebContents インスタンスを受け入れるように WebContentsView を拡張しました。#42319
  • navigationHistory.getEntryAtIndex メソッドを持つ、webContents API に新しいインスタンス プロパティ navigationHistory を追加しました。これにより、アプリケーションは閲覧履歴内の任意のナビゲーションエントリの URL とタイトルを取得できます。#41577 ( 29, 30 にも含まれます)

破壊的変更

削除: WebSQL のサポート

Chromium はアップストリームで WebSQL のサポートを削除し、Android のみへの移行を進めています。詳細については、Chromium の削除に関する議論をご覧ください。

動作変更: nativeImage.toDataURL は PNG カラースペースを保持します

PNG デコーダーの実装が変更され、カラースペースデータが保持されるようになりました。この関数から返されるエンコードされたデータは、一致するようになりました。

詳細については、crbug.com/332584706 を参照してください。

動作変更: win.flashFrame(bool) は macOS でドックアイコンを継続的に点滅させます

これにより、Windows および Linux と同等の動作になります。以前の動作: 最初の flashFrame(true) はドックアイコンを 1 回だけバウンスし ( NSInformationalRequest レベルを使用)、flashFrame(false) は何も行いません。新しい動作: flashFrame(false) が呼び出されるまで継続的に点滅します。これは、代わりに NSCriticalRequest レベルを使用します。単一のドックアイコンのバウンスを引き起こすために明示的に NSInformationalRequest を使用するには、dock.bounce('informational') を使用できます。

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

Electron 28.x.y は、プロジェクトのサポートポリシーに従い、サポートが終了しました。開発者とアプリケーションは、より新しいバージョンの Electron にアップグレードすることを推奨します。

E31 (2024年6月)E32 (2024年8月)E33 (2024年10月)
31.x.y32.x.y33.x.y
30.x.y31.x.y32.x.y
28.x.y29.x.y31.x.y

今後の予定

短期的には、チームは Chromium、Node、V8 を含む Electron を構成する主要コンポーネントの開発に遅れないように注力し続ける予定です。

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

将来の変更に関する詳細情報は、計画されている破壊的変更のページで確認できます。

Electron 30.0.0

·4 分で読めます

Electron 30.0.0 がリリースされました!これには、Chromium 124.0.6367.49、V8 12.4、および Node.js 20.11.1へのアップグレードが含まれています。


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

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

注目すべき変更点

ハイライト

  • ASAR インテグリティヒューズが Windows でサポートされるようになりました (#40504)
    • ASAR インテグリティが有効になっている既存のアプリは、正しく構成されていない場合、Windows で動作しない可能性があります。Electron パッケージングツールを使用するアプリは、@electron/packager@18.3.1 または @electron/forge@7.4.0 にアップグレードする必要があります。
    • 詳細については、ASAR インテグリティチュートリアルをご覧ください。
  • WebContentsView および BaseWindow メインプロセスモジュールが追加され、BrowserView は非推奨となり、置き換えられました (#35658)
    • BrowserView は現在、WebContentsView のシムであり、古い実装は削除されました。
    • 新しい WebContentsView API と他の類似の API の比較については、Web Embeds ドキュメントをご覧ください。
  • ファイルシステム API のサポートを実装しました (#41827)

スタックの変更

Electron 30 は、Chromium を 122.0.6261.39 から 124.0.6367.49 に、Node を 20.9.0 から 20.11.1 に、V8 を 12.2 から 12.4 にアップグレードします。

新機能

  • webview に transparent webpreference を追加しました。( #40301 )
  • webContents API に新しいインスタンスプロパティ navigationHistorynavigationHistory.getEntryAtIndex メソッドを追加しました。これにより、アプリケーションはブラウジング履歴内の任意のナビゲーションエントリの URL とタイトルを取得できます。( #41662 )
  • アプリがオクルージョンステータスを確認できるように、新しい BrowserWindow.isOccluded() メソッドを追加しました。( #38982 )
  • ユーティリティプロセスからの net モジュールを使用したリクエストに対するプロキシ設定のサポートを追加しました。( #41417 )
  • navigator.serial でサービスクラス ID によってリクエストされる Bluetooth ポートのサポートを追加しました。( #41734 )
  • Node.js の NODE_EXTRA_CA_CERTS CLI フラグのサポートを追加しました。( #41822 )

破壊的変更

動作変更: クロスオリジン iframe が、機能にアクセスするためにパーミッションポリシーを使用するようになりました

クロスオリジン iframe は、アクセスできるように、iframe で使用可能な機能を allow 属性を介して指定する必要があります。

詳細については、ドキュメントをご覧ください。

削除: --disable-color-correct-rendering コマンドラインスイッチ

このスイッチは正式にはドキュメント化されていませんでしたが、削除されたことをここに記載します。Chromium 自体がカラースペースのサポートを改善したため、このフラグは必要なくなるはずです。

動作変更: macOS での BrowserView.setAutoResize の動作

Electron 30 では、BrowserView は新しい WebContentsView API のラッパーになりました。

以前は、BrowserView API の setAutoResize 関数は、macOS では autoresizing によって、Windows および Linux ではカスタムアルゴリズムによってサポートされていました。BrowserView をウィンドウ全体に埋めるなどの簡単なユースケースでは、これら 2 つのアプローチの動作は同じでした。ただし、より高度なケースでは、Windows および Linux 用のカスタムリサイズアルゴリズムが macOS の autoresizing API の動作と完全に一致しなかったため、BrowserView は macOS と他のプラットフォームとではサイズが異なるように変更されていました。autoresizing の動作は、すべてのプラットフォームで標準化されました。

アプリが BrowserView.setAutoResize を使用して、BrowserView をウィンドウ全体に埋める以上の複雑な処理を行っている場合は、macOS でこの動作の違いを処理するためのカスタムロジックがすでに存在している可能性があります。その場合は、autoresizing の動作が一貫しているため、Electron 30 ではそのロジックは不要になります。

削除: WebContentscontext-menuparams.inputFormType プロパティ

WebContentscontext-menu イベントの params オブジェクトの inputFormType プロパティが削除されました。代わりに、新しい formControlType プロパティを使用してください。

削除: process.getIOCounters()

Chromium がこの情報へのアクセスを削除しました。

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

Electron 27.x.y は、プロジェクトのサポートポリシーに従い、サポートが終了しました。開発者とアプリケーションは、より新しいバージョンの Electron にアップグレードすることを推奨します。

E30 (2024年4月)E31 (2024年6月)E32 (2024年8月)
30.x.y31.x.y32.x.y
29.x.y30.x.y31.x.y
28.x.y29.x.y30.x.y

今後の予定

短期的には、チームは Chromium、Node、V8 を含む Electron を構成する主要コンポーネントの開発に遅れないように注力し続ける予定です。

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

将来の変更に関する詳細情報は、計画されている破壊的変更のページで確認できます。

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 を使用してnpm install electron@latestでインストールするか、リリースウェブサイトからダウンロードできます。このリリースに関する詳細については、以下をお読みください。

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

注目すべき変更点

ハイライト

  • 新しいトップレベルの webUtils モジュールを追加しました。これは、Web API オブジェクトと対話するためのユーティリティレイヤーを提供するレンダラープロセスモジュールです。モジュールで最初に利用可能な 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
  • file:// プロトコルを Chromium に一致するより安全で制限的な動作にオプトインする新しい Electron FusegrantFileProtocolExtraPrivileges を追加しました。#40372
  • カスタムスキームで V8 コードキャッシュを許可するオプションを protocol.registerSchemesAsPrivileged に追加しました。#40544
  • app.{set|get}LoginItemSettings(settings) を、macOS 13.0 以降で Apple の新しい推奨基盤フレームワークを使用するように移行しました。#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 の公開タイムラインはこちらで確認できます。

将来の変更に関する詳細情報は、計画されている破壊的変更のページで確認できます。

Electron 28.0.0

·3 分で読めます

Electron 28.0.0 がリリースされました! Chromium 120.0.6099.56、V8 12.0、および Node.js 18.18.2へのアップグレードが含まれています。


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

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

注目すべき変更点

ハイライト

  • ECMAScript モジュールまたは ESM のサポートが実装されました(ECMAScript モジュールとは?詳細についてはこちらを参照してください)。これには、Electron 自体における ESM のサポートに加え、UtilityProcess API エントリポイントなどの領域も含まれます。詳細については、ESM のドキュメントをご覧ください。
  • Electron 自体での ESM サポートの有効化に加えて、Electron Forge も ESM を使用した Electron アプリケーションのパッケージ化、ビルド、および開発をサポートしています。このサポートは、Forge v7.0.0 以降で確認できます。

スタックの変更

新機能

  • ESM サポートが有効になりました。#37535
  • UtilityProcess API に ESM エントリポイントが追加されました。#40047
  • detectedmaximumCursorSize、および nativeOrigin を含むいくつかのプロパティが display オブジェクトに追加されました。#40554
  • Linux で ELECTRON_OZONE_PLATFORM_HINT 環境変数のサポートが追加されました。#39792

破壊的変更

動作変更: WebContents.backgroundThrottling を false に設定すると、ホストの BrowserWindow 内のすべての WebContents に影響します。

WebContents.backgroundThrottling を false に設定すると、それを表示する BrowserWindow のすべての WebContents でフレームスロットリングが無効になります。

削除済み: BrowserWindow.setTrafficLightPosition(position)

BrowserWindow.setTrafficLightPosition(position) は削除されました。代わりに、BrowserWindow.setWindowButtonPosition(position) API を使用する必要があります。これは、位置をシステムデフォルトにリセットするために { x: 0, y: 0 } の代わりに null を受け入れます。

// Removed in Electron 28
win.setTrafficLightPosition({ x: 10, y: 10 });
win.setTrafficLightPosition({ x: 0, y: 0 });

// Replace with
win.setWindowButtonPosition({ x: 10, y: 10 });
win.setWindowButtonPosition(null);

削除済み: BrowserWindow.getTrafficLightPosition()

BrowserWindow.getTrafficLightPosition() は削除されました。代わりに、カスタム位置がない場合に { x: 0, y: 0 } の代わりに null を返す BrowserWindow.getWindowButtonPosition() API を使用する必要があります。

// Removed in Electron 28
const pos = win.getTrafficLightPosition();
if (pos.x === 0 && pos.y === 0) {
// No custom position.
}

// Replace with
const ret = win.getWindowButtonPosition();
if (ret === null) {
// No custom position.
}

削除済み: ipcRenderer.sendTo()

ipcRenderer.sendTo() API は削除されました。代わりに、レンダラー間で MessageChannel を設定する必要があります。

IpcRendererEventsenderId プロパティと senderIsMainFrame プロパティも削除されました。

削除済み: app.runningUnderRosettaTranslation

app.runningUnderRosettaTranslation プロパティは削除されました。代わりに app.runningUnderARM64Translation を使用してください。

// Removed
console.log(app.runningUnderRosettaTranslation);
// Replace with
console.log(app.runningUnderARM64Translation);

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

Electron 25.x.y は、プロジェクトのサポートポリシーに従い、サポート終了となりました。開発者およびアプリケーションは、より新しいバージョンの Electron にアップグレードすることが推奨されます。

E28 (2023年12月)E29 (2024年2月)E30 (2024年4月)
28.x.y29.x.y30.x.y
27.x.y28.x.y29.x.y
26.x.y27.x.y28.x.y

今後の予定

短期的には、チームは Chromium、Node、V8 を含む Electron を構成する主要コンポーネントの開発に遅れないように注力し続ける予定です。

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

将来の変更に関する詳細情報は、計画されている破壊的変更のページで確認できます。

Electron 27.0.0

·3 分で読めます

Electron 27.0.0 がリリースされました! Chromium 118.0.5993.32、V8 11.8、および Node.js 18.17.1へのアップグレードが含まれています。


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

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

注目すべき変更点

スタックの変更

破壊的変更

削除済み: macOS 10.13 / 10.14 のサポート

macOS 10.13 (High Sierra) および macOS 10.14 (Mojave) は、Chromium でサポートされなくなりました。

古いバージョンの Electron はこれらのオペレーティングシステムで引き続き実行されますが、Electron v27.0.0 以降を実行するには macOS 10.15 (Catalina) 以降が必要になります。

非推奨: ipcRenderer.sendTo()

ipcRenderer.sendTo() API は非推奨になりました。代わりに、レンダラー間でMessageChannel を設定する必要があります。

IpcRendererEventsenderId プロパティと senderIsMainFrame プロパティも非推奨になりました。

削除済み: systemPreferences のカラースキームイベント

次の systemPreferences イベントが削除されました。

  • inverted-color-scheme-changed
  • high-contrast-color-scheme-changed

代わりに、nativeTheme モジュールの新しい updated イベントを使用してください。

// Removed
systemPreferences.on('inverted-color-scheme-changed', () => {
/* ... */
});
systemPreferences.on('high-contrast-color-scheme-changed', () => {
/* ... */
});

// Replace with
nativeTheme.on('updated', () => {
/* ... */
});

削除済み: webContents.getPrinters

webContents.getPrinters メソッドは削除されました。代わりに webContents.getPrintersAsync を使用してください。

const w = new BrowserWindow({ show: false });

// Removed
console.log(w.webContents.getPrinters());
// Replace with
w.webContents.getPrintersAsync().then((printers) => {
console.log(printers);
});

削除済み: systemPreferences.{get,set}AppLevelAppearance および systemPreferences.appLevelAppearance

systemPreferences.getAppLevelAppearance メソッドと systemPreferences.setAppLevelAppearance メソッド、および systemPreferences.appLevelAppearance プロパティは削除されました。代わりに nativeTheme モジュールを使用してください。

// Removed
systemPreferences.getAppLevelAppearance();
// Replace with
nativeTheme.shouldUseDarkColors;

// Removed
systemPreferences.appLevelAppearance;
// Replace with
nativeTheme.shouldUseDarkColors;

// Removed
systemPreferences.setAppLevelAppearance('dark');
// Replace with
nativeTheme.themeSource = 'dark';

削除済み: systemPreferences.getColoralternate-selected-control-text

systemPreferences.getColoralternate-selected-control-text 値は削除されました。代わりに selected-content-background を使用してください。

// Removed
systemPreferences.getColor('alternate-selected-control-text');
// Replace with
systemPreferences.getColor('selected-content-background');

新機能

  • アプリのアクセシビリティ透過設定 API が追加されました。#39631
  • chrome.scripting 拡張 API のサポートが追加されました。#39675
  • WaylandWindowDecorations がデフォルトで有効になりました。#39644

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

Electron 24.x.y は、プロジェクトのサポートポリシーに従い、サポート終了となりました。開発者およびアプリケーションは、より新しいバージョンの Electron にアップグレードすることが推奨されます。

E27 (2023年10月)E28 (2023年12月)E29 (2024年2月)
27.x.y28.x.y29.x.y
26.x.y27.x.y28.x.y
25.x.y26.x.y27.x.y

22.x.y の拡張サポート終了

今年初め、Electron チームは、Windows 7/8/8.1 に対する Chrome の拡張サポートに合わせるため、Electron 22 の計画されたサポート終了日を 2023 年 5 月 30 日から 2023 年 10 月 10 日に延長しました (詳細については さようなら、Windows 7/8/8.1 を参照してください)。

Electron 22.x.y は、プロジェクトのサポートポリシーおよびこのサポート延長に従い、サポート終了となりました。これにより、サポートは最新の 3 つの安定したメジャーバージョンに戻り、Windows 7/8/8.1 の公式サポートが終了します。

今後の予定

短期的には、チームは Chromium、Node、V8 を含む Electron を構成する主要コンポーネントの開発に遅れないように注力し続ける予定です。

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

将来の変更に関する詳細情報は、計画されている破壊的変更のページで確認できます。

Electron 26.0.0

·2 分間の記事

Electron 26.0.0 がリリースされました! Chromium 116.0.5845.62、V8 11.2、および Node.js 18.16.1へのアップグレードが含まれています。詳細については、以下をお読みください!


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

フィードバックがある場合は、Twitter で共有するか、コミュニティの Discord に参加してください。バグや機能リクエストは、Electron の issue tracker で報告できます。

注目すべき変更点

スタックの変更

破壊的変更

非推奨: webContents.getPrinters

webContents.getPrinters メソッドは非推奨になりました。代わりに webContents.getPrintersAsync を使用してください。

const w = new BrowserWindow({ show: false });

// Deprecated
console.log(w.webContents.getPrinters());
// Replace with
w.webContents.getPrintersAsync().then((printers) => {
console.log(printers);
});

非推奨: systemPreferences.{get,set}AppLevelAppearance および systemPreferences.appLevelAppearance

systemPreferences.getAppLevelAppearance および systemPreferences.setAppLevelAppearance メソッド、ならびに systemPreferences.appLevelAppearance プロパティは非推奨になりました。代わりに nativeTheme モジュールを使用してください。

// Deprecated
systemPreferences.getAppLevelAppearance();
// Replace with
nativeTheme.shouldUseDarkColors;

// Deprecated
systemPreferences.appLevelAppearance;
// Replace with
nativeTheme.shouldUseDarkColors;

// Deprecated
systemPreferences.setAppLevelAppearance('dark');
// Replace with
nativeTheme.themeSource = 'dark';

非推奨: systemPreferences.getColoralternate-selected-control-text

systemPreferences.getColoralternate-selected-control-text 値は非推奨になりました。代わりに selected-content-background を使用してください。

// Deprecated
systemPreferences.getColor('alternate-selected-control-text');
// Replace with
systemPreferences.getColor('selected-content-background');

新機能

  • safeStorage.setUsePlainTextEncryptionsafeStorage.getSelectedStorageBackend API を追加しました。#39107
  • safeStorage.setUsePlainTextEncryptionsafeStorage.getSelectedStorageBackend API を追加しました。#39155
  • ipcRenderer.sendTo() を介して送信されるメッセージに senderIsMainFrame を追加しました。#39206
  • キーボードで開始されたメニューとしてフラグを設定するサポートを追加しました。#38954

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

Electron 23.x.y は、プロジェクトのサポートポリシーに従い、サポート終了となりました。開発者とアプリケーションは、より新しいバージョンの Electron にアップグレードすることを推奨します。

E26 (2023年8月)E27 (2023年10月)E28 (2024年1月)
26.x.y27.x.y28.x.y
25.x.y26.x.y27.x.y
24.x.y25.x.y26.x.y
22.x.y

今後の予定

短期的には、チームは Chromium、Node、V8 を含む Electron を構成する主要コンポーネントの開発に遅れないように注力し続ける予定です。

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

将来の変更に関する詳細情報は、計画されている破壊的変更のページで確認できます。

Electron 25.0.0

·5分で読めます

Electron 25.0.0 がリリースされました! Chromium 114、V8 11.4、および Node.js 18.15.0 へのアップグレードが含まれています。詳細については以下をお読みください!


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

フィードバックがある場合は、Twitter で共有するか、コミュニティの Discord に参加してください。バグや機能リクエストは、Electron の issue tracker で報告できます。

注目すべき変更点

ハイライト

  • Chromium のネットワークスタックを使用して、Electron の net モジュール内に net.fetch を実装しました。これは、Node.js の HTTP スタックを使用する Node の fetch() とは異なります。#36733 および #36606 を参照してください。
  • protocol.handle を追加しました。これは protocol.{register,intercept}{String,Buffer,Stream,Http,File}Protocol を置き換え、非推奨にします。#36674
  • Chromium および Microsoft の Windows 7/8/8.1 の非推奨計画に合わせて、Electron 22 のサポートを延長しました。このブログ記事の最後に追加の詳細情報があります。

スタックの変更

破壊的変更

非推奨: protocol.{register,intercept}{Buffer,String,Stream,File,Http}Protocol

protocol.register*Protocol および protocol.intercept*Protocol メソッドは、protocol.handle に置き換えられました。

新しいメソッドは、新しいプロトコルを登録するか、既存のプロトコルをインターセプトすることができ、応答は任意のタイプにすることができます。

// Deprecated in Electron 25
protocol.registerBufferProtocol('some-protocol', () => {
callback({ mimeType: 'text/html', data: Buffer.from('<h5>Response</h5>') });
});

// Replace with
protocol.handle('some-protocol', () => {
return new Response(
Buffer.from('<h5>Response</h5>'), // Could also be a string or ReadableStream.
{ headers: { 'content-type': 'text/html' } }
);
});
// Deprecated in Electron 25
protocol.registerHttpProtocol('some-protocol', () => {
callback({ url: 'https://electron.dokyumento.jp' });
});

// Replace with
protocol.handle('some-protocol', () => {
return net.fetch('https://electron.dokyumento.jp');
});
// Deprecated in Electron 25
protocol.registerFileProtocol('some-protocol', () => {
callback({ filePath: '/path/to/my/file' });
});

// Replace with
protocol.handle('some-protocol', () => {
return net.fetch('file:///path/to/my/file');
});

非推奨: BrowserWindow.setTrafficLightPosition(position)

BrowserWindow.setTrafficLightPosition(position) は非推奨になりました。代わりに BrowserWindow.setWindowButtonPosition(position) API を使用する必要があります。この API は、位置をシステムデフォルトにリセットするために、{ x: 0, y: 0 } の代わりに null を受け入れます。

// Deprecated in Electron 25
win.setTrafficLightPosition({ x: 10, y: 10 });
win.setTrafficLightPosition({ x: 0, y: 0 });

// Replace with
win.setWindowButtonPosition({ x: 10, y: 10 });
win.setWindowButtonPosition(null);

非推奨: BrowserWindow.getTrafficLightPosition()

BrowserWindow.getTrafficLightPosition() は非推奨になりました。代わりに BrowserWindow.getWindowButtonPosition() API を使用する必要があります。カスタム位置がない場合、この API は { x: 0, y: 0 } の代わりに null を返します。

// Deprecated in Electron 25
const pos = win.getTrafficLightPosition();
if (pos.x === 0 && pos.y === 0) {
// No custom position.
}

// Replace with
const ret = win.getWindowButtonPosition();
if (ret === null) {
// No custom position.
}

新機能

  • net.fetch() を追加しました。#36733
    • net.fetch は、file: URL と protocol.register*Protocol で登録されたカスタムプロトコルへのリクエストをサポートします。#36606
  • BrowserWindow.set/getWindowButtonPosition API を追加しました。#37094
  • protocol.handle を追加しました。これは protocol.{register,intercept}{String,Buffer,Stream,Http,File}Protocol を置き換え、非推奨にします。#36674
  • フレーム階層内のフレームがナビゲートしようとするたびに発生する will-frame-navigate イベントを webContents および <webview> タグに追加しました。#34418
  • ナビゲーターイベントにイニシエータ情報を追加しました。この情報により、子によって開始されたナビゲーションとは対照的に、window.open を親フレームがナビゲーションを引き起こしているものと区別できます。#37085
  • defaultSession オブジェクトを使用してホストを解決する net.resolveHost を追加しました。#38152
  • 新しい 'did-resign-active' イベントを app に追加しました。#38018
  • webContents.print() にいくつかの標準ページサイズオプションを追加しました。#37159
  • リモートオーディオ入力がローカル出力ストリームでエコーされるのを許可するために、セッションハンドラー ses.setDisplayMediaRequestHandler() コールバックに enableLocalEcho フラグを追加しました。audioWebFrameMain の場合です。#37315
  • 熱管理情報を powerMonitor に追加しました。#38028
  • session.fromPath() API に絶対パスを渡せるようにしました。#37604
  • audio-state-changed イベントを webContents で公開しました。#37366

22.x.y のサポート継続

さようなら、Windows 7/8/8.1 で説明したように、Electron 22 (Chromium 108) の計画されたサポート終了日は、2023 年 5 月 30 日から 2023 年 10 月 10 日に延長されます。Electron チームは、このプログラムの一部であるセキュリティ修正を 2023 年 10 月 10 日まで Electron 22 にバックポートし続けます。10 月のサポート日は、Chromium および Microsoft の両方からの延長されたサポート日に従います。10 月 11 日、Electron チームはサポートを最新の 3 つの安定したメジャーバージョンに戻します。これらは Windows 7/8/8.1 をサポートしなくなります。

E25 (2023年5月)E26 (2023年8月)E27 (2023年10月)
25.x.y26.x.y27.x.y
24.x.y25.x.y26.x.y
23.x.y24.x.y25.x.y
22.x.y22.x.y--

今後の予定

短期的には、チームは Chromium、Node、V8 を含む Electron を構成する主要コンポーネントの開発に遅れないように注力し続ける予定です。

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

将来の変更に関する詳細情報は、計画されている破壊的変更のページで確認できます。

Electron 24.0.0

·4 分で読めます

Electron 24.0.0 がリリースされました! Chromium 112.0.5615.49、V8 11.2、および Node.js 18.14.0 へのアップグレードが含まれています。詳細については以下をお読みください!


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

フィードバックがある場合は、Twitter で共有するか、コミュニティの Discord に参加してください。バグや機能リクエストは、Electron の issue tracker で報告できます。

注目すべき変更点

スタックの変更

破壊的変更

API が変更されました: nativeImage.createThumbnailFromPath(path, size)

maxSize パラメータが size に変更され、渡されたサイズが作成されたサムネイルのサイズになることを反映しました。以前は、Windows は画像が maxSize より小さい場合に画像を拡大せず、macOS は常にサイズを maxSize に設定していました。動作はプラットフォーム間で同じになりました。

// a 128x128 image.
const imagePath = path.join('path', 'to', 'capybara.png');

// Scaling up a smaller image.
const upSize = { width: 256, height: 256 };
nativeImage.createThumbnailFromPath(imagePath, upSize).then((result) => {
console.log(result.getSize()); // { width: 256, height: 256 }
});

// Scaling down a larger image.
const downSize = { width: 64, height: 64 };
nativeImage.createThumbnailFromPath(imagePath, downSize).then((result) => {
console.log(result.getSize()); // { width: 64, height: 64 }
});

新機能

  • cookies.get()HttpOnly クッキーをフィルタリングする機能を追加しました。#37365
  • Windows で SEE_MASK_FLAG_LOG_USAGE フラグを ShellExecuteEx に渡せるように、shell.openExternal() オプションに logUsage を追加しました。SEE_MASK_FLAG_LOG_USAGE フラグは、頻繁に使用されるプログラムやその他の動作の追跡を有効にするユーザーによって開始された起動を示します。#37291
  • リッスンするリクエストをフィルタリングする機能を追加して、webRequest フィルタに types を追加しました。#37427
  • 開発者が新しいウィンドウを開くことができるように、新しい devtools-open-url イベントを webContents に追加しました。#36774
  • webContents.print() にいくつかの標準ページサイズオプションを追加しました。#37265
  • リモートオーディオ入力がローカル出力ストリームでエコーされるのを許可するために、セッションハンドラー ses.setDisplayMediaRequestHandler() コールバックに enableLocalEcho フラグを追加しました。audioWebFrameMain の場合です。#37528
  • アプリケーション固有のユーザー名を inAppPurchase.purchaseProduct() に渡せるようにしました。#35902
  • macOS で残りの視覚的なアーティファクトをクリアするために、window.invalidateShadow() を公開しました。#32452
  • プログラム全体の最適化が、electron ノードヘッダー構成ファイルでデフォルトで有効になり、コンパイラがモジュールごと (コンパイル単位) ではなく、プログラム内のすべてのモジュールからの情報を使用して最適化を実行できるようになりました。#36937
  • SystemPreferences::CanPromptTouchID (macOS) が Apple Watch をサポートするようになりました。#36935

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

Electron 21.x.y は、プロジェクトのサポートポリシーに基づき、サポートが終了しました。開発者およびアプリケーションは、より新しいバージョンの Electron にアップグレードすることをお勧めします。

さようなら、Windows 7/8/8.1に記載されているように、Electron 22(Chromium 108)の計画されていたサポート終了日は、2023年5月30日から2023年10月10日に延長されます。Electronチームは、このプログラムの一部であるセキュリティ修正を、2023年10月10日までElectron 22にバックポートし続けます。

E24 (2023年4月)E25 (2023年5月)E26 (2023年8月)
24.x.y25.x.y26.x.y
23.x.y24.x.y25.x.y
22.x.y23.x.y24.x.y
--22.x.y22.x.y

今後の予定

短期的には、チームは Chromium、Node、V8 を含む Electron を構成する主要コンポーネントの開発に遅れないように注力し続ける予定です。

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

将来の変更に関する詳細情報は、計画されている破壊的変更のページで確認できます。