Releases: rerun-io/rerun
Development Build
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/44319ac
Wheels can be installed with:
pip install --pre --no-index -f https://build.rerun.io/commit/44319ac/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/44319ac/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/44319ac/rerun_js
0.28.1 - Fix some telemetry settings, depth images, and logging details.
Rerun is an easy-to-use database and visualization toolbox for multimodal and temporal data.
Try it live at https://rerun.io/viewer.
- Python: pip install rerun-sdk
- Rust: cargo add rerun and cargo install rerun-cli --locked
- Online demo: https://rerun.io/viewer
- C++ FetchContent: https://github.com/rerun-io/rerun/releases/download/0.28.1/rerun_cpp_sdk.zip
🪵 Log API
- Ensure that
flushwaits 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 --unorderedfails #12282
0.28.0 - Easier use with ROS style data
Rerun is an easy-to-use database and visualization toolbox for multimodal and temporal data.
Try it live at https://rerun.io/viewer.
- Python: pip install rerun-sdk
- Rust: cargo add rerun and cargo install rerun-cli --locked
- Online demo: https://rerun.io/viewer
- C++ FetchContent: https://github.com/rerun-io/rerun/releases/download/0.28.0/rerun_cpp_sdk.zip
✨ 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!
📂 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_lengthhas moved to the newTransformAxes3Darchetype #11925CoordinateFrame::frame_idrenamed toCoordinateFrame::frame#11991- Redundant
Pose*component types removed in favor of general counterparts (e.g.,PoseTranslation3D→Translation3D) #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_idcolumn is nowrerun_segment_id entries(),datasets(),tables()now return lists of entry objects instead of DataFramesget_table()returns aTableEntryobject instead of a DataFrame—use.reader()to get the DataFrameDataframeQueryViewremoved; usefilter_segments(),filter_contents(), andreader()instead #12151register()andregister_batch()merged into singleregister()returningRegistrationHandle#12187search_fts()andsearch_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_entry→get_dataset,get_table_entry→get_table, etc. #12112 - Table writes moved from
CatalogClienttoTableEntry(append(),overwrite(),upsert()) #12114 Schematypes moved fromrerun.dataframetorerun.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_lengthinto its ownTransformAxes3Darchetype #11925 - Add
show_frameoption onTransformAxes3D#11977 - Rename
CoordinateFrame::frame_idtoCoordinateFrame::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_frametoSpatialInformation#12040 - Remove redundant
Pose*components #11905 - Add
OutputModeoption to Lenses #12107 - Load URDF with frame IDs and named transforms #12005
- RRD manifests: implement
chunk_byte_size_uncompressedsupport #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_tableand 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...
0.27.3
Rerun is an easy-to-use database and visualization toolbox for multimodal and temporal data.
Try it live at https://rerun.io/viewer.
- Python:
pip install rerun-sdk - Rust:
cargo add rerunandcargo install rerun-cli --locked - Online demo: https://rerun.io/viewer
- C++ FetchContent: https://github.com/rerun-io/rerun/releases/download/0.27.2/rerun_cpp_sdk.zip
🔎 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
/versionfrom oss server #12108
🤷 Other
- Add crate linkage delete user logging from future f7df67196c6844369f91a23ac4bbb14002ee6b05
0.27.2 - Fix compatibility with dependency
Rerun is an easy-to-use database and visualization toolbox for multimodal and temporal data.
Try it live at https://rerun.io/viewer.
- Python:
pip install rerun-sdk - Rust:
cargo add rerunandcargo install rerun-cli --locked - Online demo: https://rerun.io/viewer
- C++ FetchContent: https://github.com/rerun-io/rerun/releases/download/0.27.2/rerun_cpp_sdk.zip
- Fix non semver compliant breaking changes in
ply-rsbreaking Rust builds #11890
0.27.1 - Bug fixes and performance improvements
Rerun is an easy-to-use database and visualization toolbox for multimodal and temporal data.
Try it live at https://rerun.io/viewer.
- Python:
pip install rerun-sdk - Rust:
cargo add rerunandcargo install rerun-cli --locked - Online demo: https://rerun.io/viewer
- C++ FetchContent: https://github.com/rerun-io/rerun/releases/download/0.27.1/rerun_cpp_sdk.zip
🪳 Bug fixes
- Respect timepoint in URDF loader #11866
- Fix pinhole color fallback showing the wrong color #11861
- Fix broken
delete_entriesand 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
0.27.0 - Viewer improvements and more blueprint configuration
Rerun is an easy-to-use database and visualization toolbox for multimodal and temporal data.
Try it live at https://rerun.io/viewer.
- Python:
pip install rerun-sdk - Rust:
cargo add rerunandcargo install rerun-cli --locked - Online demo: https://rerun.io/viewer
- C++ FetchContent: https://github.com/rerun-io/rerun/releases/download/0.27.0/rerun_cpp_sdk.zip
✨ Overview & highlights
🟦 more properties configurable from blueprint
The viewer is now even more configurable via blueprints. With more options for time series, bar chart, graph views, time panel, and the 3D view. With the latter now having the option to control the 3D eye position and look target.
⌨🖱️User Interface improvements
We’ve changed the interaction of the time panel! Now the top bar is only for making selections, while the bottom panel is for moving the time cursor. Hold down shift for snap-to-grid! You can also click on events now to select them.
new-time-panel-interaction.mp4
You can now also use just a keyboard to navigate in panels with trees (blueprint / streams / recordings).
⚠️ Breaking changes
- Dropped support for python 3.9, and the minimum supported version is now 3.10.
- Official Intel (x86) macOS binaries are no longer provided (compiling from source is still possible).
- Removed the option to specify the current time cursor via Blueprint.
See the
🧳 Migration guide for more details.
🔎 Details
🪵 Log API
- Functionality to
add_time_columnvia lenses #11596
🌊 C++ API
- CMake: Download Arrow from Tarball URL Instead of Git #11558 (thanks @threeal!)
- Fix in-repo CMake build not resolving builds of rerun_c that weren't made with pixi #11751
🐍 Python API
- Expose view container visibility in python blueprint api #11602
- Drop Python 3.9 Support #11426
- Try to avoid timestamp footguns #11601
- py-sdk: add register_prefix SDK call #11600
- [Python] Improve errors in mesh3d_ext #11662 (thanks @iwanders!)
- Return optional DebugInfo with
memory_usedas part of CreateIndexResponse #11691 - Add a new
target_partition_num_rowsAPI parameter to the CreateIndex API #11686 - Add Ability to Launch OSS Server From Python #11689
- Our IndexValuesLike type is overly strict. Allow np.datetime64 inputs #11721
- Add play state, loop mode and loop selection to blueprint #11664
- Index management APIs: Python bindings, types cleanup, and index statistics #11729
- Remove time from blueprint #11823
🦀 Rust API
- Make
Debugfor Utf8 datatype derived component types readable #11780
🪳 Bug fixes
- Fix handling of components that only vary by descriptors #11593
- Fix selection panel infinite redraw #11623
- Allow editing times in the time panel #11774
- Allow moving text cursor while holding down options/alt #11773
- Fix 3D eye speed-up modifier not working with scroll-to-zoom #11814
🌁 Viewer improvements
- Background of graph view is now blueprint configurable #11522
- Enable multiple instance poses for
Points3D#11572 - Disable toast when copying component path #11495
- Add cyclic colormap #11498
- Allow eye-camera tracking arbitrary entities in 3D view #11554 (thanks @Gentlegg!)
- Introduce experimental
CoordinateFramearchetype #11674 - Add experimental
child_frame&parent_frametoTransform3D#11730 - Expose
TimeSeriestime range & zoom in the Blueprint API #11621 - Improve data density visualization by sampling dense chunks #11766
- 3D eye position and other properties in blueprint #11788
- Support arbitrary transform frame based hierarchies, fully independent of entity hierarchy #11790
- Removing time selection with context menu #11845
🗄️ OSS server
- Add support for layers in OSS server #11532
- Add support for properties in OSS server #11630
- Simplify
CreateIndexRequest#11636 - Improve column projection specification and implement it for OSS server #11687
- Index management APIs #11693
- Add support for blueprint dataset #11758
- Add support for renaming entries #11777
🚀 Performance improvements
- Perform transform tree walk only once per frame, rather than for every View #11470
- Significantly improve transform ingestion speed #11655
- Update mimalloc allocator from v2 to v3 #11703
- Small performance improvement for many entities #11720 (thanks @joelreymont!)
🧑🏫 Examples
- Create and write tables in the Rerun server #11694
📚 Docs
- Clarify that 0B memory limit for grpc server only makes sense if client/server are connected from the start #11599
- Add documentation to dataframe query workflow and fix api rendering for bindings #11650
- Expose all the python apis I could find for web docs #11709
- Reorganize Docs Overview / Getting Started #11781
🖼 UI improvements
- Fix blueprint / streams tree navigation ignoring focus #11574
- Keyboard navigation in tree UIs (left panel, streams panel, etc.) #11595
- Improve formatting of durations and timestamps #11659
- When scrubbing time, intelligently round to a nice value #11658
- Hold down shift for snap to grid when moving time cursor #11757
- Time panel: pick sub-second precision based on zoom level #11761
- Change how to select loop region in the time panel #11675
- Click events in the streams view [#11806](https://github.com/rerun-io/rerun/pu...
0.27.0-alpha.7
✨ Highlights
- Many new view properties settable from blueprints
- Enable multiple instance poses for
Points3D - Allow eye-tracking camera to follow arbitrary entity
- Keyboard navigation in all tree UIs
- Improved OSS server with support for layers, properties and column projections
- OSS server accessible from Python
⚠️ Breaking changes
- Dropped support for Python 3.9
🧳 Migration guide: https://github.com/rerun-io/rerun/blob/0.27.0-alpha.7/docs/content/reference/migration/migration-0-27.md
🪵 Log API
- Functionality to
add_time_columnvia lenses #11596
🌊 C++ API
🐍 Python API
- Expose view container visibility in python blueprint api #11602
- Drop Python 3.9 Support #11426
- Try to avoid timestamp footguns #11601
- py-sdk: add register_prefix SDK call #11600
- Improve errors in mesh3d_ext #11662 (thanks @iwanders!)
- Return optional DebugInfo with
memory_usedas part of CreateIndexResponse #11691 - Add a new
target_partition_num_rowsAPI parameter to the CreateIndex API #11686 - Add Ability to Launch OSS Server From Python #11689
- Our IndexValuesLike type is overly strict. Allow np.datetime64 inputs #11721
- Add play state, loop mode and loop selection to blueprint #11664
🪳 Bug fixes
- Fix handling of components that only vary by descriptors #11593
- Fix selection panel infinite redraw #11623
🌁 Viewer improvements
- Background of graph view is now blueprint configurable #11522
- Enable multiple instance poses for
Points3D#11572 - Disable toast when copying component path #11495
- Add cyclic colormap #11498
- Allow eye-camera tracking arbitrary entities in 3D view #11554 (thanks @Gentlegg!)
- Introduce experimental
CoordinateFramearchetype #11674
🗄️ OSS server
- Add support for layers in OSS server #11532
- Add support for properties in OSS server #11630
- Simplify
CreateIndexRequest#11636 - Improve column projection specification and implement it for OSS server #11687
🚀 Performance improvements
- Perform transform tree walk only once per frame, rather than for every View #11470
- Significantly improve transform ingestion speed #11655
- Update mimalloc allocator from v2 to v3 #11703
📚 Docs
- Clarify that 0B memory limit for grpc server only makes sense if client/server are connected from the start #11599
- Add documentation to dataframe query workflow and fix api rendering for bindings #11650
🖼 UI improvements
- Fix blueprint / streams tree navigation ignoring focus #11574
- Keyboard navigation in tree UIs (left panel, streams panel, etc.) #11595
- Improve formatting of durations and timestamps #11659
- When scrubbing time, intelligently round to a nice value #11658
🤷 Other
- Add client object table writing functions #11657
0.26.2
Rerun is an easy-to-use database and visualization toolbox for multimodal and temporal data.
Try it live at https://rerun.io/viewer.
- Python:
pip install rerun-sdk - Rust:
cargo add rerunandcargo install rerun-cli --locked - Online demo: https://rerun.io/viewer
- C++ FetchContent: https://github.com/rerun-io/rerun/releases/download/0.26.2/rerun_cpp_sdk.zip
- Add missing
line_radiiandfill_modeparams toCapsules3Din Python SDK #11660 (thanks @yunho-c!) - Fix pressing the play button sometimes going to follow mode #11609
- Fix hiding all tabs in a tab-view breaking undo #11619
- Fix color picker on default & override disappearing when trying to edit #11651
- Fix
ViewerEvent::TimeUpdateviewer callback not emitted during playback #11639
0.26.1
Rerun is an easy-to-use database and visualization toolbox for multimodal and temporal data.
Try it live at https://rerun.io/viewer.
- Python:
pip install rerun-sdk - Rust:
cargo add rerunandcargo install rerun-cli --locked - Online demo: https://rerun.io/viewer
- C++ FetchContent: https://github.com/rerun-io/rerun/releases/download/0.26.1/rerun_cpp_sdk.zip