本文へスキップ

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 install electron@latest`でnpm経由でインストールするか、リリースウェブサイトからダウンロードできます。このリリースに関する詳細は、読み進めてください。

フィードバックがありましたら、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.loadURL`、`WebContents.loadURL`、および`.loadURL`の`baseURLForDataURL`プロパティでは正しく動作しなくなります。`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');

動作変更:`app`の`login`の`webContents`プロパティ

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

非推奨:`BrowserWindowConstructorOption.type`の`textured`オプション

`BrowserWindowConstructorOptions`の`type`の`textured`オプションは、代替策なしで非推奨になりました。このオプションは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のパブリックタイムラインはこちらでご覧いただけます。

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