メインコンテンツへ飛ぶ

Electron 33.0.0

· 読むのにかかる時間 1 分

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


Electron チームは、Electron 33.0.0 のリリース発表にワクワクしています! npm install electron@latest から npm でインストールするか、リリースウェブサイト からダウンロードできます。 このリリースの詳細は続きをご覧ください。

何かフィードバックがあれば、TwitterMastodon で共有したり、コミュニティの Discord に参加してみましょう! バグや機能の要望は Electron の Issue トラッカー で報告できます。

注目すべき変更

ハイライト

  • Added a handler, app.setClientCertRequestPasswordHandler(handler), to help unlock cryptographic devices when a PIN is needed. #41205
  • Extended navigationHistory API with 2 new functions for better history management. #42014
  • Improved native theme transparency checking. #42862

累積的変更

Electron 33 では、Chromium は 128.0.6613.36 から 130.0.6723.44 へ、Node は 20.16.0 から 20.18.0 へ、V8 は 12.8 から 13.0 へとアップグレードしています。

新機能

  • Added a handler, app.setClientCertRequestPasswordHandler(handler), to help unlock cryptographic devices when a PIN is needed. #41205
  • Added error event in utility process to support diagnostic reports on V8 fatal errors. #43997
  • Added View.setBorderRadius(radius) for customizing the border radius of views—with compatibility for WebContentsView. #42320
  • Extended navigationHistory API with 2 new functions for better history management. #42014

破壊的変更

削除: macOS 10.15 のサポート

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

旧バージョンの Electron はこれらのオペレーティングシステムでも引き続き動作しますが、Electron v20.0.0 以降の動作には macOS 11 (High Sierra) 以降が必要です。

動作変更: ネイティブモジュールにC++20が必要になりました

上流における変更により、V8Node.js の両方が、最小バージョンとしてC++20を必要とするようになりました。 ネイティブのNodeモジュールを使用する開発者は、 --std=c++17 ではなく --std=c++20 でモジュールをビルドする必要があります。 gcc9 以下のバージョンで作成されたイメージは、コンパイルするには gcc10 への更新が必要になる場合があります。 詳細は#43555を参照してください。

動作変更: WindowsにおけるカスタムプロトコルURLの処理

Chromiumが「特別でないURL (Non-special URL)」をサポートのために変更を加えたため、Windowsファイルパスを使用するカスタムプロトコルURLは、非推奨となった protocol.registerFileProtocolBrowserWindow.loadURLWebContents.loadURL<webview>.loadURLbaseURLForDataURL プロパティでは正しく動作しなくなります。 protocol.handle もこれらのタイプのURLでは動作しませんが、これは元々そのように動作しているため、変更ではありません。

// 動作しない
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');

// 代替案
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');

動作変更: applogin における webContents プロパティ

applogin イベントにおける webContents プロパティは、 ユーティリティプロセスrespondToAuthRequestsFromMainProcess オプションによってイベントがトリガーされたとき null が返るようになります。

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

BrowserWindowConstructorOptionstype プロパティの textured オプションは非推奨となりました。代替となるオプションはありません。 このオプションはmacOSの NSWindowStyleMaskTexturedBackground スタイルマスクに依存していましたが、これは代替手段なく非推奨になりました。

非推奨: systemPreferences.accessibilityDisplayShouldReduceTransparency

systemPreferences.accessibilityDisplayShouldReduceTransparency プロパティは非推奨となり、新しい nativeTheme.prefersReducedTransparency が推奨されます。新しいものでは全く同じ情報を提供しながら、クロスプラットフォームで動作します。

// 非推奨
const shouldReduceTransparency =
systemPreferences.accessibilityDisplayShouldReduceTransparency;

// こちらで置き換えてください
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 の公開タイムラインはこちらで ご覧いただけます。

今後の変更についての詳細は、予定されている破壊的変更 のページをご覧ください。