> ## Documentation Index
> Fetch the complete documentation index at: https://docs.speckle.systems/llms.txt
> Use this file to discover all available pages before exploring further.

# Migration Guide

<Update label="2.25.9 -> 2.27.2" description="January 2026">
  * `fromMeasurementData` changed to `addMeasurement` which takes a serialized measurement as
    argument - `zoomExtents` and explode now take only visible bounds into account, not total bounds
    by default
</Update>

<Update label="2.25.8 -> 2.25.9" description="August 2025">
  * [*ObjectClicked*](/developers/viewer/viewer-api#viewerevent) and
    [*ObjectDoubleClicked*](/developers/viewer/viewer-api#viewerevent) events now have their picked
    objects filtered by a default
    [*ObjectPickConfiguration*](/developers/viewer/speckle-renderer-api#objectpickconfiguration)
</Update>

<Update label="2.25.0 -> 2.25.8" description="July 2025">
  * `GeometryData` now stores the original geometry DataChunks instead of just number arrays. This
    change was the basis of a larger update we made to facilitate larger model loading by minimizing
    memory allocation during startup and load - `ViewerEvent.Busy` has been removed and it's no longer
    emitted
</Update>

<Update label="2.23.8 -> 2.25.0" description="May 2025">
  * `get clippingVolume` from `SpeckleRenderer` now returns an `OBB` - `set clippingvolume` from
    `SpeckleRenderer` now accepts both `Box3` and `OBB` - all intersection methods from
    `Intersections` now accept both `Box3` and `OBB` as bounds argument - `expandBoxRelative` from
    `World` now accepts both a `Box3` and a `OBB` - `requestUpdate` from `SectionOutlines` extension
    now takes an optional `force` argument that forces an update
</Update>

<Update label="2.23.6 -> 2.23.8" description="February 2025">
  * `Loader`'s `resourceData` changed from `string | ArrayBuffer` to `unknown` to allow each loader
    to define it's own resource data type
</Update>

<Update label="2.21.2 -> 2.23.6" description="January 2025">
  * `SmoothOrbitControls`'s constructor changed. It no longer takes a `Scene` and `Intersections`,
    but only a `SpeckleRenderer`
</Update>

<Update label="2.21.2 -> 2.22.2" description="November 2024">
  * `Loader`'s `resourceData` changed from `string | ArrayBuffer` to `unknown` to allow each loader
    to define it's own resource data type - `SmoothOrbitControls`'s constructor changed. It no longer
    takes a `Scene` and `Intersections`, but only a `SpeckleRenderer`
</Update>

<Update label="2.21.1 -> 2.22.2" description="October 2024">
  * Entire rendering pipeline got a massive update and it now allows for free user customization as
    well as user defined passes - `pipeline` accessors added to `SpeckleRenderer`. This allows for
    user defined rendering pipelines - `pipelineOptions` accessors removed from `SpeckleRenderer` -
    `PipelineOutputType` removed. The pipeline's result now depends on the pipeline's pass
    configuration - `DynamicAOPassParams` and it's default removed - `StaticAoPassParams` and it's
    default removed and replaced by `ProgressiveAOPassOptions` - A series of pre-defined rendering
    passes as well as entire rendering pipelines have been added
</Update>

<Update label="2.20.2 -> 2.21.1" description="September 2024">
  * `Vector3` and `Box3` have been removed from the viewer's exports. They can now be imported from
    three.js
</Update>

<Update label="2.19.4 -> 2.20.2" description="August 2024">
  * All input mesh vertex colors are now treated as sRGB
</Update>

<Update label="2.19.1 -> 2.19.4" description="July 2024">
  * `NearCameraCalculation` type option added to `CameraController` option. - `UpdateFlags.RENDER`
    no longer resets pipeline. Added `UpdateFlags.RENDER_RESET` which forces a pipeline reset
</Update>

<Update label="2.18.16 -> 2.19.1" description="June 2024">
  * Added `tasOnly` as a parameter in all `intersect` variants. - The existing `firstHitOnly` option
    on `Raycaster` now stops on first intersected TAS, asa well as first intersected BAS from that TAS
    (if `tasOnly` is not set)
</Update>

<Update label="2.18.15 -> 2.18.16" description="May 2024">
  * `Vector3Like` replaces `VectorLike` in the arguments of `transformTRS` in `BatchObject` -
    `SpeckleLoader` no longer takes a `priority` argument in it's constructor - `addRenderTree` from
    `SpeckleRenderer` now takes a `RenderTree` as an argument instead of a `RenderTree` id -
    `getRenderTree` is now overloaded with a version with no arguments that never returns null -
    `intersect` and `intersectRay` arguments have been moved around and both are now overloaded
</Update>

<Update label="2.18.14 -> 2.18.15" description="April 2024">
  * Asset now has a mandatory `id` field - `getEnvironment` and `getTexture` from `Assets` now
    only accept `Asset` as argument - The concept of `Providers` has been removed entirely -
    `CameraProvider` has been replaced by `SpeckleCamera` - `CameraControllerEvent` renamed to
    `CameraEvent`
</Update>

<Update label="2.18 -> 2.18.14" description="March 2024">
  * `updateClippingPlanes` in `SpeckleRenderer` does not take an optional `Plane[]` argument anymore
  * `setOptions` from `SelectionExtension` has changed to an accessor - `displayOn` and `displayOff`
    from `SectionTool` are replaced by `visible` accessor
</Update>

<Update label="2.x -> 2.18" description="February 2024">
  The introduction of viewer API 2.0 into our stable channel. The changes to the API itself are
  extensive and there is no point for a step by step guide, as what was previously known as API 2.0
  will become the single supported viewer API moving forward.
</Update>
