5.2.0 Change Notes

Additions

  • Added FormatSetFormatsProvider class that implements MutableFormatsProvider to manage format definitions within a format set. This provider supports adding and removing formats at runtime and automatically updates the underlying format set when changes are made.

Changes

  • Added unitSystem property to FormatSet interface, using UnitSystemKey type. This will help move APIs away from relying on activeUnitSystem in quantityFormatter, as they move to the new formatting APIs using IModelApp.formatsProvider. Looking ahead, tools and components that use formatting APIs can then listen to just the onFormatsChanged event from IModelApp.formatsProvider instead of IModelApp.quantityFormatter.onActiveUnitSystemChanged.
  • Added optional description property to FormatSet interface. This property allows for additional descriptive text to be associated with a format set, providing better documentation and user context for format set purposes.
  • Changed interface for formats in FormatSet from SchemaItemFormatProps to FormatDefinition. FormatSet just uses the name, label, description field from SchemaItemFormatProps, which FormatDefinition already has.

Presentation

All hierarchies-related APIs have been deprecated in favor of the new-generation hierarchy building APIs, provided with the @itwin/presentation-hierarchies package. See the learning section and migration guide for details on how to create similar hierarchies using those APIs. See the API deprecations section for a list of specific APIs that have been deprecated.

API deprecations

@itwin/presentation-common

Deprecated all hierarchy-related types (see Deprecation of hierarchy-related APIs section for more details).

  • Presentation rule types:
    • ChildNodeRule
    • ChildNodeSpecification
    • ChildNodeSpecificationBase
    • ChildNodeSpecificationTypes
    • ClassGroup
    • CustomNodeSpecification
    • CustomQueryInstanceNodesSpecification
    • DefaultGroupingPropertiesContainer
    • ECPropertyValueQuerySpecification
    • GroupingRule
    • GroupingSpecification
    • GroupingSpecificationBase
    • GroupingSpecificationTypes
    • InstanceNodesOfSpecificClassesSpecification
    • NavigationRule
    • NavigationRuleBase
    • NodeArtifactsRule
    • PropertyGroup
    • PropertyRangeGroupSpecification
    • QuerySpecification
    • QuerySpecificationBase
    • QuerySpecificationTypes
    • RelatedInstanceNodesSpecification
    • RootNodeRule
    • SameLabelInstanceGroup
    • SameLabelInstanceGroupApplicationStage
    • StringQuerySpecification
    • SubCondition
  • Node key types:
    • BaseNodeKey
    • ECClassGroupingNodeKey
    • ECInstancesNodeKey
    • ECPropertyGroupingNodeKey
    • GroupingNodeKey
    • LabelGroupingNodeKey
    • NodeKey
    • NodeKeyPath
    • KeySet.nodeKeys, KeySet.nodeKeysCount, KeySetJSON.nodeKeys
  • Node types:
    • Node
    • NodePathElement
    • NodePathFilteringData
    • PartialNode
    • StandardNodeTypes
  • Presentation manager prop and return types:
    • FilterByInstancePathsHierarchyRequestOptions
    • FilterByInstancePathsHierarchyRpcRequestOptions
    • FilterByTextHierarchyRequestOptions
    • FilterByTextHierarchyRpcRequestOptions
    • HierarchyCompareInfo
    • HierarchyCompareOptions
    • HierarchyLevel
    • HierarchyLevelDescriptorRequestOptions
    • HierarchyLevelDescriptorRpcRequestOptions
    • HierarchyRequestOptions
    • HierarchyRpcRequestOptions
    • HierarchyUpdateInfo
    • NodeDeletionInfo
    • NodeInsertionInfo
    • NodeUpdateInfo
    • PartialHierarchyModification

@itwin/presentation-backend

Deprecated all hierarchy-related types (see Deprecation of hierarchy-related APIs section for more details).

  • Hierarchy cache configuration:
    • DiskHierarchyCacheConfig
    • HierarchyCacheConfig
    • HierarchyCacheMode
    • HybridCacheConfig
    • MemoryHierarchyCacheConfig
    • PresentationManagerCachingConfig.hierarchies
  • PresentationManager methods:
    • PresentationManager.compareHierarchies
    • PresentationManager.getFilteredNodePaths
    • PresentationManager.getNodePaths
    • PresentationManager.getNodes
    • PresentationManager.getNodesCount
    • PresentationManager.getNodesDescriptor

@itwin/presentation-frontend

Deprecated all hierarchy-related types (see Deprecation of hierarchy-related APIs section for more details).

  • GetNodesRequestOptions
  • IModelHierarchyChangeEventArgs
  • PresentationManager methods & members:
    • PresentationManager.getFilteredNodePaths
    • PresentationManager.getNodePaths
    • PresentationManager.getNodesCount
    • PresentationManager.getNodesDescriptor
    • PresentationManager.getNodesIterator
    • PresentationManager.onIModelHierarchyChanged

Display

Draco decoding

Draco decoding in iTwin.js has been changed so that the loaders.gl dependency will no longer use a CDN to request the draco-decoder source files. Instead, we now bundle those resources into iTwin.js from a new draco3d dependency. We ask the loaders.gl library to locally use those resources.

Geometry

Clippers for a curve chain

Added a new API ClipUtilities.createClippersForRegionsClosestToCurvePrimitivesXY to the clip utilities class to create clippers for regions closest to the children of a curve chain.

The API takes a curve chain (z-coordinate is ignored) and other optional inputs (which control the accuracy and xy-range of the returned clippers) and returns an ordered array of clippers, each of which represents the region closest to the corresponding primitive in the input curve chain.

Examples
A custom path is generated and passed along with control options to the API:

const bbox = Range2d.createXYXY(70250, 1209900, 70950, 1210500); const clippers = ClipUtilities.createClippersForRegionsClosestToCurvePrimitivesXY(path, strokeOptions, distanceTol, bbox);

Below you can see the visualization of clippers. Each child is shown by a color and the corresponding region to that child is shown by a similar color. Note that regions crossed the curve chain exactly at the joins. Regions for curve chain children - example 1

Here is another example for a path provided by the Civil team: Regions for curve chain children - example 2

Electron 38 support

In addition to already supported Electron versions, iTwin.js now supports Electron 38.

Last Updated: 02 October, 2025