---
title: Changelog
slug: viewer-3d/changelog
docTags: 
createdAt: 2026-09-28T11:17:09.645Z
---

Periodically, we update the 3D Viewer SDK with new features, improvements, and bug fixes. This page lists all the changes made to the SDK.

## 2026-09-10

- **Updated** `three.js` to r184.
- **Added** `addImage`, `removeImage` and `updateImage` methods to the API.
- **Added** `id`, `opacity`, `interactable`, `clippable` and `data` properties to the `Image` type.
- **Added** highlighting of images while holding Shift.
- **Improved** memory usage and loading performance for BIM models.
- **Improved** measurement performance on models with many repeated objects.
- **Improved** rendering of translucent and overlapping images.
- **Improved** image sharpness at oblique viewing angles.
- **Improved** navigation to orbit and zoom towards visible clipping planes.
- **Fixed** images being misplaced after camera navigation.
- **Fixed** render effects being sized incorrectly at non-default pixel ratios.
- **Fixed** clipping planes and images staying highlighted after focus or tab changes.
- **Fixed** laser measurement hitting wrong surface.
- **Fixed** crash when rendering BIM models together with other model types.

## 2026-07-23

- **Fixed** grid snapping to hidden axes and grids.

## 2026-06-19

- **Improved** performance when applying object colors and visibility.

## 2026-05-29

- **Fixed** measurement surface normal on curved grid axes.

## 2026-05-18

- **Fixed** object id type for models loaded from query. Ensure object id is always a string.

## 2026-04-22

- **Updated** `three.js` to r182.
- **Improved** rendering performance.
- **Improved** SSAO quality with depth-aware bilateral blur and interleaved gradient noise.
- **Improved** visual responsiveness in complex scenes by not submitting new frames while the GPU is still busy.
- **Fixed** displaced measurement tool cursor.

## 2026-02-04

- **Updated** `three.js` to r180.
- **Improved** lighting calculations to enhance visual quality and make it easier to distinguish surfaces.
- **Improved** the lighting setup by adjusting light direction, intensity, and colour.
- **Added** `setRenderEffects` and `getRenderEffects` methods to the API.
- **Added** support for ambient lighting for more realistic scene illumination.
- **Added** `custom` option to RenderSettings type.
- **Improved** the hidden-line and sketch effect.
- **Improved** rendering performance for transparent geometry.
- **Fixed** an issue causing models to be invisible on load.
- **Fixed** viewer turning black on some mobile devices with XClipse GPUs.
- **Deprecated** `shading` parameter in `setRenderSettings`, use `setRenderEffects` and `getRenderEffects` instead.

## 2025-09-02

- **Updated** `three.js` to r171.
- **Improved** bounding box and bounding sphere calculations.
- **Improved** model loading performance.
- **Fixed** incremental rendering issues for newly loaded models.
- **Improved** visual responsiveness during scene transitions and rendering.
- **Improved** rendering performance for newly loaded models.
- **Fixed** unintentional skipping of geometry during incremental rendering.

## 2024-12-11

- **Updated** `three.js` to r168.
- **Fixed** occasional flickering during incremental rendering.
- **Added** `transform` option to `loadModel` and `loadModelsFromToken` methods.
- **Fixed** incorrect lighting of shapes when using `addShape` method.
- **Fixed** `initialState` option of `loadModel` and `loadModelsFromToken` methods.
- **Fixed** measurement tools not working on point cloud models.

## 2024-09-24

- **Updated** `three.js` to r165.
- **Removed** support for WebGL1.
- **Fixed** unnecessary redrawing when moving the measure cursor.
- **Added** `calculateSectionPlanesForBoundingBox` method.
- **Improved** initial viewpoint on large projects and projects containing misplaced geometry.
- **Fixed** `activeClippingPlaneBorderColor` viewer load option not being applied.
- **Fixed** circle shape only having one visible side in `addShape` method.
- **Fixed** measure labels not removed when `dispose` method invoked.
- **Added** `clippingplanes` and `measure` events to JavaScript API.
- **Fixed** `modelId` parameter of `loadModelsFromToken` method being ignored.
- **Fixed** incorrect size used for box and circle shapes in `addShape` method.
- **Fixed** flickering during incremental rendering.
- **Fixed** `onClick` callback provided to `addShape` method not being invoked.

## 2024-04-03

- **Updated** `three.js` to r152.
- **Added** `activeClippingPlaneBorderColor` setting to change the color of the border of the active clipping plane.
- **Added** `setMeasureSettings` and `getMeasureSettings` methods to manage the settings for measurements.
- **Added** `shading` paramater to `getRenderSettings` and `setRenderSettings` methods to set the shading type used.
- **Fixed** an issue where point cloud models were not loading correctly.
- **Deprecated** `measureOptions` method, use `setMeasureSettings` and `getMeasureSettings` instead.

## 2023-04-27

