Electron 35.0.0
Electron 35.0.0 est disponible ! Il inclut des mises à jour vers Chromium 134.0.6998.44
, V8 13.5
, et Node.js `22.14.0.
L’équipe Electron est heureuse d’annoncer la sortie d’Electron 35.0.0 ! Vous pouvez l'installer avec npm via npm install electron@latest
ou le télécharger sur notre site web de téléchargement de version. Vous obtiendrez plus de détails sur cette version en lisant ce qui suit.
If you have any feedback, please share it with us on Bluesky or Mastodon, or join our community Discord! Les bogues et les demandes de fonctionnalités peuvent être signalés dans l'[outil de suivi des problèmes] d’Electron (https://github.com/electron/electron/issues).
Changements notables
Scripts de Service Worker Preload pour une prise en charge améliorée des extensions
Originally proposed in RFC #8 by @samuelmaddock, Electron 35 adds the ability to attach a preload script to Service Workers. With Chrome's Manifest V3 Extensions routing a lot of work through extension service workers, this feature fills in a gap in Electron's support for modern Chrome extensions.
When registering a preload script programmatically at the Session level, you can now specifically apply it to Service Worker contexts with the ses.registerPreloadScript(script)
API.
// Add our preload realm script to the session.
session.defaultSession.registerPreloadScript({
// Our script should only run in service worker preload realms.
type: 'service-worker',
// The absolute path to the script.
script: path.join(__dirname, 'extension-sw-preload.js'),
});
De plus, l'IPC est maintenant disponible entre les Service Workers et leurs scripts de préchargement via la classe ServiceWorkerMain.ipc
. The preload script will still use the ipcRenderer
module to communicate with its Service Worker. See the original RFC for more details.
This feature was preceded by many other changes that laid the groundwork for it:
- #45329 redesigned the Session module's preload APIs to support registering and unregistering individual preload scripts.
- #45229 added the experimental
contextBridge.executeInMainWorld(executionScript)
script to evaluate JavaScript in the main world over the context bridge. - #45341 added the
ServiceWorkerMain
class to interact with Service Workers in the main process.
Changements de la Stack
- Chromium
134.0.6998.44
- Node
22.14.0
- V8
13.5
Electron 35 upgrades Chromium from 132.0.6834.83
to 134.0.6998.44
, Node from 20.18.1
to 22.14.0
, and V8 from 13.2
to 13.5
.
Nouvelles fonctionnalités
- Added
NSPrefersDisplaySafeAreaCompatibilityMode
=false
toInfo.plist
to remove "Scale to fit below built-in camera." from app options. #45357 (Also in v34.1.0) - Added
ServiceWorkerMain
class to interact with service workers in the main process. #45341- Added
running-status-changed
event onServiceWorkers
to indicate when a service worker's running status has changed. - Added
startWorkerForScope
onServiceWorkers
to start a worker that may have been previously stopped.
- Added
- Added experimental
contextBridge.executeInMainWorld
to safely execute code across world boundaries. #45330 - Added
frame
to'console-message'
event. #43617 - Added
query-session-end
event and improvedsession-end
events on Windows. #44598 - Added
view.getVisible()
. #45409 - Added
webContents.navigationHistory.restore(index, entries)
API that allows restoration of navigation history. #45583 - Added optional animation parameter to
BrowserWindow.setVibrancy
. #35987 - Added permission support for
document.executeCommand("paste")
. #45471 (Also in v34.1.0) - Added support for
roundedCorners
BrowserWindow constructor option on Windows. #45740 (Also in v34.3.0) - Added support for service worker preload scripts. #45408
- Support Portal's
globalShortcuts
. Electron must be run with--enable-features=GlobalShortcutsPortal
in order to have the feature working. #45297
Changements majeurs avec rupture de compatibilité
Removed: isDefault
and status
properties on PrinterInfo
These properties have been removed from the PrinterInfo
object
because they have been removed from upstream Chromium.
Deprecated: getFromVersionID
on session.serviceWorkers
The session.serviceWorkers.fromVersionID(versionId)
API has been deprecated
in favor of session.serviceWorkers.getInfoFromVersionID(versionId)
. This was
changed to make it more clear which object is returned with the introduction
of the session.serviceWorkers.getWorkerFromVersionID(versionId)
API.
// Deprecated
session.serviceWorkers.fromVersionID(versionId);
// Replace with
session.serviceWorkers.getInfoFromVersionID(versionId);
Deprecated: setPreloads
, getPreloads
on Session
registerPreloadScript
, unregisterPreloadScript
, and getPreloadScripts
are introduced as a
replacement for the deprecated methods. These new APIs allow third-party libraries to register
preload scripts without replacing existing scripts. Also, the new type
option allows for
additional preload targets beyond frame
.
// Deprecated
session.setPreloads([path.join(__dirname, 'preload.js')]);
// Replace with:
session.registerPreloadScript({
type: 'frame',
id: 'app-preload',
filePath: path.join(__dirname, 'preload.js'),
});
Deprecated: level
, message
, line
, and sourceId
arguments in console-message
event on WebContents
The console-message
event on WebContents
has been updated to provide details on the Event
argument.
// Deprecated
webContents.on(
'console-message',
(event, level, message, line, sourceId) => {},
);
// Replace with:
webContents.on(
'console-message',
({ level, message, lineNumber, sourceId, frame }) => {},
);
Additionally, level
is now a string with possible values of info
, warning
, error
, and debug
.
Behavior Changed: urls
property of WebRequestFilter
.
Previously, an empty urls array was interpreted as including all URLs. To explicitly include all URLs, developers should now use the <all_urls>
pattern, which is a designated URL pattern that matches every possible URL. This change clarifies the intent and ensures more predictable behavior.
// Deprecated
const deprecatedFilter = {
urls: [],
};
// Replace with
const newFilter = {
urls: ['<all_urls>'],
};
Deprecated: systemPreferences.isAeroGlassEnabled()
The systemPreferences.isAeroGlassEnabled()
function has been deprecated without replacement.
It has been always returning true
since Electron 23, which only supports Windows 10+, where DWM composition can no longer be disabled.
Fin du support pour 32.x.y
Electron 32.x.y a atteint la limite pour le support conformément à la politique d'assistance du projet. Nous encourageons les développeurs à mettre à jour vers une version plus récente d'Electron et de faire de même avec leurs applications.
E35 (Mar'25) | E36 (Apr'25) | E37 (Jun'25) |
---|---|---|
35.x.y | 36.x.y | 37.x.y |
34.x.y | 35.x.y | 36.x.y |
33.x.y | 34.x.y | 35.x.y |
Et maintenant ?
À court terme, vous pouvez compter sur l’équipe pour continuer a se concentrer sur le développement des principaux composants qui composent Electron, notamment Chromium, Node et V8.
You can find Electron's public timeline here.
More information about future changes can be found on the Planned Breaking Changes page.