Skip to main content

How to...

Using the JavaScript Library

The @interopio/desktop library provides APIs with which you can access the io.Connect functionalities and interop-enable your web apps. You can either auto inject (and optionally auto initialize) the library in your apps, or reference it (either as an NPM module, or as a standalone JavaScript file) and then initialize it. Both approaches have their respective advantages and disadvantages. Usually, it's recommended to choose a global approach for all your interop-enabled apps (in some cases, there may be hundreds of interop-enabled apps in use) based on what best suits your needs and requirements.

Auto injecting the library is preferable if you want all your interop-enabled apps to use the same version of the library and have the option to be easily updated to the latest version of @interopio/desktop. Updating the library in all apps can be accomplished simply by redeploying io.Connect Desktop - all interop-enabled apps will be automatically injected with the new version of the library, saving you the effort to update them one by one. Another option is to use a REST service providing the latest library versions. When using auto injection, however, your apps won't be interop-enabled if running in a browser, which is something to consider if you want to use them in a browser. Auto injection may not work well for you in some other cases as well, depending on your production and deployment model.

Using the @interopio/desktop library as a standalone file or as an NPM package has its advantages too - your apps can use a different version of the library if necessary. Also, your apps can be interop-enabled in a browser. This, of course, means that updating the library can be a tedious and slow process, especially if you have many interop-enabled apps, the majority of which are using different versions of the library.

Referencing

The @interopio/desktop library is available as an NPM package which you can include as a dependency in your project and import in your code.

⚠️ Note that the @interopio/desktop depends on the @interopio/core library. The @interopio/core library is a subset of @interopio/desktop and offers only basic functionalities for sharing data between apps (Interop, Shared Contexts, Pub/Sub), while the @interopio/desktop library offers additional, more sophisticated interoperability options such as (Channels, Intents), as well as advanced app and window management functionalities (App Management, Layouts, Window Management). The @interopio/desktop library also provides APIs for using Notifications, App Preferences, Themes, Displays, Hotkeys, Interception, and more.

To install the @interopio/desktop library, execute the following command:

npm install @interopio/desktop

You can now import the factory function exposed by the library and start interop-enabling your apps:

import IODesktop from "@interopio/desktop";

You can also reference the library as a JavaScript file in the HTML file of your web app using a <script> tag:

<script type="module" src="./desktop.umd.js"></script>

When deploying your app in production, it's recommended to always reference a specific minified version:

<script type="module" src="./desktop.umd.min.js"></script>

Initialization

The following sections describe how to initialize the @interopio/desktop library depending on whether your web app will run in an io.Connect Window or in a web browser.

io.Connect Window

The @interopio/desktop library exposes a global factory function called IODesktop(). It accepts as an argument an optional Config object which you can use to configure various library features. To initialize the library, invoke the factory function and use the returned API object to access the io.Connect APIs:

import IODesktop from "@interopio/desktop";

// It isn't necessary to specify any configuration.
const io = await IODesktop();

// Now you can use the io.Connect APIs via the initialized API object.
await io.appManager.application("my-app").start();

The optional Config object allows you to configure some of the available io.Connect APIs. You can enable or disable an API and for some of the APIs it's possible to specify the level of features your app will require from them. For more details on configuring the different APIs, see the respective entry in the Capabilities section.

Web Browser

If you want to run your app in a web browser, you must provide the necessary details and authentication information for connecting to the io.Connect framework as demonstrated in the following example:

<script type="module" src="desktop.umd.min.js"></script>

<script>
    const initializeIOConnect = async () => {
        const config = {
            // Name for your app.
            application: "MyWebApp",
            // Settings for connecting to the io.Connect Gateway.
            gateway: {
                protocolVersion: 3,
                ws: "<gateway_url>"
            },
            // Authentication settings.
            auth: {
                username: "<username>",
                password: "<password>"
            }
        };

        window.io = await IODesktop(config);
    };

    initializeIOConnect().catch(console.error);
</script>

Auto Injection

Auto injection can be configured on system level and can be overridden on an app level (with some limitations). You can also optionally specify whether you want to auto initialize the library after injection.

System Level

To enable auto injection on system level, use the "autoInjectAPI" property under the "windows" top-level key in the system.json system configuration file of io.Connect Desktop:

