Speckle 2.13 Released!

Hello @Community!

We’re excited to share with you the latest and greatest updates in our Speckle 2.13 release🎉! This release is packed with new features, improvements, and bug fixes🔨.



  • :new: Point-based family instances are now sent as proper instances! This means you can:
    • :mag_right: Retrieve the full nested structure of your family instance along with their local transforms
    • :zap: Receive instances quickly as actual blocks in Rhino, Autocad, Sketchup, Blender and more
  • Added phaseDemolished parameter in RevitConverter


  • :new: Layers are now sent as Collection objects! Features:
    • :mag_right: Explore your Rhino model in our viewer with their original layer structure
    • :art: Stores display styles and render materials on layers
  • Improved curved geometry transfer from Rhino to Revit


  • Component UI improvements and bug fixes


  • :new: Revit to SketchUp workflow enabled: With this release, we have enabled the Revit to Sketchup workflow, which allows you to convert your Revit models to Sketchup models. Features:
    • :label: Revit categories as Tags
    • :paintbrush: Revit materials to Sketchup materials
    • :camera_flash: 3D Views from Revit to Sketchup Scenes
    • :package: Create components for family types/instances
    • :straight_ruler: Revit levels received
    • :hocho: Sections created from Revit levels
    • :card_file_box: Useful Outliner organization
  • :sparkles: Diffing (Alpha): With this feature, users can highlight differences between two send operations they make. They send their model to Speckle. They make changes to the model. Once they enable diffing, it will highlight the changing parts so you see what has changed since last send. Currently limited to push pull operations.
  • Deserialized Attributes: Sketchup attributes were sent as a JSON object before. Now they are deserialized, prettier from a user pov.
  • Sketchup IFC Attribute Support: Sketchup components can be tagged as IFC elements. With this feature, you can send your components to Speckle and receive it back. It will still have the IFC attributes.
  • Instancing: Instances from Revit are received as components. This improves the performance of receiving 5x times.
  • Receiving Refactored: We have refactored our receiver (the thing that runs in the background when you receive data from Speckle). So it is faster and more robust.
  • fix: Overriding existing documents with new settings
  • fix: Switching documents didn’t preserve settings
  • fix: Aligned detached properties with C# connectors
  • fix: Origin point of components were visible in the Viewer
  • fix: User Preferences are not stored properly


  • :curly_loop: Improved support for sending and receiving curves!
    • Both Bézier and Nurbs curves will send displayValues (and therefore render in the viewer)
    • Fixed many issues with sending nurbs (all non-bézier, non-surface Nurbs should send perfectly now!)
    • Fixed issues with receiving Nurbs curves (all incomming curves should be perfect!)
    • Added support for receiving ellipses and circles (without trims)
    • see the before and after!
  • :family: Improvements to receiving Instances
    • Added support for receiving Revit instances.
    • Added option to receive Instances as either:
      • Instance Collections (previous behaviour, default) - faster, more efficient, object structure unchanged, but requires linking the collection definition (from the file outliner) to edit the geometry objects)
      • Linked Duplicates - Slower, and block structure is somewhat lossy, but easier to edit inside geometry.
    • Fixed issue with receiving commits that contained multiple copies/instances of the identical objects, They now correctly receive (as with shared data AKA linked duplicates).
  • :label: Improved naming of received objects. They now follow a "{name/type} -- {id}.XXX" format
  • :clipboard: Now populating the area prop of meshes sent to Speckle.
  • :desktop_computer: Fixed issue with UI getting into a state where stream/branch/commit items are populated, but their data is uninitialised.


  • Improved Revit to Etabs to Revit workflow for structural analysis
  • Support for stick models from Rhino mapped as BuiltElements


  • Slab/Column/Beam improvements on send and receive
    • 3D data (wall wrapping, veneer, others)
    • material overrides
    • visibility settings
    • 2D data (Floor Plan and Section, line types, fills, etc.)
  • Wall improvements - send and receive all properties


  • :construction_worker_woman:t2: Significant stability improvements: Cancelling processes, Swallowing most app crashes
  • :fast_forward: Wicked speed improvements: Selections and Conversions 50-70% faster
  • :deciduous_tree: Better UX with web viewing Navisworks object collections
  • :1234: Better UX with object data discovery for analysis/inquiry
  • :large_blue_circle: 2D/2.5D Support Lines, Polylines, Circles, Splines, Support Helices, Clothoids etc.


  • ArcGIS: brand new UI!
  • Supporting receive for IFC data and Meshes
  • Sending previously received Meshes to Speckle in the same Mesh format (instead of GIS polygons)
  • Better notifications and error reporting
  • QGIS: experimental functionality: send and receive data in the background, without freezing the interface
  • QGIS: receive CAD/BIM data even if QGIS project isn’t saved yet

Server & Web

We made a number of patch releases to the server since our 2.12.0 release. This changelog includes changes introduced since 2.12.0, including our patch releases.

3D Viewer

  • Integrated speckle instances. Leveraging hardware instancing for them is still yet to come
  • Fix : Shadowcatcher now only renders mesh objects. This fixes artifacts caused by rendering lines to the shadowcatcher texture

What’s changed since 2.12, and has already been released in patches:

  • Different geometry types now are rendered on different internal layers
  • Reduced viewer memory footprint significantly
  • Occlusion queries are now performed much faster
  • Implemented async stream loading and stream load cancelling
  • Fix : Polycurve elements geometry only created once
  • Fix : Ignoring curves with no display values
  • Fix : Ensured shadowcatcher texture size never exceeds the hardware limit
  • Fix : Ignoring meshes with no geometry data

Server & Frontend

It is now possible to configure the server to allow greater administration privileges. This is disabled by default.




We have made a large number of improvements to logging, including the logging of requests and responses from all REST API endpoints.


Happy to see the new admin override capabilities, and the Revit instances → Rhino blocks. Congrats on the release, looking forward to play with it :slight_smile:


Could you provide more details about the admin override capabilities? A little hard to tease out from the pull requests

Hey @chris.welch @vwb,

the admin override is an opt in feature, enabled by specifying an environment variable on the server.
It enables user on the speckle server, who have the admin role, to bypass certain permission checks. ie.: admin can access and delete private streams. We use these permissions according to our terms of use (see the private streams section). This enables us to comply with our legal obligations, provide better support etc…

Please keep in mind, this is an off by default opt in feature.

Let me know if you have more questions


Perfect, thanks so much for the clarification.


@gjedlicska I’ve had a chance to have a look at this, and …can you provide some more details about what endpoints I would use as an admin to make changes? Is it just a change to certain existing graphql queries, or its own set? Can I update another users details?

Hey @chris.welch

The admin override enables the bearer of an admin token to bypass access restrictions on all “endpoints” of the api.
The user related operations are exceptions, cause we infer the user that is the target of the modification from the token itself. So there is no way an admin can modify another user’s information.

This is exactly the reason, why we’re renaming / deprecating any of the confusingly named user queries to a naming scheme, that contains activeUser ie activeUserMutations/update

1 Like

Sweet, that makes sense! Cheers

Working as expected :slight_smile:


:magic_wand: :elf: .