Runtime Crash: "Cannot read properties of undefined (reading 'isStickyWindow')" When Using window.open() in Web Groups

When calling window.open() from within an application running in a web group, io.Connect Desktop throws the following runtime error:

Cannot read properties of undefined (reading 'isStickyWindow')
TypeError: Cannot read properties of undefined (reading 'isStickyWindow')
    at o.getWindowPlacementSettings (...)
    at o.createPopup (...)
    at o.createWindow (...)
    at createWindow (...)
    at openGuestWindow (node:electron/js2c/browser_init:...)
    at WebContents.<anonymous> (node:electron/js2c/browser_init:...)
    at WebContents.emit (node:events:...)

Cause

This issue occurs when the "nativeWindowOpen" property in your system.json (or in your application definition under details) is configured as an object instead of a string.

For example, the following object configuration causes the crash in web groups:

{
    "windows": {
        "nativeWindowOpen": {
            "mode": "window",
            "outlivesOpener": false
        }
    }
}

Fix

This issue was fixed in io.Connect Desktop 10.2.

Workaround

For earlier versions, change the "nativeWindowOpen" property to a string value. Because "outlivesOpener" is false by default, using the string "window" preserves the same behavior as the object configuration shown above:

Option 1: Update system.json:

{
    "windows": {
        "nativeWindowOpen": "window"
    }
}

Option 2: Override per application:

If you do not want to modify system.json, you can set the "nativeWindowOpen" property as a string in your web group application definition under details. This will override the system-level setting for that specific application.

Additional Information

The "nativeWindowOpen" property accepts either a string or an object value:

  • String values: "window" (default — opens as io.Connect Windows), "browser" (opens in the default browser), "off" (disables window.open()).
  • Object value: Supports a "grouping" property for snapping/tabbing child windows to the parent (available since io.Connect Desktop 9.3).

For more details, see the System Configuration documentation.