Changelog
io.Connect Browser 4.3
Release date: 03.04.2026
Versions of all main and additional libraries of io.Connect Browser for the current release:
| Library | Version |
|---|---|
@interopio/browser |
4.3 |
@interopio/browser-platform |
4.3 |
@interopio/browser-worker |
4.3 |
@interopio/cli |
4.3 |
@interopio/fdc3 |
2.9 |
@interopio/home-ui-react |
4.3 |
@interopio/intent-resolver-ui |
4.3 |
@interopio/modals-api |
4.3 |
@interopio/modals-ui |
4.3 |
@interopio/ng |
6.2 |
@interopio/react-hooks |
4.3 |
@interopio/search-api |
3.3 |
@interopio/theme |
4.3 |
@interopio/widget |
3.3 |
@interopio/workspaces-api |
4.3 |
@interopio/workspaces-ui-react |
4.3 |
@interopio/workspaces-ui-web-components |
4.3 |
⚠️ Note that in this release the major version of some of the libraries has been incremented only for release purposes and procedural consistency, not due to breaking changes in the respective libraries.
New Features
⚠️ Note that each new feature is listed under all libraries it affects.
@interopio/browser
Retrieving App Definitions
To retrieve the full app definition of an app, use the
getConfiguration()method of theApplicationinstance:const definition = await myApp.getConfiguration(); console.log(`Retrieved definition for app "${definition.name}".`);
@interopio/browser-platform
Fetching Platform Configuration from io.Manager
You can now supply a remote platform configuration from io.Manager.
To instruct the platform to fetch its configuration from io.Manager, pass a
RemoteConfigFromManagerobject and set itstypeproperty to"manager"when initializing the@interopio/browser-platformlibrary:import IOBrowserPlatform from "@interopio/browser-platform"; const config = { // Must be set to `"manager"`. type: "manager", managerURL: "https://my-io-manager.com:4242/api", // Optional function for modifying the fetched configuration before the platform initializes. modifyConfig: (config) => { config.licenseKey = "my-license-key"; return config; } }; const { io } = await IOBrowserPlatform(config);The
RemoteConfigFromManagerobject has the following properties:
Property Type Description enableCachebooleanIf true(default), will enable persisting locally the platform configuration fetched from io.Manager.fetchTimeoutMsnumberInterval in milliseconds to wait for fetch requests sent to io.Manager to complete. Defaults to 30000.managerURLstringRequired. URL pointing to the io.Manager REST API. modifyConfigfunctionFunction that receives the fetched configuration as an argument. Use this to modify the configuration before the platform initializes. platformVersionstringExact platform version for which to fetch configuration from io.Manager. Defaults to the current platform version. type"manager"Required. Must be set to "manager".Managing Preferences for Apps Without Definitions
You can now use
"all"as a value for thevalidNonExistentAppsproperty to control the validation behavior of the App Preferences API when saving preferences for apps. Use"all"to disable validation entirely, allowing preferences to be saved for any app name without checking whether the app exists in the app store.The following example demonstrates how to disable app validation entirely:
import IOBrowserPlatform from "@interopio/browser-platform"; const config = { licenseKey: "my-license-key", applicationPreferences: { validNonExistentApps: "all" } }; const { io } = await IOBrowserPlatform(config);Retrieving App Definitions
Added support for retrieving the full app definition of an app by using the
getConfiguration()method of anApplicationinstance.io.Connect Gateway Username Case Sensitivity
The io.Connect Gateway treats usernames as case-insensitive by default, allowing clients authenticated with different letter casing (e.g.,
"JohnDoe"and"johndoe") to connect and interoperate seamlessly. To instruct the io.Connect Gateway to treat usernames as case-sensitive, set theusernameCaseSensitiveproperty of theauthenticationobject totrueunder thegatewaytop-level key in the platform configuration:import IOBrowserPlatform from "@interopio/browser-platform"; const config = { licenseKey: "my-license-key", gateway: { authentication: { usernameCaseSensitive: true } } }; const { io } = await IOBrowserPlatform(config);io.Bridge Configuration
The io.Bridge configuration has been extended with settings for Interop server filtering for visibility rules and platform announce interval.
Interop Server Filtering for Visibility Rules
The visibility rules for the Interop API now support an
identityfilter that enables more granular control over the visibility of Interop methods. Each key in theidentityfilter can be any property of theInstanceobject exposed by the Interop API. An Interop server will be matched only if all specified filter entries match against its identity. Using theidentityfilter in combination with themethodfilter is useful when several Interop servers have registered an Interop method with the same name:import IOBrowserPlatform from "@interopio/browser-platform"; const config = { licenseKey: "my-license-key", gateway: { bridge: { url: "https://my-io-bridge.com", interop: { visibility: [ // Restrict the Interop methods registered by a specific app to the local platform. { identity: { application: "my-private-app" }, restrictions: "local" } ] } } }, user: { id: "user-id" } }; const { io } = await IOBrowserPlatform(config);Announce Interval
To configure the interval at which the platform announces itself to io.Bridge to keep the connection alive, use the
announceIntervalMSproperty of thebridgeobject. The default value is60000(60 seconds):import IOBrowserPlatform from "@interopio/browser-platform"; const config = { licenseKey: "my-license-key", gateway: { bridge: { url: "https://my-io-bridge.com", announceIntervalMS: 30000 } }, user: { id: "user-id" } }; const { io } = await IOBrowserPlatform(config);
@interopio/home-ui-react
You can now customize the icons for app folders in the Launchpad by using the
folderIconGettersproperty of the<ApplicationsSection />component.The
folderIconGettersproperty accepts an object with key/value pairs where each key is the name of the folder to customize and the value is a function that returns the icon class name based on whether the folder is open or closed. This allows you to provide different icons for open and closed states of the folders.It's also possible to customize the icons of nested folders. If you specify a nested folder, the folder names must be separated with a forward slash (
"/").The following example demonstrates how to use the
folderIconGettersproperty to customize the icons of app folders in the Launchpad, including a nested folder:import { IOConnectHome, ApplicationsSection } from "@interopio/home-ui-react"; import "@interopio/workspaces-ui-react/dist/styles/workspaces.css"; import "@interopio/home-ui-react/src/index.css"; const getConfig = (userData) => { // Define and return the required platform configuration. }; // Custom icons for the app folders. const folderIconGetters = { // Customizing the app folder icons also works for nested folders. // Nested folders must be separated with a forward slash ("/"). "Trading/Sales": (isOpen) => isOpen ? "custom-trading-sales-open-icon" : "custom-trading-sales-closed-icon", "Analytics": (isOpen) => isOpen ? "custom-analytics-open-icon" : "custom-analytics-closed-icon" }; const config = { getIOConnectConfig: getConfig, launchpad: { components: { // Customizing the default sections. sections: [ { placementId: "applications-section", Component: () => <ApplicationsSection folderIconGetters={folderIconGetters} /> } ] } } }; const App = () => <IOConnectHome config={config} />; export default App;
@interopio/workspaces-api
The
NewLayoutOptionsobject passed as an argument to thesave()method was expanded with anignoreContextsproperty. Use this property to instruct the io.Connect platform to skip saving any window or Workspace contexts when saving a Layout:const options = { name: "My Layout", ignoreContexts: true }; const savedLayout = await io.layouts.save(options);
@interopio/workspaces-ui-web-components
The
@interopio/workspaces-ui-web-componentslibrary now supports Channel restrictions and directional multi Channels for Workspace windows.
Improvements & Bug Fixes
⚠️ Note that each improvement or bug fix is listed under all libraries it affects.
@interopio/browser
- Improved handling subscriptions for theme changes in the Themes API.
@interopio/browser-platform
- Fixed an issue related to handling window titles in Layouts when
<iframe />elements are registered as apps.- Fixed an issue related to correctly handling both full URLs and glob patterns in block lists.
@interopio/fdc3
- Fixed an issue related to handling targeted instances when
appIdis passed as a target toraiseIntent().
@interopio/home-ui-react
- Improved handling the renaming of Workspaces in the "Workspaces" section of the Launchpad.
- Fixed an issue related to icon sizing problems when the icon URL fails to load.
- The
@interopio/browserand the@interopio/browser-platformlibraries are now optional peer dependencies of the@interopio/home-ui-reactlibrary.
@interopio/ng
- The
@interopio/browser,@interopio/browser-platform, and the@interopio/desktoplibraries are now optional peer dependencies of the@interopio/nglibrary. You now have to manually install the respective libraries depending on the targeted io.Connect platform.
@interopio/react-hooks
- The
@interopio/browser,@interopio/browser-platform, and the@interopio/desktoplibraries are now optional peer dependencies of the@interopio/react-hookslibrary. You now have to manually install the respective libraries depending on the targeted io.Connect platform.
@interopio/workspaces-api
- Fixed an issue related to saving Layouts when there are non-io.Connect windows in a Workspace.
@interopio/workspaces-ui-react
- Fixed an issue related to handling tooltip values.