Changelog
io.Connect Browser 4.5
Release date: 10.07.2026
Versions of all main and additional libraries of io.Connect Browser for the current release:
| Library | Version |
|---|---|
@interopio/browser |
4.5 |
@interopio/browser-platform |
4.5 |
@interopio/browser-worker |
4.5 |
@interopio/cli |
4.4 |
@interopio/fdc3 |
2.11 |
@interopio/home-ui-react |
4.5 |
@interopio/iframes-api |
1.0 |
@interopio/intent-resolver-ui |
4.5 |
@interopio/modals-api |
4.5 |
@interopio/modals-ui |
4.5 |
@interopio/ng |
6.3 |
@interopio/react-hooks |
4.5 |
@interopio/search-api |
3.5 |
@interopio/theme |
4.5 |
@interopio/widget |
3.5 |
@interopio/workspaces-api |
4.5 |
@interopio/workspaces-ui-react |
4.5 |
@interopio/workspaces-ui-web-components |
4.5 |
New Features
⚠️ Note that each new feature is listed under all libraries it affects.
@interopio/browser
Retrieving Layout Contents
The Layouts API has been extended with a new
getLayoutContents()method that allows you to retrieve the contents of Global Layouts and Workspace Layouts. The method receives aGetContentsOptionsobject as a required argument.When used for retrieving the contents of a Global Layout, the returned
LayoutContentsobject will contain all components participating in the Global Layout: individual app instances (including all Workspaces App instances), all Workspace instances hosted in all Workspaces App instances, and all windows participating in all Workspaces.When used for retrieving the contents of a Workspace Layout, the returned
LayoutContentsobject will contain only the windows participating in the Workspace.The following example demonstrates how to retrieve the contents of a Global Layout:
const options = { name: "My Layout", type: "Global" }; const { appComponents, workspaceComponents, workspaceWindows } = await io.layouts.getLayoutContents(options); // List all apps in the Layout. console.log("Apps:", appComponents); // List all Workspaces App instances in the Layout. console.log("Workspaces App instances:", workspaceComponents); // List all windows participating in all Workspaces. console.log("Workspace windows:", workspaceWindows);Leaving Channels
The
leave()method of the Channels API now accepts a string argument specifying the ID of the window to remove from the currently joined Channel (in single Channel mode) or from all currently joined Channels (in multi Channel mode):const windowId = win.id; await io.channels.leave(windowId);Filtering Channels by FDC3 Context Type
The
getMyChannels()method of the Channels API now accepts an optionalFDC3Optionsargument, allowing you to filter the retrieved Channel contexts by FDC3 context type:// Retrieve only Channel contexts containing FDC3 data of type `"fdc3.instrument"`. const options = { contextType: "fdc3.instrument" }; const channels = await io.channels.getMyChannels(options);Configuring IFrame Attributes
Related to the release of the new io.Connect IFrames API, the
DefinitionDetailsobject describing thedetailsobject in an app definition has been extended with aniframeSandboxproperty for configuring thesandboxattribute of the<iframe>element.You can also use the
iframePermissionsPolicyproperty introduced in io.Connect Browser 3.4 to configure theallowattribute of the<iframe>element.⚠️ Note that the
workspacesSandboxproperty will be deprecated in io.Connect Browser 5.0 and it's strongly recommended to migrate to theiframeSandboxproperty instead.
@interopio/browser-platform
Retrieving Layout Contents
Added support for the
getLayoutContents()method in the Layouts API that allows you to retrieve the contents of Global Layouts and Workspace Layouts.IFrames API
- Added support for the new
@interopio/iframes-apilibrary, enabling Browser Clients to start apps in<iframe>elements.- Added support for the
iframeSandboxproperty of thedetailsobject in the app definition for configuring thesandboxattribute of the<iframe>element.Leaving Channels
Added support for passing a string argument to the
leave()method of the Channels API that specifies the ID of the window to remove from a single or from multiple Channels.Filtering Channels by FDC3 Context Type
Added support for the optional
FDC3Optionsargument in thegetMyChannels()method, enabling filtering of Channel contexts by FDC3 context type.
@interopio/home-ui-react
Launchpad Redesign
The Launchpad has been redesigned - the Global Layouts are now listed in a Layouts section similarly to apps and Workspaces instead of in a separate panel in the Launchpad:
Favorites are now added and removed via the context menu for each section item instead of via a dedicated button in the item list.
Library Features
- Added
sectionIconSrcto the default section components:<ApplicationsSection />,<FavoritesSection />, and<WorkspacesSection />.- Extended the
configobject of the<Section />component with an optionalHeaderButtonproperty that accepts a custom section header action component.- Added item-level
isSelectedandstatusPillsupport for items rendered in the<Section />component.- Changed the return shape of the
getIcon()function passed to the<Section />component from a string value to structured icon data ({ variant: IconVariant }for predefined icons or{ src: string }for custom icons).
@interopio/iframes-api
Opening Apps in IFrames
The new
@interopio/iframes-apilibrary provides a convenient IFrames API that allows you to start apps in<iframe>elements within the current app instance.To use the IFrames API, add it to the
librariesarray when initializing the@interopio/browser-platformor the@interopio/browserlibrary.The following example demonstrates how to include the
@interopio/iframes-apilibrary when initializing the@interopio/browser-platformlibrary in your Main app:import IOBrowserPlatform from "@interopio/browser-platform"; import IOIFrames from "@interopio/iframes-api"; const config = { licenseKey: "my-license-key", browser: { libraries: [IOIFrames] } }; const { io } = await IOBrowserPlatform(config);To open an app in an
<iframe>element, use theopenApp()method and provide the app name and a container element in which to render the<iframe>:const container = document.getElementById("my-iframe-container"); const config = { appName: "my-app", container, context: { ticker: "MSFT" } } const { id, iframe } = await io.iframes.openApp();To handle close requests for the app opened in an
<iframe>element, use theonCloseRequested()method and invoke the providedconfirmClose()callback to confirm to the platform that the<iframe>can be closed. You can then remove the<iframe>container with your custom logic:io.iframes.onCloseRequested(async (instance, confirmClose) => { // Confirm to the platform that the `<iframe>` can be closed. await confirmClose(); // Remove the `<iframe>` container with your custom logic. });
@interopio/workspaces-ui-react
Workspace Splitter Size
It's now possible to customize the size of the Workspace splitters (the draggable dividers between the windows in a Workspace).
To specify a splitter size in pixels, use the
splitterSizeproperty of thesettingsobject within thecomponentsprop of the<Workspaces />component:import Workspaces from "@interopio/workspaces-ui-react"; const App = () => { return ( <Workspaces components={{ settings: { splitterSize: 10 } }} /> ); }; export default App;
Improvements & Bug Fixes
⚠️ Note that each improvement or bug fix is listed under all libraries it affects.
@interopio/browser
- Fixed the
configure()method of the Notifications API to resolve with the updated notification configuration instead ofundefined.- Fixed an issue where the
restrictAll()method of the Channels API resolved with an empty object instead ofundefined.- Enforced stricter URL validation for app definitions and when opening windows dynamically. URLs with unsafe protocols (
data:,javascript:,vbscript:) are now rejected.
@interopio/browser-platform
- Fixed the
configure()method of the Notifications API to resolve with the updated notification configuration instead ofundefined.- Fixed an issue where the
restrictAll()method of the Channels API resolved with an empty object instead ofundefined.- Enforced stricter URL validation for app definitions and when opening windows dynamically. URLs with unsafe protocols (
data:,javascript:,vbscript:) are now rejected.- Improved the performance of fetching remote configuration from io.Manager.
@interopio/fdc3
- Updated the underlying
@finos/fdc3dependency to version 2.2.3.- Updated the app Channel definition decoder to accept
idwithout requiringname, aligning with the FDC3 2.2 specification.
@interopio/home-ui-react
- Improved the text and order of the Platform Preferences panel components.
- Improved the Notification Settings panel styling for consistency between panels.
@interopio/modals-ui
- Fixed dialog visual rendering issues related to theme class management when switching themes.
@interopio/theme
- Fixed form placeholder color and removed the "Clear" button for form inputs.
@interopio/workspaces-ui-react
- Added support for the
iframeSandboxproperty of thedetailsobject in the app definition for configuring thesandboxattribute of the<iframe>element.
