Skip to main content

Changelog

io.Connect Desktop 9.17

Release date: 26.10.2026

Components Version
Electron 44.9.3
Chromium 152.0.7977.167
Node.js 24.22.0

Version support policy

The following libraries are bundled with io.Connect Desktop 9.17 and will be used for auto injection:

Injected Library Version
@interopio/desktop 6.17.0
@interopio/fdc3 2.7

Electron Upgrade

io.Connect Desktop 9.17 comes with an upgraded version of Electron. This upgrade was made to address security issues related to the underlying Electron framework.

The new Electron version contains the mitigation for compromised eMudhra intermediate certificates (CVE-2026-115570), as well as security fixes backported from upstream Chromium, V8, ANGLE, PDFium, and Skia.

TLS connections using certificates issued through these intermediate certificates are now rejected both by the Chromium networking stack used by web apps and by the Node.js tls, https, and fetch modules. This announcement by Google provides information about the compromised certificates.

New Features

Detecting Unresponsive Apps

⚠️ Note that this feature is valid only for apps of type "window", "workspaces", and "webGroup".

It's now possible to enable detecting unresponsive web apps. When enabled, io.Connect Desktop checks each web app at regular intervals and considers it unresponsive when it fails a specified number of consecutive checks. The checks are performed regardless of whether the app window is visible and whether the user is interacting with it.

Unresponsive web apps are detected in io.Connect Windows, Workspaces Apps, and Web Group Apps. Each <iframe> loaded from a different site than the web app is checked separately, while each <iframe> loaded from the same site is checked together with the web app.

Unresponsive web apps are reported in the application.log file located in the %LocalAppData%/interop.io/io.Connect Desktop/UserData/<ENV>-<REG>/logs folder on Windows and in the ~Library/Application Support/interop.io/io.Connect Desktop/UserData/<ENV>-<REG>/logs folder on macOS where <ENV>-<REG> represents the environment and region of io.Connect Desktop (e.g., DEMO-INTEROP.IO). When an app becomes responsive again, the platform logs the approximate interval for which the app has been unresponsive.

If possible, the JavaScript call stack of the unresponsive app is collected and added to the app logs. When the call stack can't be collected, you can instruct the platform to create a memory dump file for the unresponsive app.

To enable detecting unresponsive web apps, use the "hangDetector" top-level key in the system.json system configuration file of io.Connect Desktop:

{
    "hangDetector": {
        "enabled": true,
        "probeInterval": 2000,
        "missedProbes": 5
    }
}

⚠️ Note that the settings for detecting unresponsive web apps are applied only from the local system configuration on platform startup. Values from remote configuration sources are ignored.

The "hangDetector" object has the following properties:

Property Type Description
"callStack" object Settings for collecting the JavaScript call stack of an unresponsive web app. The collected call stack is added to the app logs.
"crossCheck" object Settings for an additional check that confirms whether a web app failing the regular checks is really unresponsive. Prevents an app from being reported as unresponsive when the regular checks fail for reasons unrelated to the app. It's recommended to keep this check enabled.
"enabled" boolean If true, will enable detecting unresponsive web apps. Defaults to false.
"missedProbes" number Number of consecutive checks a web app must fail to be considered unresponsive. The minimum is 2, the maximum is 100. Defaults to 5.
"probeInterval" number Interval in milliseconds at which to check whether each web app and each <iframe> loaded from a different site is responsive. The minimum is 100, the maximum is 60000. Defaults to 1000.
"throttledMaxProbeInterval" number Maximum interval in milliseconds between checks of a web app running in the background (i.e., its window is minimized or has been hidden after being shown, and the app allows background throttling). To save resources, the interval for checking such an app doubles after each successful check up to this value, and returns to the value of "probeInterval" as soon as a check fails or the app is no longer in the background. As a result, an unresponsive app in the background may be detected up to this interval later than a visible one. Doesn't apply to apps with "backgroundThrottling" set to false in their app definition, or to windows created hidden and never shown - these are always checked at the interval specified in "probeInterval". Values lower than "probeInterval" are raised to it. The minimum is 100, the maximum is 60000. Defaults to 8000.

The "callStack" object has the following properties:

Property Type Description
"enabled" boolean If true (default), will collect the JavaScript call stack of an unresponsive web app.
"timeout" number Interval in milliseconds to wait for the call stack to be collected. The app is reported as unresponsive when the call stack is collected or when this interval elapses, whichever comes first. If the interval elapses, the app is reported without a call stack. A call stack can't be collected when the app is blocked outside JavaScript (e.g., by a synchronous network request). The minimum is 100, the maximum is 60000. Defaults to 5000.

The "crossCheck" object has the following properties:

Property Type Description
"enabled" boolean If true (default), will enable the additional check. A web app that passes it won't be reported as unresponsive, and if it has already been reported, the report will be withdrawn. If false, a web app whose regular checks fail for reasons unrelated to the app may remain reported as unresponsive until its window is closed.
"interval" number Interval in milliseconds at which to run the additional check while a web app is failing the regular checks. The minimum is 100, the maximum is 60000. Defaults to 5000.

Memory Dumps

⚠️ Note that this feature is valid only for apps of type "window", "workspaces", and "webGroup".

io.Connect Desktop can create memory dump files for unresponsive web apps when detecting unresponsive web apps is enabled via the "hangDetector" top-level key. This may be useful in cases where the JavaScript call stack of an unresponsive web app can't be collected.

The memory dump files are handled as crash reports according to the settings specified in the system configuration.

⚠️ Note that memory dump files contain the memory of the app process and may include sensitive data.

To enable creating memory dump files for all web apps, use the "hangDump" property of the "windows" top-level key in the system.json file:

{
    "windows": {
        "hangDump": {
            "enabled": true
        }
    }
}

To enable creating memory dump files per app, use the "hangDump" property of the "details" top-level key in the app definition. The app level settings override the system level ones:

{
    "name": "my-app",
    "type": "window",
    "details": {
        "url": "https://example.com/my-app",
        "hangDump": {
            "enabled": true,
            "when": "always",
            "minInterval": 120000
        }
    }
}

The "hangDump" object has the following properties:

Property Type Description
"enabled" boolean If true, will enable creating memory dump files for unresponsive web apps. Defaults to false.
"minInterval" number Minimum interval in milliseconds between two memory dump files for the same web app or <iframe>. Regardless of this setting, only one memory dump file is created each time an app becomes unresponsive, no matter how long it stays unresponsive. The minimum is 1000, the maximum is 3600000. Defaults to 60000.
"when" "js-stack-failed" | "always" Specifies when to create a memory dump file. Set to "js-stack-failed" to create a memory dump file only when the JavaScript call stack of the unresponsive app can't be collected (e.g., when the app is blocked by a synchronous network request). In this case, the memory dump file is created after the interval specified in the "timeout" property of the "callStack" object under the "hangDetector" top-level key elapses. Set to "always" to create a memory dump file every time an app becomes unresponsive. Defaults to "js-stack-failed".

Improvements & Bug Fixes

  • Upgraded to Electron 44.9.3 (Chromium 152).

  • Fixed issues with preload scripts where the fallback script wasn't used when the preload script content wasn't valid JavaScript, preload scripts and injected CSS files with long URLs could be resolved to the wrong cached file, and the cached preload scripts were deleted on platform shutdown.

  • Fixed an issue where a non-critical app failing to start during the boot sequence caused the platform to shut down.

  • Fixed an issue where app windows weren't cascaded when placement settings were specified in the app definition.