跳至主要內容

標籤為「Release」的文章共 42 篇

關於 Electron 新發行版本的部落格文章

檢視所有標籤

Electron 34.0.0

·3 分鐘閱讀

Electron 34.0.0 已發布!它包含 Chromium 132.0.6834.83、V8 13.2 和 Node 20.18.1 的升級。


Electron 團隊很高興宣布 Electron 34.0.0 的發布!您可以使用 npm 透過 npm install electron@latest 安裝它,或從我們的發行版本網站下載它。請繼續閱讀以了解有關此發行版本的詳細資訊。

如果您有任何意見回饋,請在 BlueskyMastodon 上與我們分享,或加入我們的社群 Discord!錯誤和功能要求可以在 Electron 的問題追蹤器中回報。

重大變更

重點

  • 新增 WebFrameMain.collectJavaScriptCallStack(),用於存取沒有回應的渲染器的 JavaScript 呼叫堆疊。 #44938
  • 新增 API 以使用 Brotli 或 ZStandard 管理共享字典,以提高壓縮效率。新的 API 為 session.getSharedDictionaryUsageInfo()session.getSharedDictionaryInfo(options)session.clearSharedDictionaryCache()session.clearSharedDictionaryCacheForIsolationKey(options)#44950

堆疊變更

Electron 34 將 Chromium 從 130.0.6723.44 升級到 132.0.6834.83,將 Node 從 20.18.0 升級到 20.18.1,並將 V8 從 13.0 升級到 13.2

新功能

  • 新增 API 以使用 Brotli 或 ZStandard 管理共享字典,以提高壓縮效率。新的 API 為 session.getSharedDictionaryUsageInfo()session.getSharedDictionaryInfo(options)session.clearSharedDictionaryCache()session.clearSharedDictionaryCacheForIsolationKey(options)#44950
  • 新增 WebFrameMain.collectJavaScriptCallStack(),用於存取沒有回應的渲染器的 JavaScript 呼叫堆疊。 #44938
  • 為處於卸載狀態的框架新增 WebFrameMain.detached
    • 新增 WebFrameMain.isDestroyed() 以判斷框架是否已被銷毀。
    • 修正當框架正在卸載時,webFrameMain.fromId(processId, frameId) 返回與指定參數不符的 WebFrameMain 實例的問題。 #43473
  • 在公用程式程序中新增錯誤事件,以支援 V8 嚴重錯誤的診斷報告。 #43774
  • 功能:GPU 加速共享紋理離螢幕渲染。 #42953

重大變更

行為變更:在 Windows 上全螢幕時,功能表列將會隱藏

這會使行為與 Linux 保持一致。先前的行為:功能表列在 Windows 上全螢幕時仍然可見。新的行為:功能表列在 Windows 上全螢幕時會被隱藏。

更正:這先前在 Electron 33 中被列為重大變更,但實際上是首次在 Electron 34 中發布。

終止對 31.x.y 的支援

根據專案的支援政策,Electron 31.x.y 已達到支援終止。建議開發人員和應用程式升級到較新版本的 Electron。

E34 (2025 年 1 月)E35 (2025 年 4 月)E36 (2025 年 6 月)
34.x.y35.x.y36.x.y
33.x.y34.x.y35.x.y
32.x.y33.x.y34.x.y

下一步

短期內,您可以預期團隊將繼續專注於跟上構成 Electron 的主要元件 (包括 Chromium、Node 和 V8) 的開發。

您可以在此處找到 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 安裝它,或從我們的發行版本網站下載它。請繼續閱讀以了解有關此發行版本的詳細資訊。

如果您有任何意見回饋,請在 TwitterMastodon 上與我們分享,或加入我們的社群 Discord!錯誤和功能請求可以在 Electron 的 issue tracker 中回報。

重大變更

重點

  • 新增了處理函式 app.setClientCertRequestPasswordHandler(handler),以協助在需要 PIN 碼時解鎖加密裝置。#41205
  • 擴展了 navigationHistory API,增加了 2 個新函式以更好地管理歷史記錄。#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

新功能

  • 新增了處理函式 app.setClientCertRequestPasswordHandler(handler),以協助在需要 PIN 碼時解鎖加密裝置。#41205
  • 在 utility process 中新增了錯誤事件,以支援 V8 嚴重錯誤的診斷報告。#43997
  • 新增了 View.setBorderRadius(radius),用於自訂視圖的邊框半徑,並與 WebContentsView 相容。#42320
  • 擴展了 navigationHistory API,增加了 2 個新函式以更好地管理歷史記錄。#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 作為最低版本。使用原生 Node 模組的開發人員應使用 --std=c++20 而不是 --std=c++17 來建置他們的模組。使用 gcc9 或更低版本的映像檔可能需要更新到 gcc10 才能編譯。有關更多詳細資訊,請參閱 #43555