{
    "windows": {
        "autoInjectAPI": {
            "enabled": true,
            "version": "5.11.2",
            "autoInit": false
        }
    }
}

The "autoInjectAPI" object has the following properties:

Property Type Description
"allowed" string[] List of io.Connect app names in which the @interopio/desktop library will be injected. Defaults to [].
"autoInit" boolean | object Setting for auto initializing the @interopio/desktop library. Accepts either a boolean value, or a Config object with which to initialize the library.
"blocked" string[] List of io.Connect app names in which the @interopio/desktop library won't be injected. Defaults to [].
"enabled" boolean Required. If true, will enable auto injecting the @interopio/desktop library. Defaults to false.
"version" string Required. Semantic version of the library to inject. It's recommended to use a specific version and avoid wildcard versions. Defaults to "*".

Each version of io.Connect Desktop is distributed with a set of @interopio/desktop library version that are used for auto injection. You can see the versions available for auto injection in the <installation_location>/interop.io/io.Connect Desktop/Desktop/assets/preloads folder. If you specify a version which isn't available, io.Connect Desktop will continue working normally without injecting a library in the apps running in it.

If the library is injected but not auto initialized, you can use the IODesktop() factory function to initialize it and pass an optional Config object to it:

// Enabling the Channels API.
const config = { channels: true };

const io = await IODesktop(config);

console.log(`io.Connect JS version ${io.version} has been successfully initialized!`);
console.log(`Channels are ${io.channels ? "enabled" : "disabled"}.`);

If the library is injected and auto initialized, you should use the injected ioPromise in the window object to wait for the io.Connect API:

await ioPromise.catch(console.error);

// The returned `io` object is assigned to the global `window` object.
if (window.io) {
    console.log(`io.Connect JS version ${io.version} has been successfully initialized!`);

    // Channels are disabled by default. If you haven't specified a custom initialization object that enables
    // the Channels API in the `autoInit` property under `autoInjectAPI` (e.g., "autoInit": { "channels": true }),
    // then the following check will return `false`.
    console.log(`Channels are ${io.channels ? "enabled" : "disabled"}.`);
}

Filtering

You can allow and block apps on system level to control which apps should be auto injected with the library and which should use their own version of the library instead.

  • all allowed apps will be auto injected with the library, all other apps won't be auto injected:
{
    "windows": {
        "autoInjectAPI": {
            "enabled": true,
            "version": "5.9.0",
            "autoInit": false,
            "allowed": ["my-app", "my-other-app"]
        }
    }
}
  • blocked apps won't be auto injected with the library, all other apps will be auto injected:
{
    "windows": {
        "autoInjectAPI": {
            "enabled": true,
            "version": "5.9.0",
            "autoInit": false,
            "blocked": ["my-app", "my-other-app"]
        }
    }
}

If an app is both in the allowed and the blocked lists, it will be auto injected with the library.

App Level

If auto injection of the library is disabled on system level, it can't be enabled on an app level. If auto injection is enabled on system level, then each app can opt out of it. Apps can specify whether the auto injected library will be auto initialized or not, but can't specify which version of the library to be auto injected - this is possible only on system level. If an app needs to use a different version of the library than the auto injected one, you should disable auto injection in the app definition and reference a version of the library file in your app instead.

To configure auto injection on an app level, use the "autoInjectAPI" property of the "details" top-level key in the app definition.

ℹ️ For more details on how to create an app definition and where the app definition files should be stored, see the App Definition section or the Developers > Configuration > Application section.

The following is an example configuration for auto injection on an app level:

{
    "details": {
        "autoInjectAPI": {
            "enabled": true,
            "autoInit": false
        }
    }
}

The "autoInjectAPI" object has the following properties:

Property Type Description
"autoInit" boolean | object If true, will initialize the injected library. Accepts either a boolean value, or a Config object with which to initialize the library.
"enabled" boolean Required. If true, will enable auto injecting the library.

Auto Initialization

Auto initialization of the injected library can be specified globally in the system.json file, or can be overridden on an app level in the app definition file. To enable or disable auto initialization of the library, use the "autoInit" property of the "autoInjectAPI" object.

If you want to auto initialize your app with custom library configuration, provide a Config object with initialization settings instead of a Boolean value.

