Releases: iTwin/itwinjs-core
v3.7.7
v4.0.0
4.0.0 Change Notes
Table of contents:
Breaking Changes
Updated minimum requirements
A new major release of iTwin.js affords us the opportunity to update our requirements to continue to provide modern, secure, and rich libraries. Please visit our Supported Platforms documentation for a full breakdown.
Node.js
Node 12 reached end-of-life in 2020, and Node 14 as well as Node 16 will do so shortly. iTwin.js 4.0 requires a minimum of Node 18.12.0, though we recommend using the latest long-term-support version.
WebGL
Web browsers display 3d graphics using an API called WebGL, which comes in 2 versions: WebGL 1, released 11 years ago; and WebGL 2, released 6 years ago. WebGL 2 provides many more capabilities than WebGL 1. Because some browsers (chiefly Safari) did not provide support for WebGL 2, iTwin.js has maintained support for both versions, which imposed some limitations on the features and efficiency of its rendering system.
Over a year ago, support for WebGL 2 finally became available in all major browsers. iTwin.js now requires WebGL 2 - WebGL 1 is no longer supported. This change will have no effect on most users, other than to improve their graphics performance. However, users of iOS will need to make sure they have upgraded to iOS 15 or newer to take advantage of WebGL 2 (along with the many other benefits of keeping their operating system up to date).
IModelApp.queryRenderCompatibility will now produce WebGLRenderCompatibilityStatus.CannotCreateContext for a client that does not support WebGL 2.
Electron
Electron versions from 14 to 17 reached their end-of-life last year, and for this reason, support for these versions were dropped. To be able to drop Node 16, Electron 22 was also dropped. iTwin.js now supports Electron 23 and Electron 24.
Default RPC Registration
Previously, @itwin/core-electron
and @itwin/core-mobile
automatically registered the following RPCs on your behalf:
- IModelReadRpcInterface
- IModelTileRpcInterface
- SnapshotIModelRpcInterface
- PresentationRpcInterface
To be more aligned with our approach on Web and to prevent unnecessary registrations and coupling of dependencies, we are now requiring the consumer to register all RPCs they need on their end. Please refer to the documentation for ElectronApp.startup and MobileHost.startup.
Breaking out of lockstep
To move more quickly and release independently, the following packages have broken out of lockstep with iTwin.js Core and have moved outside of the itwinjs-core repository.
AppUI
The source code for the following packages was moved to the new AppUi repository.
- @itwin/appui-react
- @itwin/appui-layout-react
- @itwin/components-react
- @itwin/core-react
- @itwin/imodel-components-react
Presentation
The source code for the following packages was moved to the new Presentation repository.
- @itwin/presentation-components
- @itwin/presentation-opentelemetry
- @itwin/presentation-testing
Transformation
The transformer package @itwin/core-transformer
was renamed to @itwin/imodel-transformer
and has its own repository now with supporting packages.
eslint-plugin
@itwin/eslint-plugin
has moved to the eslint-plugin repository.
map-layers
@itwin/map-layers
has moved into the viewer-components-react repository.
Deprecated API removals
The following previously-deprecated APIs have been removed:
@itwin/core-backend:
AliCloudStorageService
AliCloudStorageServiceCredentials
AzureBlobStorage
CloudStorageService
CloudStorageTileUploader
CloudStorageUploadOptions
tileCacheService
property of IModelHost, IModelHostOptions, and IModelHostConfigurationIModelHost.tileUploader
@itwin/core-common:
CloudStorageCache
CloudStorageContainerDescriptor
CloudStorageContainerUrl
CloudStorageProvider
CloudStorageTileCache
IModelTileRpcInterface.getTileCacheContainerUrl
IModelTileRpcInterface.isUsingExternalTileCache
@itwin/presentation-common
ContentInstancesOfSpecificClassesSpecification.handlePropertiesPolymorphically
Deprecated API replacements
Querying ECSql
ECSqlReader can be used as an AsyncIterableIterator. This makes migrating from using query
to using createQueryReader
much easier.
Both of these are methods that exist in IModelDb, ECDb, and IModelConnection.
createQueryReader
can now be used as shown below:
for await (const row of iModel.createQueryReader("SELECT * FROM bis.Element")) {
const rowId = row[0]; // or 'row.id'
}
It is important to note that the object returned by createQueryReader
is a QueryRowProxy object and not a raw JavaScript object. To get a raw JavaScript object (as would have been assumed previously when using query
), call .toRow()
on the QueryRowProxy object.
for await (const row of iModel.createQueryReader("SELECT * FROM bis.Element")) {
const jsRow = row.toRow();
}
Interfaces changed
@itwin/core-quantity
- The interface
UnitConversion
has been renamed to UnitConversionProps.
@itwin/ecschema-metadata
- The
FormatProps
interface has been replaced with the SchemaItemFormatProps type alias. - The
UnitProps
interface has been renamed to SchemaItemUnitProps. - ISchemaLocater.getSchema and ISchemaLocater.getSchemaSync now take a
Readonly<SchemaKey>
instead of a SchemaKey and the SchemaContext parameter is no longer optional.
Backend
BackendHubAccess
BackendHubAccess has been marked ...
v3.7.6
Release notes
Changes
- Disable native SQLite logger category when calling 'updateToRequestedVersion' (backport #5187) [release/3.7.x] (#5494)
- Log metadata when uploading tiles (backport #5469) [release/3.7.x] (#5515)
- @bentley/imodeljs-native 3.7.0 [release/3.7.x] (#5521)
- Check that current tool still wants snap after promise is resolved. (backport #5520) [release/3.7.x] (#5524)
Full changelog: 3.7.5...3.7.6
v3.7.5
Release notes
Changes
- Add gaps between TreeNodeItem content items (#5447)
- Mobile backend access token fixes (backport #5456) [release/3.7.x] (#5459)
- Remove EC rule 102 Abstract class must have abstract base class (backport #5353) [release/3.7.x] (#5483)
- Mobile RPC queue up pending messages until reconnected in foreground (backport #5479) [release/3.7.x] (#5484)
Full changelog: 3.7.4...3.7.5
v3.7.4
v3.7.3
Release notes
Changes
- Fix selection scope field (#5391)
- IPC blocking fix (backport #5400) [release/3.7.x] (#5404)
- Fix for timing issue in core tests (backport #5419) [release/3.7.x] (#5420)
- add missing file to core-geometry barrel (backport #5412) [release/3.7.x] (#5414)
- Fix point cloud jitter and quantization issues for additive refinement pnts (backport #5324) [release/3.7.x] (#5421)
- Fix point cloud voxel size issues for additive refinement pnts (backport #5407) [release/3.7.x] (#5423)
- Prune unnecessary deps and update rush audit [release/3.7.x] (#5406)
Full changelog: 3.7.2...3.7.3
v3.7.2
Release notes
Changes
- Exit the LookAndMove tool when ESC is used to disable pointer lock. (backport #5362) [release/3.7.x] (#5363)
- fix type definition in TileStorage.ts (backport #5359) [release/3.7.x] (#5365)
- Temporarily ignore xml2js CVE until @azure/storage-blob is updated (backport #5372) [release/3.7.x] (#5381)
- Presentation: Fix
BisCore
supplemental rules for relatedbis.ExternalSource
properties (backport #5378) [release/3.7.x] (#5380)
Full changelog: 3.7.1...3.7.2
v3.7.1
v3.7.0
Release notes
For the full list of changes see the detailed release notes.
v3.6.3
Release notes
Changes
- Presentation: Add an enum value required for presentation-components 4.0 (#5289)
Full changelog: 3.6.2...3.6.3