行為變更:Windows 上自訂協定 URL 處理

由於 Chromium 中所做的變更,以支援非特殊配置 URL,使用 Windows 檔案路徑的自訂協定 URL 將不再能與已棄用的 protocol.registerFileProtocol 以及 BrowserWindow.loadURLWebContents.loadURL<webview>.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');

行為變更:apploginwebContents 屬性

當從使用 respondToAuthRequestsFromMainProcess 選項建立的 utility process 發出請求時,來自 applogin 事件中的 webContents 屬性將為 null

已棄用:BrowserWindowConstructorOption.type 中的 textured 選項

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 (24 年 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

下一步

短期內,您可以預期團隊將繼續專注於跟上構成 Electron 的主要元件 (包括 Chromium、Node 和 V8) 的開發。

您可以在此處找到 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 安裝它,或從我們的 發布網站 下載它。繼續閱讀以了解有關此版本的詳細資訊。

如果您有任何意見回饋,請在 TwitterMastodon 上與我們分享,或加入我們的社群 Discord!錯誤和功能請求可以在 Electron 的 issue tracker 中回報。

重大變更

重點

  • 在我們的文件中新增了新的 API 版本歷史記錄,這是 @piotrpdev 作為 Google Summer of Code 的一部分建立的功能。您可以在 這篇部落格文章 中了解更多相關資訊。#42982
  • 從 Web File API 中移除了非標準的 File.path 擴充功能。#42053
  • 當嘗試在封鎖的路徑中開啟檔案或目錄時,將 Web File System API 中的失敗路徑與上游對齊。#42993
  • 將以下現有的導航相關 API 新增至 webcontents.navigationHistorycanGoBackgoBackcanGoForwardgoForwardcanGoToOffsetgoToOffsetclear。先前的導航 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' 事件回應從 utility process 啟動的身份驗證請求的支援。#43317
  • cumulativeCPUUsage 屬性新增至 CPUUsage 結構,該屬性會傳回自程序啟動以來使用的 CPU 時間總秒數。#41819
  • 將以下現有的導航相關 API 新增至 webContents.navigationHistorycanGoBackgoBackcanGoForwardgoForwardcanGoToOffsetgoToOffsetclear#41752
  • 擴展了 WebContentsView 以接受預先存在的 webContents 物件。#42086
  • nativeTheme 中新增了一個新的屬性 prefersReducedTransparency,該屬性表示使用者是否已選擇透過系統協助工具設定來降低作業系統層級的透明度。#43137
  • 當嘗試在封鎖的路徑中開啟檔案或目錄時,將 File System Access API 中的失敗路徑與上游對齊。#42993
  • 在 Linux 上啟用了 Windows Control Overlay 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}`);
},
});

已棄用:WebContents 上的 clearHistorycanGoBackgoBackcanGoForwardgoForwardgoToIndexcanGoToOffsetgoToOffset

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 (24 年 8 月)E33 (24 年 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

下一步

短期內,您可以預期團隊將繼續專注於跟上構成 Electron 的主要元件 (包括 Chromium、Node 和 V8) 的開發。

您可以在此處找到 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 安裝它,或從我們的 發布網站 下載它。繼續閱讀以了解有關此版本的詳細資訊。

如果您有任何意見回饋,請在 TwitterMastodon 上與我們分享,或加入我們的社群 Discord!錯誤和功能請求可以在 Electron 的 issue tracker 中回報。

重大變更

重點

  • 擴展了 WebContentsView 以接受預先存在的 webContents 物件。#42319
  • 新增了對 NODE_EXTRA_CA_CERTS 的支援。#41689
  • 更新了 window.flashFrame(bool) 以在 macOS 上持續閃爍。#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

新功能

  • Session 中新增 clearData 方法。#40983
    • Session.clearData API 新增選項參數。#41355
  • 新增支援在 navigator.serial 中透過服務類別 ID 請求藍牙埠的功能。#41638
  • 新增支援 Node.js 的 NODE_EXTRA_CA_CERTS 環境變數。#41689
  • 擴展 webContents.setWindowOpenHandler 以支援手動建立 BrowserWindow。#41432
  • 實作對 Web 標準 File System API 的支援。#41419
  • 擴展 WebContentsView 以接受預先存在的 WebContents 實例。#42319
  • 在 webContents API 上新增了一個新的實例屬性 navigationHistory,其中包含 navigationHistory.getEntryAtIndex 方法,使應用程式能夠檢索瀏覽歷史記錄中任何導航項目的 URL 和標題。#41577 (也在 29, 30 中)

重大變更

移除:WebSQL 支援

Chromium 已在上游移除對 WebSQL 的支援,僅將其轉移至 Android。請參閱 Chromium 移除討論的意圖 以取得更多資訊。

行為變更:nativeImage.toDataURL 將保留 PNG 色彩空間

PNG 解碼器實作已變更為保留色彩空間資料。此函數傳回的編碼資料現在與其相符。

請參閱 crbug.com/332584706 以取得更多資訊。

行為變更:win.flashFrame(bool) 將在 macOS 上持續閃爍 dock 圖示

這使行為與 Windows 和 Linux 一致。先前的行為:第一個 flashFrame(true) 只會彈跳 dock 圖示一次(使用 NSInformationalRequest 層級),而 flashFrame(false) 不會執行任何動作。新的行為:持續閃爍直到呼叫 flashFrame(false) 為止。這會改用 NSCriticalRequest 層級。若要明確使用 NSInformationalRequest 來導致單一 dock 圖示彈跳,仍可使用 dock.bounce('informational')

28.x.y 版本終止支援

根據專案的支援政策,Electron 28.x.y 版本已終止支援。建議開發人員和應用程式升級至較新版本的 Electron。

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

下一步

短期內,您可以預期團隊將繼續專注於跟上構成 Electron 的主要元件 (包括 Chromium、Node 和 V8) 的開發。

您可以在此處找到 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 安裝,或從我們的 發佈網站 下載。繼續閱讀以瞭解有關此版本的詳細資訊。

如果您有任何意見回饋,請在 TwitterMastodon 上與我們分享,或加入我們的社群 Discord!錯誤和功能請求可以在 Electron 的 issue tracker 中回報。

重大變更

重點

  • 現在 Windows 上支援 ASAR 完整性熔斷機制 (#40504)
    • 如果未正確設定,啟用 ASAR 完整性的現有應用程式可能無法在 Windows 上運作。使用 Electron 打包工具的應用程式應升級至 @electron/packager@18.3.1@electron/forge@7.4.0
    • 請參閱我們的 ASAR 完整性教學課程 以取得更多資訊。
  • 新增 WebContentsViewBaseWindow 主要程序模組,取代並棄用 BrowserView (#35658)。在此部落格文章中瞭解如何從 BrowserView 遷移至 WebContentsView 的更多資訊。
    • BrowserView 現在是 WebContentsView 的墊片,且已移除舊的實作。
    • 請參閱 我們的 Web 嵌入文件,以比較新的 WebContentsView API 與其他類似的 API。
  • 實作對 File System 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

新功能

  • 為 webviews 新增了一個 transparent webpreference。( #40301)
  • 在 webContents API 上新增了一個新的實例屬性 navigationHistory,其中包含 navigationHistory.getEntryAtIndex 方法,使應用程式能夠檢索瀏覽歷史記錄中任何導航項目的 URL 和標題。( #41662)
  • 新增了新的 BrowserWindow.isOccluded() 方法,允許應用程式檢查遮蔽狀態。( #38982)
  • 新增了從公用程式程序使用 net 模組發出的請求的 Proxy 設定支援。( #41417)
  • 新增支援在 navigator.serial 中透過服務類別 ID 請求藍牙埠的功能。( #41734)
  • 新增支援 Node.js 的 NODE_EXTRA_CA_CERTS CLI 旗標。( #41822)

重大變更

行為變更:跨來源 iframes 現在使用權限原則來存取功能

跨來源 iframes 現在必須透過 allow 屬性指定特定 iframe 可用的功能,才能存取這些功能。

請參閱 文件 以取得更多資訊。

移除:--disable-color-correct-rendering 命令列開關

此開關從未正式記錄,但此處仍記錄其移除。Chromium 本身現在對色彩空間有更好的支援,因此不需要此旗標。

行為變更:macOS 上的 BrowserView.setAutoResize 行為

在 Electron 30 中,BrowserView 現在是新的 WebContentsView API 的包裝函式。

先前,BrowserView API 的 setAutoResize 函式由 macOS 上的 自動調整大小 以及 Windows 和 Linux 上的自訂演算法支援。對於諸如使 BrowserView 填滿整個視窗之類的簡單使用案例,這兩種方法的行為是相同的。然而,在更進階的案例中,BrowserView 在 macOS 上自動調整大小的方式會與在其他平台上有所不同,因為 Windows 和 Linux 的自訂調整大小演算法無法完全符合 macOS 自動調整大小 API 的行為。現在,調整大小行為在所有平台上都已標準化。

如果您的應用程式使用 BrowserView.setAutoResize 來執行比使 BrowserView 填滿整個視窗更複雜的操作,則您可能已經有自訂邏輯來處理 macOS 上行為的差異。如果有的話,由於調整大小行為一致,因此在 Electron 30 中不再需要該邏輯。

移除:WebContentscontext-menuparams.inputFormType 屬性

已移除 WebContentscontext-menu 事件中 params 物件的 inputFormType 屬性。請改用新的 formControlType 屬性。

移除:process.getIOCounters()

Chromium 已移除對此資訊的存取權。

27.x.y 版本終止支援

根據專案的 支援政策,Electron 27.x.y 版本已終止支援。建議開發人員和應用程式升級至較新版本的 Electron。

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

下一步

短期內,您可以預期團隊將繼續專注於跟上構成 Electron 的主要元件 (包括 Chromium、Node 和 V8) 的開發。

您可以在此處找到 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 安裝,或從我們的發布網站下載。請繼續閱讀以了解此版本的詳細資訊。

如果您有任何意見回饋,請在 TwitterMastodon 上與我們分享,或加入我們的社群 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

新功能

  • 新增了 webUtils 模組,這是一個與 Web API 物件互動的實用層,以取代 File.path 擴充。#38776
  • net 模組新增至 utility process#40890
  • 新增了一個新的 Electron FusegrantFileProtocolExtraPrivileges,它使 file:// 協議加入更安全且限制性更高的行為,以符合 Chromium。#40372
  • protocol.registerSchemesAsPrivileged 中新增了一個選項,允許在自訂的協定中使用 V8 程式碼快取。#40544
  • app.{set|get}LoginItemSettings(settings) 遷移為在 macOS 13.0+ 上使用 Apple 新建議的底層框架。#37244

重大變更

行為變更:ipcRenderer 無法再透過 contextBridge 發送。

嘗試透過 contextBridge 將整個 ipcRenderer 模組作為物件發送,現在會在橋接的接收端產生一個空物件。此變更是為了移除/減輕安全性風險。您不應直接透過橋接公開 ipcRenderer 或其方法。而是提供一個類似以下的的安全包裝器。

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

已移除:app 上的 renderer-process-crashed 事件。

已移除 app 上的 renderer-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) => {
/* ... */
});

已移除:app 上的 gpu-process-crashed 事件。

已移除 app 上的 gpu-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 (2 月'24)E30 (24 年 4 月)E31 (24 年 6 月)
29.x.y30.x.y31.x.y
28.x.y29.x.y30.x.y
27.x.y28.x.y29.x.y

下一步

您知道 Electron 最近新增了一個社群「徵求意見 (RFC)」的流程嗎?如果您想在框架中新增功能,RFC 可以是一個有用的工具,開始與維護人員討論其設計。您也可以在 Pull Requests 中看到正在討論的即將推出的變更。若要瞭解更多資訊,請查看我們的「推出 electron/rfcs」部落格文章,或直接查看 electron/rfcs 儲存庫的 README。

短期內,您可以預期團隊將繼續專注於跟上構成 Electron 的主要元件 (包括 Chromium、Node 和 V8) 的開發。

您可以在此處找到 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 安裝,或從我們的發布網站下載。請繼續閱讀以了解此版本的詳細資訊。

如果您有任何意見回饋,請在 TwitterMastodon 上與我們分享,或加入我們的社群 Discord!錯誤和功能請求可以在 Electron 的 issue tracker 中回報。

重大變更

重點

  • 實作了對 ECMAScript 模組或 ESM 的支援(什麼是 ECMAScript 模組? 在此處瞭解更多資訊)。這包括對 Electron 本身以及 UtilityProcess API 進入點等領域的 ESM 支援。請參閱我們的 ESM 文件以瞭解更多詳細資訊。
  • 除了在 Electron 本身啟用 ESM 支援之外,Electron Forge 也支援使用 ESM 來打包、建置和開發 Electron 應用程式。您可以在 Forge v7.0.0 或更高版本中找到此支援。

堆疊變更

新功能

  • 啟用了 ESM 支援。#37535
    • 如需更多詳細資訊,請參閱ESM 文件
  • 將 ESM 進入點新增至 UtilityProcess API。#40047
  • 將數個屬性新增至 display 物件,包括 detectedmaximumCursorSizenativeOrigin#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,它接受 null 而不是 { x: 0, y: 0 },以將位置重設為系統預設值。

// 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(),應該改用 BrowserWindow.getWindowButtonPosition() API,當沒有自訂位置時,它會傳回 null 而不是 { x: 0, y: 0 }

// 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 來取代。

也已移除 IpcRendererEventsenderIdsenderIsMainFrame 屬性。

已移除: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 (12 月'23)E29 (2 月'24)E30 (24 年 4 月)
28.x.y29.x.y30.x.y
27.x.y28.x.y29.x.y
26.x.y27.x.y28.x.y

下一步

短期內,您可以預期團隊將繼續專注於跟上構成 Electron 的主要元件 (包括 Chromium、Node 和 V8) 的開發。

您可以在此處找到 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 安裝,或從我們的發布網站下載。請繼續閱讀以了解此版本的詳細資訊。

如果您有任何意見回饋,請在 TwitterMastodon 上與我們分享,或加入我們的社群 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 來取代。

也已棄用 IpcRendererEventsenderIdsenderIsMainFrame 屬性。

已移除: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}AppLevelAppearancesystemPreferences.appLevelAppearance

已移除 systemPreferences.getAppLevelAppearancesystemPreferences.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 (12 月'23)E29 (2 月'24)
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 團隊將 Electron 22 原定的終止支援日期從 2023 年 5 月 30 日延長至 2023 年 10 月 10 日,以配合 Chrome 對 Windows 7/8/8.1 的延長支援(詳情請參閱告別 Windows 7/8/8.1)。

根據專案的支援政策和此次的延長支援,Electron 22.x.y 已終止支援。這將把支援範圍縮減回最新的三個穩定主要版本,並終止對 Windows 7/8/8.1 的官方支援。

下一步

短期內,您可以預期團隊將繼續專注於跟上構成 Electron 的主要元件 (包括 Chromium、Node 和 V8) 的開發。

您可以在此處找到 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 的問題追蹤器中回報。

重大變更

堆疊變更

重大變更

已棄用: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}AppLevelAppearancesystemPreferences.appLevelAppearance

已棄用 systemPreferences.getAppLevelAppearancesystemPreferences.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
  • 新增 senderIsMainFrame 至透過 ipcRenderer.sendTo() 發送的訊息。#39206
  • 新增對標記 Menu 為鍵盤啟動的支援。#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

下一步

短期內,您可以預期團隊將繼續專注於跟上構成 Electron 的主要元件 (包括 Chromium、Node 和 V8) 的開發。

您可以在此處找到 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 使用 npm install electron@latest 安裝它,或從我們的發布網站下載它。請繼續閱讀有關此發布的詳細資訊。

如果您有任何意見回饋,請在 Twitter 上與我們分享,或加入我們的社群 Discord!錯誤和功能請求可以在 Electron 的問題追蹤器中回報。

重大變更

重點

  • 在 Electron 的 net 模組中實作 net.fetch,使用 Chromium 的網路堆疊。這與使用 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*Protocolprotocol.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.dev.org.tw' });
});

// Replace with
protocol.handle('some-protocol', () => {
return net.fetch('https://electron.dev.org.tw');
});
// 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,它接受 null 而不是 { x: 0, y: 0 } 來將位置重設為系統預設值。

// 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,當沒有自訂位置時,它會傳回 null 而不是 { x: 0, y: 0 }

// 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
  • 新增 net.resolveHost,使用 defaultSession 物件解析主機。#38152
  • 新增 'did-resign-active' 事件至 app#38018
  • 將數個標準頁面大小選項新增至 webContents.print()#37159
  • 在會話處理常式 ses.setDisplayMediaRequestHandler() 回呼中新增 enableLocalEcho 旗標,以允許在 audioWebFrameMain 時,將遠端音訊輸入回音到本機輸出串流中。#37315
  • 將熱管理資訊新增至 powerMonitor#38028
  • 允許將絕對路徑傳遞至 session.fromPath() API。#37604
  • webContents 上公開 audio-state-changed 事件。#37366

22.x.y 繼續支援

告別 Windows 7/8/8.1中所述,Electron 22(Chromium 108)計畫的終止生命週期日期將從 2023 年 5 月 30 日延長至 2023 年 10 月 10 日。Electron 團隊將會繼續將此計畫中的任何安全性修復回溯至 Electron 22,直到 2023 年 10 月 10 日。10 月的支援日期與 Chromium 和 Microsoft 的延長支援日期一致。在 10 月 11 日,Electron 團隊將停止對回溯至最新三個穩定主要版本的支援,這些版本將不再支援 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--

下一步

短期內,您可以預期團隊將繼續專注於跟上構成 Electron 的主要元件 (包括 Chromium、Node 和 V8) 的開發。

您可以在此處找到 Electron 的公開時程表

有關未來變更的更多資訊,請參閱計畫中的重大變更頁面。