The following example demonstrates how to auto initialize an app and enable Channels:

{
    "autoInjectAPI": {
        "enabled": true,
        "autoInit": {
            "channels": true
        }
    }
}

⚠️ Note that the auto initialization configuration takes precedence over initializing the library inside your app. The @interopio/desktop library can't be initialized more than once - the factory function will always return the first initialized instance, even if you attempt to initialize the library again.

App Definition

To add your JavaScript app to the io.Connect launcher, you must create a JSON app definition file for it. Place this file in the <installation_location>/interop.io/io.Connect Desktop/UserData/<ENV>-<REG>/apps folder where <ENV>-<REG> represents the environment and region of io.Connect Desktop (e.g., DEMO-INTEROP.IO).

The following is an example definition of a JavaScript app:

{
    "name": "my-app",
    "title": "My App",
    "type": "window",
    "details": {
        "url": "https://example.com/my-app/",
        "mode": "tab",
        "width": 500,
        "height": 400
    }
}

The "name", "type", and "url" properties are required and "type" must be set to "window". The "url" property points to the location of the web app.

The value of the "title" property will be used as a name for the app in the io.Connect launcher and as a window title if the web app doesn't have a document title.

ℹ️ For more details on defining apps, see the Developers > Configuration > Application section.

ℹ️ See the JavaScript examples on GitHub which demonstrate various io.Connect Desktop features.

io.Connect JavaScript Capabilities

Once the @interopio/desktop library has been initialized, your app has access to all io.Connect functionalities. For more detailed information on the different io.Connect capabilities and APIs, see the following sections:

API Reference

For a complete list of the available JavaScript APIs, see the io.Connect JavaScript reference documentation.

Changelog

@interopio/desktop

6.21

6.21.0

Release date: 30.06.2026

This version of @interopio/desktop comes with @interopio/core 6.10.6.

New Features

  • Added getLayoutContents() method to the Layouts API for retrieving the contents of Global and Workspace Layouts.
  • Added setAutoSave() and getAutoSave() methods accessible via the iodesktop.downloads object.
  • Added a path option to the DownloadOptions object passed as a second argument to the download() method of an IOConnectWindow instance.
  • The Apps API start() method now throws a typed error exposing the already-running instance when a single-instance app is started again.

Improvements & Bug Fixes

  • Improved handling of Layout contexts to preserve user-supplied context key casing.
  • Improved handling of exceptions thrown by the Apps API event handler callbacks to prevent breaking the event stream.
  • Fixed onInteropReady() firing its callback twice.

6.20

6.20.4

Release date: 08.06.2026

This version of @interopio/desktop comes with @interopio/core 6.10.6.

Improvements & Bug Fixes

  • Updated @interopio/core to 6.10.6.
  • Updated @interopio/insights-base, @interopio/insights-metrics, and @interopio/insights-traces to ^0.1.0.

6.20.3

Release date: 05.06.2026

This version of @interopio/desktop comes with @interopio/core 6.10.5.

Improvements & Bug Fixes

  • Improved getSavePath() and getSavePathList() types to return objects with a path property.
  • Updated @interopio/insights-metrics to ^0.0.189 to fix @opentelemetry/sdk-metrics externalization in the published bundle.

6.20.2

Release date: 21.05.2026

This version of @interopio/desktop comes with @interopio/core 6.10.5.

Improvements & Bug Fixes

  • Updated @interopio/core to 6.10.5.
  • Fixed App Management tracing to safely access properties on window instances.
  • Added instanceId to App Management event tracing metadata.

6.20.1

Release date: 30.04.2026

This version of @interopio/desktop comes with @interopio/core 6.10.4.

Improvements & Bug Fixes

  • Fixed circular Channels re-exports and fixed call sites.

6.20.0

Release date: 29.04.2026

This version of @interopio/desktop comes with @interopio/core 6.10.4.

New Features

  • Added convertBounds() and getByBounds() methods to the Displays API.
  • Added screenBounds, screenWorkArea, electronId, electronBounds, electronWorkArea, and screenScaleFactor properties to the Display object of the Displays API.
  • Exposed ioDesktopInfo global service object. Renamed GDObject (kept as a deprecated alias) to IODesktopObject.

