Skip to content

Releases: rerun-io/rerun

Development Build

20 Feb 05:27

Choose a tag to compare

Development Build Pre-release
Pre-release

This is a prerelease. It is not intended for production use.
Please report any issues you find.

Example Hosted App

https://rerun.io/viewer/commit/031aaf3

Wheels can be installed with:

pip install --pre --no-index -f https://build.rerun.io/commit/031aaf3/wheels --upgrade rerun-sdk

or

pip install --pre --no-index -f https://github.com/rerun-io/rerun/releases/download/prerelease --upgrade rerun-sdk

CMake fetch-content for C++ SDK

include(FetchContent)
FetchContent_Declare(rerun_sdk URL https://build.rerun.io/commit/031aaf3/rerun_cpp_sdk.zip)
FetchContent_MakeAvailable(rerun_sdk)

or

include(FetchContent)
FetchContent_Declare(rerun_sdk URL https://github.com/rerun-io/rerun/releases/download/prerelease/rerun_cpp_sdk.zip)
FetchContent_MakeAvailable(rerun_sdk)

Web Viewer NPM package

Can be installed with:

npm install https://build.rerun.io/commit/031aaf3/rerun_js

0.29.2 - Bug fixes and documentation update

13 Feb 09:58

Choose a tag to compare

✨ Overview & highlights

This patch release contains bug fixes and adds a documentation guide with an example for converting existing data to Rerun.

🔎 Details

🪵 Log API

  • Fix performance regression with --server-memory-limit 0 cefbdf6

🐍 Python API

  • notebook: Re-export viewer event types 51d949e

🪳 Bug fixes

  • Fix table config button symbol for light-mode 57b0121
  • Fix drag-and-drop of .mcap files on web #12631
  • Ensure we report file loading errors on web 7fd794e

🌁 Viewer improvements

  • Show error when rerun_js viewer panics or fails to load 04e7ae8

📚 Docs

  • Add snippet demonstrating conversion of custom MCAP protobuf file to RRD 53fbeeb
  • Add documentation for converting custom data to RRD using log/send_column 815d45c

🖼 UI improvements

  • Fix moving text cursor with cmd-arrows 13f7124
  • Improve error messages regarding arrow datatypes 48f4637

0.29.1 - Improved labels, bug fixes & performance improvements

06 Feb 17:49

Choose a tag to compare

✨ Overview & highlights

This is mainly a patch release with some fixes and improvements.

We also included a change that makes labels translucent. This makes them less obtrusive and improves visibility of overlapping labels, as shown in the image segmentation example below.
Example of translucent labels in Rerun 0.29.1

🔎 Details

🐍 Python API

  • Ensure that import rerun_sdk.rerun can be used fd28cd3
  • Allow access to redap token from Python SDK 51506ca

🪳 Bug fixes

  • Fix viewer error list jumping around 05ae689
  • Fix potential video deadlock eefacdf

🌁 Viewer improvements

  • Make labels in spatial view translucent ec62ad9

🚀 Performance improvements

  • Do faster lineage check in release builds 0d546c0

0.29.0 - URDF improvements, improved ROS 2 docs, and memory panel

30 Jan 12:32

Choose a tag to compare

Rerun is an easy-to-use database and visualization toolbox for multimodal and temporal data.
Try it live at https://rerun.io/viewer.


🧳 Migration guide: https://rerun.io/docs/reference/migration/migration-0-29

✨ Overview & highlights

URDF loader improvements

In the previous 0.28 release, we overhauled Rerun's built-in URDF loader to work with TF-style transforms with parent and child frames.
Now, taking advantage of these entity-path-independent transforms, we simplified the hierarchy in which URDF assets are stored.
Collision and visual meshes are now below separate entity path roots, making it easy to toggle one or the other.
Additionally, the paths are now more compact to make it easier to scroll through them.

urdf_entity_path_hierarchy.mp4

UrdfTree utility in Python

We added a UrdfTree Python utility that can be used to simplify operations with URDF models, e.g.:

  • accessing links and joints
  • computing transforms from joint states
  • retrieving geometry entity paths for links

We also updated our animated_urdf.py demo to use this utility, showing for example how you can dynamically change the color of a gripper link based on its angle.

urdf_dynamic_mesh_example.mp4

Experimental screenshots from Python

There's now an experimental screenshot API which allows to take screenshots of the Viewer or individual views:

# Connect to a local viewer.
viewer = ViewerClient()
# Screenshot the entire viewer.
viewer.save_screenshot("entire_viewer.jpg")
# Screenshot only the view we created earlier.
viewer.save_screenshot("my_view.png", view_id=view.id)

For a full snippet check here.

⚠️ There's still a lot of rough edges and this API may change in the future.

Improved target frame selection UI

The target frame selection UI now shows matching suggestions, making it easier to select a frame name from the transforms in your data.

target_frame_selection_ui.mp4

Updated ROS 2 example & documentation

We refreshed the documentation showing examples of how some ROS concepts and messages can be mapped to Rerun, together with an updated Python node example. The documentation page can be found here.

Rerun viewer showing data streamed from the example ROS node

Improved memory panel

You can now get some insight on which parts of your recording use how much memory in the viewer using the improved memory panel:

image

⚠️ Breaking changes

  • Python: New API for visualizer overrides - VisualizerOverrides removed, now pass visualizer objects directly (e.g., rr.SeriesLines())
  • Python: Entry.update() deprecated in favor of Entry.set_name()
  • Python: CatalogClient and Server constructor parameters renamed (addrurl/host)
  • Python: Removed deprecated rerun.dataframe module (use rerun.server.Server and rerun.catalog instead)
  • Python: Removed deprecated rerun.catalog APIs from 0.28
  • Python: Internal submodules moved to underscore-prefixed names (e.g., rr.color_conversionrr._color_conversion)
  • CLI: rerun server --addr renamed to rerun server --host
  • Blueprint: Component overrides from .rbl files created in previous versions cannot be loaded in 0.29
  • Data Platform: Datasets need re-registration to populate name and start_time in segment table

🧳 Check the migration guide for details: https://rerun.io/docs/reference/migration/migration-0-29

🔎 Details

🪵 Log API

  • Fix dropping of entities when using rerun rrd filter #12584
  • Apply backpressure in gRPC proxy server cac538e
  • Enforce Selector usage in re_sdk::lenses 521c796

🐍 Python API

  • Allow tables to be created without providing a URL #12132
  • Remove deprecated dataframe API (rerun.dataframe) #12320
  • Remove deprecated APIs in rerun.catalog #12321
  • Deprecate Entry.update in favor of Entry.set_name #12370
  • Fix missing child_frame/parent_frame arguments from pinhole constructor #12360
  • Use visualizer objects in blueprint override API #12345
  • Rename address to url or host depending on context #12402
  • Check for unset attr from extension class init #12376
  • Add time axis in snippet in time series view snippet #12506
  • Fix RecordingStream so it has a unique recording id when none is provided eb14e16
  • Do not assume top-level bindings in RecordingStream.__del__ 201e7c3
  • Fix rare deadlock in Python send/log API 7f72b23
  • Catch keyboard interrupt in rerun-sdk CLI and return exit codes #12496
  • Make rr.experimental.ViewerClient.send_table more flexible ba733ad

🦀 Rust API

  • Allow tables to be created without providing a URL #12132
  • Rust SDK: blueprint support #12307 (thanks @sectore!)
  • Update MSRV to 1.90 #12337
  • Make RecordingStreamBuilder::with_blueprint() apply to everything, not just spawn() #12347 (thanks @kpreid!)
  • Rust SDK: Change default server memory limit 5cb7213
  • Update ply-rs-bw to 3.0.0 (corrected) #12593 (thanks @bourumir-wyngs!)

🪳 Bug fixes

  • Fix bad error reporting when registering a (faulty) RRD URI built from a relative path #12309
  • Only do furthest_from GC when we can download chunks again #12363
  • URDF loader: use InstancePoses3D for geometry scale #12371
  • Fix incorrect handling for cameras and depth images for 3D views that use target frames other than the scene root #12361
  • Fix OSS server locking up when asked for many chunks at once #12384
  • Fix GC sometimes not collecting anything #12398
  • URDF: Bundle pose + mesh scale in single InstancePoses3D #12385 (thanks @yujeong1jeong!)
  • Don't show error for implicit transform axes if we're already showing named transforms #12419
  • Fix opening link with only time selection in fragment #12428
  • Fix decoding errors for MCAP files with gaps in protobufs #12436
  • Fix time point sharing for duration timelines #12466
  • Fix transforms & videos breaking when receiving new data in the background #12452
  • Fix ignoring nested oneof fields in protobuf MCAP messages #12462
  • Fix early disconnect with --newest-first [#12484](https://github.com/rerun-io/rerun/pull/...
Read more

0.28.2 - Fix RRD compaction, plot panning, and Collada mesh loader

09 Jan 12:45

Choose a tag to compare

Rerun is an easy-to-use database and visualization toolbox for multimodal and temporal data.
Try it live at https://rerun.io/viewer.


✨ Overview & highlights

Fixes to .rrd Chunk handling.

We revised our Chunk slicing logic to prevent .rrd files ballooning in sizes. This also fixes the problem of broken .rrd files that contain tensors.

Collada (.dae) mesh support.

This patch adds native support for Collada (.dae) meshes, a common format used with URDF files. You can now load URDFs that reference .dae assets without manual mesh conversion!

screenshot of a loaded mesh

🔎 Details

🐍 Python API

  • Improve the docstrings related to serve_gpc APIs #12314
  • Add Python support for UrdfTree #12310

🪳 Bug fixes

  • Don't force absolute time views after panning #12297
  • Introduce deep Chunk slicing #12312

🌁 Viewer improvements

  • Collada (.dae) mesh loader #10288
  • Add option to hide all notification popups/toasts #12354

📚 Docs

0.28.1 - Fix some telemetry settings, depth images, and logging details.

19 Dec 23:04

Choose a tag to compare

Rerun is an easy-to-use database and visualization toolbox for multimodal and temporal data.
Try it live at https://rerun.io/viewer.


🪵 Log API

  • Ensure that flush waits for all data loaders to finish #12281

🪳 Bug fixes

  • Fix video errors having black rectangle around them #12284
  • Fix RVL depth decoding for non-quantized images #12289

🌁 Viewer improvements

  • Fix image planes not working correctly in some named-transform frame scenarios #12276
  • Fix auto-size for 2d views with RVL encoded depth image not working #12288
  • Restore depth image visualizers to 2D view kind (fix heuristic) #12290
  • Add dataloader for encoded depth image (to allow log_from_file & dragdrop) #12287

🤷‍ Other

  • Improved error message when rrd compare --unordered fails #12282

0.28.0 - Easier use with ROS style data

18 Dec 21:47

Choose a tag to compare

Rerun is an easy-to-use database and visualization toolbox for multimodal and temporal data.
Try it live at https://rerun.io/viewer.


🧳 Migration guide

✨ Overview & highlights

🦾 Transform system overhaul

This release brings significant improvements to how transforms are handled, especially from ROS or MCAP-based systems. You can now decouple spatial relationships from entity paths by using CoordinateFrame to associate entities with named frames, and Transform3D with child_frame/parent_frame parameters to define relationships between frames—similar to ROS tf2. Pinhole cameras also support this system. Additionally, axis visualization has moved to its own TransformAxes3D archetype.

Much more can be found at our revamped docs page here.

🤖 Improved URDF and MCAP Transform support

Parent and child frame components are now available in the Transform3D archetype, meaning you can send transforms to a single entity instead of using the entity path to inform the structure (note, for URDFs this is required). Additionally, ROS2’s tf2_msgs/TFMessage and PoseStamped messages are automatically parsed as Transform3D and InstancePoses3D , respectively, from MCAP files.

We also added a new documentation page for URDF here.

robots.with.transforms.mp4

📹 AV1 video codec support for streaming

VideoStream now supports the AV1 codec alongside existing formats.

📚 Catalog API refinements (Python)

The Python catalog API has been substantially reworked: "partition" terminology is now "segment," table operations have moved to TableEntry objects, and the query interface has been simplified with methods like filter_segments(), filter_contents(), and reader().

⌚ Viewer usability improvements

New keyboard shortcuts let you switch between recordings (cmd + option + ↑/↓) and navigate the timeline (←/→ to move by 0.1s. Add shift for 1s. home/end to jump to beginning or end).

timeline-hotkeys.mp4

Forward/back navigation was previously exclusive to the web viewer and is now available on native viewers as well!

image

📂 Added a LeRobot v3 dataloader support

We previously supported LeRobot v2 and updated our dataloader now to work with the latest version as well!

⚠️ Breaking changes

🧳 Migration guide: https://rerun.io/docs/reference/migration/migration-0-28

Transactional transform behavior (important!):
Changes to Transform3D, InstancePose3D, or Pinhole transform properties are now treated transactionally. Updating any component resets all other transform components—the viewer no longer looks back in time for previously logged values. If you relied on partial updates (e.g., logging only rotation while keeping a previous translation), you must now re-log all components together. If you always logged the same components on every call or used the standard constructors, no changes are needed. #11911

rr.log("simple", rr.Transform3D(translation=[1.0, 2.0, 3.0]))
# In 0.27: This clears the translation—it will NOT inherit the previous value
rr.log("simple", rr.Transform3D.from_fields(scale=2))

Transform3D archetype changes:

  • Transform3D::axis_length has moved to the new TransformAxes3D archetype #11925
  • CoordinateFrame::frame_id renamed to CoordinateFrame::frame #11991
  • Redundant Pose* component types removed in favor of general counterparts (e.g., PoseTranslation3DTranslation3D) #11905

URDF loader changes:
Transform updates for URDF models now require parent_frame and child_frame fields to be set (matching URDF joint specifications), and must include both rotation and translation. This aligns with ROS tf2 conventions and allows sending all transform updates on a single entity. #12005

Deprecated API removal:
Items marked deprecated before 0.27 have been removed, including old Timeline, TimeColumn, Asset3D, AssetVideo, Image, and Pinhole methods. #12204

MCAP timeline naming:
MCAP timelines renamed from log_time/publish_time to message_log_time/message_publish_time to avoid conflicts with SDK timestamps. #12145

Python Catalog API (breaking changes):

  • The rerun_partition_id column is now rerun_segment_id
  • entries(), datasets(), tables() now return lists of entry objects instead of DataFrames
  • get_table() returns a TableEntry object instead of a DataFrame—use .reader() to get the DataFrame
  • DataframeQueryView removed; use filter_segments(), filter_contents(), and reader() instead #12151
  • register() and register_batch() merged into single register() returning RegistrationHandle #12187
  • search_fts() and search_vector() now return DataFrames directly (no .df() needed) #12198

Python Catalog API (deprecated, still work):

  • "Partition" renamed to "segment" throughout (e.g., partition_table()segment_table()) #12059
  • Method renames: get_dataset_entryget_dataset, get_table_entryget_table, etc. #12112
  • Table writes moved from CatalogClient to TableEntry (append(), overwrite(), upsert()) #12114
  • Schema types moved from rerun.dataframe to rerun.catalog #12135
  • Search index methods renamed: create_fts_index()create_fts_search_index(), etc. #12198

🔎 Details

🪵 Log API

  • Transform3D no longer sets all its components to empty array by default #11911
  • Move Transform3D::axis_length into its own TransformAxes3D archetype #11925
  • Add show_frame option on TransformAxes3D #11977
  • Rename CoordinateFrame::frame_id to CoordinateFrame::frame #11991
  • RRD footers 1: framing #12044
  • RRD footers 2: RRD manifests #12047
  • RRD footers 3: encoding/decoding manifests #12048
  • Add option to specify target_frame to SpatialInformation #12040
  • Remove redundant Pose* components #11905
  • Add OutputMode option to Lenses #12107
  • Load URDF with frame IDs and named transforms #12005
  • RRD manifests: implement chunk_byte_size_uncompressed support #12194
  • Disable merging compaction for video samples #12270

🌊 C++ API

  • Make component type registration thread-safe in C++ SDK #11907
  • Don't install signal handlers into rerun_c outside of DEBUG mode #11956

🐍 Python API

  • Fix dataframe queries failing on empty datasets #11846
  • Add lint to check if rust classes have str, fix or exclude all existing #11928
  • Partition-to-segment rename (wave 1): redap layer #12017
  • Partition-to-segment rename (wave 3): Python SDK #12059
  • Rework notebook auth to use device code flow #12128
  • Catalog API update 1: listing entries #12103
  • Catalog API update 2: getting and creating entries #12112
  • Catalog API update 3: editing tables #12114
  • Catalog API update 4: schema #12135
  • Catalog API update 5: dataset query #12151
  • Catalog API update 6: register APIs #12187
  • Catalog API update 7: segment_table and blueprint APIs #12191
  • Catalog API update 8: search indexes #12198
  • Remove items marked as deprecated before 0.27 #12204
  • [python] Automatically disconnected recordings when they go ful...
Read more

0.27.3

08 Dec 19:57

Choose a tag to compare

Rerun is an easy-to-use database and visualization toolbox for multimodal and temporal data.
Try it live at https://rerun.io/viewer.


🔎 Details

🌊 C++ API

  • Make component type registration thread-safe in C++ SDK #11907
  • Don't install signal handlers into rerun_c outside of DEBUG mode #11956

🐍 Python API

  • Rework notebook auth to use device code flow #12128

🪳 Bug fixes

  • Fix the visible time range for the time series view #11938
  • Fix opening non-recording URLs on startup #11981

🗄️ OSS server

  • Expose /version from oss server #12108

🤷‍ Other

0.27.2 - Fix compatibility with dependency

14 Nov 15:32

Choose a tag to compare

Rerun is an easy-to-use database and visualization toolbox for multimodal and temporal data.
Try it live at https://rerun.io/viewer.


  • Fix non semver compliant breaking changes in ply-rs breaking Rust builds #11890

0.27.1 - Bug fixes and performance improvements

13 Nov 15:59

Choose a tag to compare

Rerun is an easy-to-use database and visualization toolbox for multimodal and temporal data.
Try it live at https://rerun.io/viewer.


🪳 Bug fixes

  • Respect timepoint in URDF loader #11866
  • Fix pinhole color fallback showing the wrong color #11861
  • Fix broken delete_entries and entries table not updated #11872
  • Don't smooth velocity after WASD input #11858
  • URDF loader: Use global material if inline material is absent #11869

🚀 Performance improvements

  • When closing recordings (and blueprints), drop them on separate threads for UI responsiveness #11834 (thanks @kpreid!)
  • Remove frame lag when creating loop region #11862
  • Reverted #11766 because of performance issues with the time panel.