- **Updated** `three.js` to r144.
- **Added** `setAppearanceSettings` method to manage the appearance settings.
- **Added** grid selection by clicking on curve or axis extrusion.
- **Added** highlighting of selected grids.
- **Added** support for clipping planes as a navigation target.
- **Added** `modelId` to the `getProducts` method.
- **Added** `addShape`, `removeShape`, and `clearShapes` methods.
- **Added** `getProducts` method.
- **Added** `showClippingPlaneWidget` and `hideClippingPlaneWidget` methods.
- **Added** `initialState` setting to `loadModel`.
- **Added** `globalId` property to grids.
- **Added** `depthBuffer` setting to `RenderSettings`.
- **Added** `setCameraSettings` and `getCameraSettings` methods.
- **Added** `modelId` property to grids.
- **Improved** grid loading performance.
- **Changed** rotation to be around point beneath cursor.
- **Changed** axis extrusions of hidden grids to be hidden.
- **Changed** cursor to be hidden on drag for measure tools.
- **Changed** measure tools to only trigger on left click.
- **Fixed** an issue where contour sometimes does not work in orthographic mode.
- **Changed** initial viewpoint on large projects and projects containing misplaced geometry.
- **Changed** when loading models to ignore empty grid axes.
- **Changed** default view range from 2000 to 5000.
- **Fixed** an issue where countour sometimes displays a shadow artifact in orthographic mode.
- **Fixed** an issue where the clipping plane widgeth was not rotating in orthographic mode.
- **Fixed** a performance issue on projects with many hidden grids.
- **Fixed** an issue where the viewer hangs on load if the grid is invalid.
- **Fixed** an issue where the translucent state was not applied to selected objects.
- **Fixed** an issue where the laser measure tool was ignoring extruded grid axes.
- **Fixed** an issue where the laser measure tool's perpendicular raycast sometimes failed.
- **Fixed** an issue where geometry would dissapear after taking a 3D snapshot.
- **Fixed** an issue where grids and axes were not clipped by clipping planes in a 3D snapshot.
- **Fixed** a precision issue on large projects.
- **Fixed** an issue where hidden grids would reappear when selecting an object.
- **Fixed** an issue where hidden objects would reappear when opening the settings menu.
- **Fixed** an issue where the camera would zoom through planes.
- **Fixed** an issue where objects were not visible when double clicked.
- **Fixed** an issue where measurement labels were not visible in snapshots.
- **Fixed** an issue where loading a grid would crash the viewer.
- **Fixed** an issue where contours were not shown.
- **Fixed** an issue when mouse buttons `3` and `4` were clicked, an exception would occur.
- **Fixed** an issue where a clipping plane removed using Delete key was still returned by `getClippingPlanes`.

## 2022-11-29

- **Added** `getGrids` method.
- **Added** `getGridAxisState` and `setGridAxisState` methods.
- **Added** `axis` field to `ClippingPlaneParams` to assign a grid axis to a clipping plane.
- **Changed** clipping planes to now cut away grids.
- **Changed** when opening models without geometry, the initial viewpoint is not set.
- **Deprecated** `screenshot`, use `captureScreenshot` instead.
- **Deprecated** `each`, use `getObjects` instead.
- **Deprecated** `eachSelected`, use `getSelected` instead.
- **Deprecated** `translucent`, use `makeTranslucent` instead.
- **Deprecated** `translucentAll`, use `makeAllTranslucent` instead.
- **Deprecated** `opaque`, use `makeOpaque` instead.
- **Deprecated** `opaqueAll`, use `makeAllOpaque` instead.
- **Deprecated** `loadUrl`, use `loadModelsFromToken` instead.
- **Deprecated** `transformModel`, use `setTransform` instead.
- **Deprecated** `color`, use `getObjectColors` and `setObjectColors` instead.
- **Deprecated** `resetColors`, use `resetObjectColors` instead.
- **Deprecated** `clippingPlanes`, use `getClippingPlanes` and `setClippingPlanes` instead.

## 2022-10-07

- **Updated** `three.js` to r141

## 2022-09-07

- **Updated** `three.js` to r140
- **Added** `viewer.clippingplanes` event.

## 2022-06-30

- **Updated** `three.js` to r139
- **Added** `viewer.clippingplanes` event.
- **Improved** appearance of measurement lines.
- **Improved** appearance of clipping plane intersection curves.
- **Fixed** an issue where grid axis extrusions would have bad geometry.
- **Fixed** an issue with Z-fighting when drawing clipping planes.
- **Fixed** an issue where hidden line shader was not applied to transparent objects.
- **Fixed** an issue where gesture animations were not updated.

## 2022-04-29

- **Updated** `three.js` to r138
- **Removed** WebGL2 support in Safari due to large performance regression.
- **Changed** measure labels to be hidden behind the camera when using DOM text rendering.
- **Fixed** an issue where point clouds were not properly unloaded.
- **Fixed** an issue where labels were missing in screenshots when using DOM text rendering.
- **Fixed** an issue with jQuery plug-in depending on `$` existing in the global context.
- **Fixed** an issue where images added by the `images` method were not displayed.
- **Fixed** an issue where the `boundingBox` method returned an empty box instead of the scene bounding box when passing `null` as an argument.
- **Fixed** an issue where the `viewer.click` event was missing `clientX`/`clientY` fields on Safari 12 (iOS 12 or earlier).
- **Fixed** an issue causing the canvas to always be blank in Safari 12 (iOS 12 or earlier).

## 2022-03-30

- **Updated** `three.js` to r137
- **Added** `pixelRatio` to render settings.
- **Added** support for DOM text rendering.
- **Improved** measurements.
- **Fixed** an issue where the pixel ratio was reset on window resize.
- **Fixed** an issue where the `viewer.click` event was triggered multiple times on touch events when embedded in an iOS web view.
- **Fixed** clipping plane dragging on touch devices.
- **Fixed** updating clipping plane intersection curves.