Improvements & Bug Fixes

  • Updated @interopio/core to 6.10.4.
  • The data argument passed to the set(), setFor(), update(), and updateFor() methods of the App Preferences API is now typed as Data (was any).
  • Fixed download() method in the Window Management API to validate URL and options arguments.
  • Fixed the default layout label to not disappear on restore.
  • Aligned isObject handling and validation across io.Connect Desktop, io.Connect Browser, and io.Manager.
  • Removed @interopio/otel direct dependency.

6.19

6.19.0

Release date: 29.04.2026

This version of @interopio/desktop comes with @interopio/core 6.9.1.

New Features

  • Added OpenTelemetry tracing instrumentation across all APIs.
  • Re-exported IOInsights from @interopio/core.

6.18

6.18.0

Release date: 10.03.2026

This version of @interopio/desktop comes with @interopio/core 6.8.1.

New Features

  • The Apps API inMemory.remove() method now accepts an array of app names for batch removal.

Improvements & Bug Fixes

  • Updated @interopio/core to 6.8.0.

6.17

6.17.0

Release date: 09.02.2026

This version of @interopio/desktop comes with @interopio/core 6.7.3.

New Features

  • Added a customConfig property in the Intent handler and Intent definition types.

Improvements & Bug Fixes

  • Changed onShuttingDown() return type to UnsubscribeFunction.
  • Deprecated the timeout option in the RestoreOptions object passed to the restore() method of the Layouts API.
  • Fixed the Channels API to prevent callback replay after handler invocation.
  • Added validations for the addIntentListener() of the Intents API method.
  • Increased the timeout for streams from 30 to 90 seconds.

6.16

6.16.3

Release date: 20.01.2026

This version of @interopio/desktop comes with @interopio/core 6.7.3.

Improvements & Bug Fixes

  • The lastUpdate property in the AppPreferences object of the App Preferences API is now typed as Date.

6.16.2

Release date: 20.01.2026

This version of @interopio/desktop comes with @interopio/core 6.7.3.

Improvements & Bug Fixes

  • Improved App Management types.

6.16.1

Release date: 19.01.2026

This version of @interopio/desktop comes with @interopio/core 6.7.3.

Improvements & Bug Fixes

  • Fixed the library to not initialize the Apps API when the respective platform Interop method is unavailable.
  • Fixed the get() method of the App Preferences API returning an unparsed fetch response.

6.16.0

Release date: 01.12.2025

This version of @interopio/desktop comes with @interopio/core 6.7.3.

New Features

  • Added a new Apps API (io.apps) with app registry, in-memory store, and instance management.
  • Added a new Platform API (io.platform) with restart(), shutdown(), and onShuttingDown() methods.
  • Added a createPopup() method to the Window Management API.
  • Added a getChannels() method to the Window Management API for retrieving currently joined Channels.
  • Added setDockingConfig(), getDockingConfig(), and undock() methods to the Window Management API.
  • Added "multi" and "directionalMulti" Channel Selector types.
  • Added a restoreWorkspacesByReference option to the RestoreOptions object of the Layouts API.

Improvements & Bug Fixes

  • Deprecated the App Management API (io.appManager) in favor of the new Apps API. The App Management API is still available for backward compatibility, but will be removed in a future release.
  • Improved the reconnection logic.

6.15

6.15.0

Release date: 28.10.2025

This version of @interopio/desktop comes with @interopio/core 6.5.3.

New Features

  • Added an excludeList property in the HandlerFilter object of the Intents API with AppHandlerExclusion and InstanceHandlerExclusion criteria types.

Improvements & Bug Fixes

  • Updated @interopio/core to 6.5.3.
  • Fixed Channels creation inconsistency.

6.14

6.14.0

Release date: 16.06.2025

This version of @interopio/desktop comes with @interopio/core 6.5.2.

New Features

  • Added dragMove() method to the Windows API.
  • Added clearPlacement() method to the Windows API with ClearPlacementSettings options.
  • Added showInTaskbar option to the Windows configure() method.
  • Added saveBounds window option for persisting last known bounds.
  • Added search window setting for enabling in-app search (CTRL + F).
  • Added onDefaultGlobalChanged() event to the Layouts API.
  • The onRenamed() event in the Layouts API now receives the old name as a second argument.
  • Added ignoreContexts option to the Layouts save() method.
  • Added autoHidePanel option to the Notification Panel configuration.

Improvements & Bug Fixes

  • Fixed App Management hanging on initialization with appManager: "full" outside the platform.

6.13

6.13.1

Release date: 29.05.2025

This version of @interopio/desktop comes with @interopio/core 6.5.2.

Improvements & Bug Fixes

  • Fixed group.onClosing() throwing an unhandledrejection error when the group is closed before the event is subscribed.

6.13.0

Release date: 05.05.2025

This version of @interopio/desktop comes with @interopio/core 6.5.2.

New Features

  • Added group.reload() method to the Windows API.

6.12

6.12.0

Release date: 08.04.2025

This version of @interopio/desktop comes with @interopio/core 6.5.2.

New Features

  • Channels API now works outside the platform.
  • Added clearChannelData() method to the Channels API.
  • Added FDC3Context interface to the types.

Improvements & Bug Fixes

  • Changed the leave() method signature to accept an options object or a string.
  • Fixed focus() and active() methods in the Windows API to always resolve.
  • Improved onLayoutModified() event to clarify first-modification-only behavior.

6.11

6.11.0

Release date: 10.03.2025

This version of @interopio/desktop comes with @interopio/core 6.5.2.

Improvements & Bug Fixes

  • Increased the timeout for Interop methods to 90 seconds.
  • Fixed a race condition in appManager.start().
  • Added validations for various methods.
  • Updated @interopio/core and @interopio/fdc3.

6.10

6.10.2

Release date: 17.02.2025

This version of @interopio/desktop comes with @interopio/core 6.5.2.

Improvements & Bug Fixes

  • Internal dependency updates.

6.10.1

Release date: 11.02.2025

This version of @interopio/desktop comes with @interopio/core 6.5.2.

Improvements & Bug Fixes

  • Internal dependency updates.

6.10.0

Release date: 08.01.2025

This version of @interopio/desktop comes with @interopio/core 6.4.3.

New Features

  • Added support for multi Channels: getMyChannels(), myChannels(), onChannelsChanged() methods, and mode property.
  • The Channels leave() method now accepts an options object or a string.
  • Added iodesktop.preloadScripts property and iodesktop.regeneratePreloads() method for managing preload script cache.
  • Added iodesktop.getPath() method for retrieving system paths by name.

Improvements & Bug Fixes

  • The Windows navigate() method now accepts a timeout parameter.

6.9

6.9.2

Release date: 08.01.2025

This version of @interopio/desktop comes with @interopio/core 6.5.0.

Improvements & Bug Fixes

  • Internal dependency updates.

6.9.1

Release date: 14.11.2024

This version of @interopio/desktop comes with @interopio/core 6.4.3.

Improvements & Bug Fixes

  • Internal dependency updates.

6.9.0

Release date: 13.11.2024

This version of @interopio/desktop comes with @interopio/core 6.4.2.

New Features

  • Added executeJavaScript() method access through the external API.
  • Added bulk update for Notifications from the Notification Panel.
  • Added onHandlerAdded() and onHandlerRemoved() events to the Intents API.
  • Added import() method to the Notifications API for batch importing notifications.
  • Added clearSavedHandlers() method and clearSavedHandler request property to the Intents API.
  • Added closeNotificationOnClick option to the Notifications configure() method.
  • Added displayId and displayPath properties for nested notification action menus.
  • Added pinned tabs methods and properties.
  • Added the Interception API.
  • Added FDC3 parsing options to the Channels API.

6.8

6.8.4

Release date: 17.10.2024

This version of @interopio/desktop comes with @interopio/core 6.4.2.

Improvements & Bug Fixes

  • Bumped version due to Workspaces API release.

6.8.3

Release date: 03.10.2024

This version of @interopio/desktop comes with @interopio/core 6.4.2.

Improvements & Bug Fixes

  • Added missing FDC3 dependency.

6.8.2

Release date: 27.09.2024

This version of @interopio/desktop comes with @interopio/core 6.4.2.

Improvements & Bug Fixes

  • Updated ChannelContext data type.

6.8.1

Release date: 26.09.2024

This version of @interopio/desktop comes with @interopio/core 6.4.2.

Improvements & Bug Fixes

  • Fixed ignoring peerID when the invocation target has an instance.

6.8.0

Release date: 18.09.2024

This version of @interopio/desktop comes with @interopio/core 6.4.1.

New Features

  • Added onChannelRestrictionsChanged(), isPinned(), pin(), unpin(), executeCode(), clearMany(), setStates(), and snoozeMany() methods.
  • Added setAllowWorkspaceDrop() method and allowWorkspaceDrop property to the IOConnectWindow object.

6.7

6.7.0

Release date: 05.09.2024

This version of @interopio/desktop comes with @interopio/core 6.4.0.

New Features

  • Extended Channels methods with FDC3 options.

6.6

6.6.1

Release date: 04.09.2024

This version of @interopio/desktop comes with @interopio/core 6.3.5.

Improvements & Bug Fixes

  • Internal dependency updates.

6.6.0

Release date: 07.08.2024

This version of @interopio/desktop comes with @interopio/core 6.3.4.

New Features

  • Added reset() and getRestoredLayoutsInfo() methods to the Layouts API.
  • The Layouts resume()/restore() methods now return the restored instances.

6.5

6.5.1

Release date: 15.07.2024

This version of @interopio/desktop comes with @interopio/core 6.3.3.

Improvements & Bug Fixes

  • Unified repo version bump.

6.5.0

Release date: 03.07.2024

This version of @interopio/desktop comes with @interopio/core 6.3.1.

New Features

  • Added setPath() and setPaths() methods to the Contexts API.

Improvements & Bug Fixes

  • Fixed activate()/focus() never resolving in certain cases.
  • Fixed App Management start() to allow overriding the timeout.

6.4

6.4.0

Release date: 15.05.2024

This version of @interopio/desktop comes with @interopio/core 6.2.1.

New Features

  • Added support for Channel restrictions.

Improvements & Bug Fixes

  • Updated types.
  • Updated @interopio/schemas to 9.3.0.

6.3

6.3.1

Release date: 04.04.2024

This version of @interopio/desktop comes with @interopio/core 6.2.1.

New Features

  • Added snooze support to the Notifications API.
  • Added showPopup() method to the Window group object.
  • Added create() and close() group methods to the Windows API.
  • Added instance.startedBy() method to the App Management API.
  • Added restrict(), restrictAll(), and getRestrictions() methods to the Channels API.

Improvements & Bug Fixes

  • Fixed Preferences getAll() typings.
  • Updated @interopio/core to 6.2.1.

6.2

6.2.2

Release date: 28.02.2024

This version of @interopio/desktop comes with @interopio/core 6.1.0.

New Features

  • The Notifications click() method now accepts a third optional options argument.

6.2.1

Release date: 26.02.2024

This version of @interopio/desktop comes with @interopio/core 6.1.0.

Improvements & Bug Fixes

  • Fixed myApplication returning undefined in Web Groups and Workspaces.

6.2.0

Release date: 20.02.2024

This version of @interopio/desktop comes with @interopio/core 6.1.0.

New Features

  • Added ability to change the Notification Panel and toasts position.
  • Added clone() method to the Windows API.
  • Added filterHandlers() method to the Intents API.
  • Added getIntents() method to the Intents API for retrieving Intents by handler.
  • Added iodesktop.downloads object with list(), pauseResume(), removeItem(), and setSavePath() methods for managing downloads programmatically.

Improvements & Bug Fixes

  • Fixed Notifications onDataChanged() typings.
  • Fixed Notifications onClose() typings.
  • Fixed Preferences lastUpdate typings.
  • Removed shortid dependency.
  • Updated @interopio/core to 6.1.0.

6.1

6.1.0

Release date: 13.12.2023

This version of @interopio/desktop comes with @interopio/core 6.0.2.

New Features

  • Added setAsCurrent option to the Layouts save() method.
  • The Intents register() handler now receives the caller as a second argument.
  • Added dock() method and onDockingChanged() event to the Windows API.
  • Added autoArrange() method and onArrangementChanged() event to the Windows API.
  • Added group.onClosing() event for preventing window group closing.
  • Added support for updating the Notification data field and listening for updates.

Improvements & Bug Fixes

  • Fixed isHibernated to return the correct value.
  • Fixed a memory leak in the Windows API.

6.0

6.0.2

Release date: 13.11.2023

This version of @interopio/desktop comes with @interopio/core 6.0.2.

Improvements & Bug Fixes

  • Internal dependency updates and fixes.

6.0.1

Release date: 04.10.2023

This version of @interopio/desktop comes with @interopio/core 6.0.2.

Improvements & Bug Fixes

  • Fixed compatibility with Glue42 3.x.

6.0.0

Release date: 03.10.2023

This version of @interopio/desktop comes with @interopio/core 6.0.2.

New Features

  • Rebranded to interop.io.

Improvements & Bug Fixes

  • Fixed Layouts to check for old methods when calling the new ones.

  • Fixed Notifications click Interop method not working if the raiser is closed.

@interopio/core

6.10

6.10.7

Release date: 19.06.2026

Improvements & Bug Fixes

  • Fixed missing io.Insights propagation info extraction in context update() bridge calls.

6.10.6

Release date: 07.06.2026

This version of @interopio/core is used in @interopio/desktop 6.20.4 and 6.21.0.

Improvements & Bug Fixes

  • Fixed error handling to tolerate non-error throws in handler-error log paths.

6.10.5

Release date: 13.05.2026

This version of @interopio/core is used in @interopio/desktop 6.20.2 and 6.20.3.

Improvements & Bug Fixes

  • Fixed dist index from requiring a missing io.Insights module.

6.10.4

Release date: 28.04.2026

This version of @interopio/core is used in @interopio/desktop 6.20.0 and 6.20.1.

Improvements & Bug Fixes

  • Fixed build to only re-export @interopio/otel in the ES build output.
  • Fixed login() to preserve the original error instead of coercing to [object Object].
  • Improved WebSocket error diagnostics in browser and Node.js.
  • Updated @interopio/otel minimum to >=0.0.222 to avoid broken versions.

6.10.3

Release date: 20.04.2026

Improvements & Bug Fixes

  • Bumped protobufjs from 7.5.4 to 7.5.5 (security fix).

6.10.2

Release date: 20.04.2026

Improvements & Bug Fixes

  • Fixed Bus to buffer publishes across sleep/wake to prevent message loss.

6.10.1

Release date: 16.04.2026

Improvements & Bug Fixes

  • Fixed Bus to re-subscribe to topics after Gateway reconnect.
  • Fixed connection lifecycle bugs in reconnect and openSocket().
  • Fixed Interop invoke() targeting with a full Instance object.
  • Fixed Interop to allow empty strings for method definition optional fields.
  • Fixed replaceComplexProperties() TypeError on Object.create(null) values.
  • Aligned GDObject type with actual usage and made it extensible.
  • Removed redundant WebSocket declaration from the Window interface.

6.10.0

Release date: 03.04.2026

New Features

  • io.Connect Browser 4.3 compatibility.

6.9

6.9.1

Release date: 30.03.2026

This version of @interopio/core is used in @interopio/desktop 6.19.0.

Improvements & Bug Fixes

  • Fixed infinite loop between traces and logs.

6.9.0

Release date: 16.03.2026

New Features

  • Added io.Insights (OpenTelemetry) support.

6.8

6.8.1

Release date: 16.02.2026

This version of @interopio/core is used in @interopio/desktop 6.18.0.

Improvements & Bug Fixes

  • Fixed additionalOptions decoders for interop.invoke() (replaced positiveNumberDecoder with nonNegativeNumberDecoder).

6.8.0

Release date: 10.12.2025

New Features

  • io.Connect Browser 4.2 compatibility.

6.7

6.7.3

Release date: 21.11.2025

This version of @interopio/core is used in @interopio/desktop 6.16.0, 6.16.1, 6.16.2, 6.16.3, and 6.17.0.

Improvements & Bug Fixes

  • Fixed regressions related to subscribing to touched contexts by default.

6.7.2

Release date: 06.11.2025

New Features

  • Subscribe to touched contexts by default.

Improvements & Bug Fixes

  • Improved context subscribe() error handling.

6.7.1

Release date: 30.10.2025

Improvements & Bug Fixes

  • Fixed repetitive error ("hello" already received once) after WebSocket reconnect.
  • Fixed context get()/destroy() race condition.

6.7.0

Release date: 16.09.2025

New Features

  • io.Connect Browser 4.1 compatibility.

6.6

6.6.0

Release date: 14.06.2025

New Features

  • io.Connect Browser 4.0 compatibility.

6.5

6.5.2

Release date: 27.02.2025

This version of @interopio/core is used in @interopio/desktop 6.11.0.

Improvements & Bug Fixes

  • TSLint error fix.

6.5.1

Release date: 03.02.2025

Improvements & Bug Fixes

  • Internal version bump.

6.5.0

Release date: 08.01.2025

This version of @interopio/core is used in @interopio/desktop 6.9.2.

New Features

  • io.Connect Browser 3.5 compatibility.

6.4

6.4.3

Release date: 14.11.2024

This version of @interopio/core is used in @interopio/desktop 6.9.1 and 6.10.0.

Improvements & Bug Fixes

  • Fixed incorrect error parsing.

6.4.2

Release date: 26.09.2024

This version of @interopio/core is used in @interopio/desktop 6.8.1, 6.8.2, 6.8.3, 6.8.4, and 6.9.0.

Improvements & Bug Fixes

  • Fixed ignoring peerID when the invocation target has an instance.

6.4.1

Release date: 18.09.2024

This version of @interopio/core is used in @interopio/desktop 6.8.0.

Improvements & Bug Fixes

  • Added optional uuid to the identity interface.

6.4.0

Release date: 05.09.2024

This version of @interopio/core is used in @interopio/desktop 6.7.0.

New Features

  • io.Connect Browser 3.4 compatibility.

Improvements & Bug Fixes

  • Linting and formatting improvements.

6.3

6.3.5

Release date: 04.09.2024

This version of @interopio/core is used in @interopio/desktop 6.6.1.

Improvements & Bug Fixes

  • Internal dependency updates.

6.3.4

Release date: 07.08.2024

This version of @interopio/core is used in @interopio/desktop 6.6.0.

Improvements & Bug Fixes

  • Fixed peer disconnect leading to unexpected invocation errors.

6.3.3

Release date: 15.07.2024

This version of @interopio/core is used in @interopio/desktop 6.5.1.

Improvements & Bug Fixes

  • Unified repo version bump.

6.3.2

Release date: 10.07.2024

Improvements & Bug Fixes

  • Removed require() calls from dist; switched to non-secure nanoid.

6.3.1

Release date: 16.06.2024

This version of @interopio/core is used in @interopio/desktop 6.5.0.

Improvements & Bug Fixes

  • Reduced context in log errors from the Gateway; returned ws as a dependency.

6.3.0

Release date: 12.06.2024

New Features

  • io.Connect Browser 3.3 compatibility.

6.2

6.2.3

Release date: 12.06.2024

Improvements & Bug Fixes

  • Fixed logger circular dependency.

6.2.2

Release date: 23.05.2024

Improvements & Bug Fixes

  • Fixed logger circular dependency.

6.2.1

Release date: 02.04.2024

This version of @interopio/core is used in @interopio/desktop 6.3.1 and 6.4.0.

Improvements & Bug Fixes

  • Fixed reconnection issues.

6.2.0

Release date: 05.03.2024

Improvements & Bug Fixes

  • Fixed context domain version to allow > 2 (support for Gateway next).

6.1

6.1.1

Release date: 05.03.2024

Improvements & Bug Fixes

  • Internal version bump.

6.1.0

Release date: 02.11.2023

This version of @interopio/core is used in @interopio/desktop 6.2.0, 6.2.1, and 6.2.2.

New Features

  • io.Connect Browser 3.1 compatibility.

6.0

6.0.4

Release date: 02.11.2023

Improvements & Bug Fixes

  • Internal version bump.

6.0.3

Release date: 05.10.2023

Improvements & Bug Fixes

  • Updated .d.ts type information.

6.0.2

Release date: 14.09.2023

This version of @interopio/core is used in @interopio/desktop 6.0.0, 6.0.1, 6.0.2, and 6.1.0.

Improvements & Bug Fixes

  • Updated .npmignore.

6.0.1

Release date: 13.09.2023

New Features

  • Introduced the new @interopio/core library (rebranded from @glue42/core).

6.0.0

Release date: 13.09.2023

New Features

  • Initial release of @interopio/core 6.0.