NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #4348 most downloaded on PyPI
3D visualization + Python
Last release 19 days ago
15 Sep 2026
Ships fairly regularly
a new release about every 5 weeks
Nearly every release is documented
notes for 60 of the last 60 stable releases
3 versions withdrawn
withdrawn after publishing
3 years old
110 releases · first in 2023
One column per quarter.
docs: fix two references left behind by refactors by @rakhimovv in #764
Full Changelog: v1.1.0...v1.1.1
Panel rewrite for improved resizing and docking.
gui.add_panel() for creating new float panels.gui.main_panel for placement on the default panel.client.local_storage for reading/writing to browser storage.GaussianSplatHandle.set_gaussians() for replacing all splat attributes.line_width has been renamed to thickness for line and spline objects, now defined in world-space units by default.followCamera for infinite grids by @brentyi in #726np.cross() by @brentyi in #732Full Changelog: v1.0.30...v1.1.0
Fix minor edge cases: orbit/transform gizmo, connect/disconnect, resource leaks, ... by @brentyi in #721
Full Changelog: v1.0.29...v1.0.30
Fix prop update regression for line segments by @brentyi in #720
Full Changelog: v1.0.28...v1.0.29
Refine scene node drag API by @brentyi in #715
Legacy on_pointer_event() , remove_pointer_callback() , and on_pointer_callback_removed() are deprecated.
New features:
SceneApi.add_arrows()on_drag_start(), on_drag_update(), on_drag_end(), and matching remove methods.on_click() callbacks; SceneNodePointerEvent now includes modifier.SceneApi.on_click() and SceneApi.on_rect_select() with typed SceneClickEvent and SceneRectSelectEvent. Legacy on_pointer_event(), remove_pointer_callback(), and on_pointer_callback_removed() are deprecated.GuiApi.add_command().GuiApi.add_form() and GuiFormHandle for grouped GUI submit semantics via on_submit().GuiApi.add_divider() and GuiDividerHandle for horizontal GUI dividers.Updates:
GuiApi.add_folder() to accept label=None for borderless/headerless layout groups.GuiTabGroupHandle.add_tab() to accept an optional icon=.GuiApi.add_plotly() to accept a Plotly config dict.GuiApi.add_uplot() to accept fixed height and padding.SceneApi.add_point_cloud() to accept point_shading="flat" | "gradient"; default is "gradient".gui.add_form() for events on Enter/submit by @siddhss5 in #689gui.add_divider() for horizontal rules by @brentyi in #694gui.add_command() for command palette, hotkeys by @brentyi in #696on_pointer_event into on_rect_select() and on_click() by @brentyi in #709Full Changelog: v1.0.26...v1.0.27
gui.add_form() for events on Enter/submit by @siddhss5 in #689gui.add_divider() for horizontal rules by @brentyi in #694gui.add_command() for command palette, hotkeys by @brentyi in #696on_pointer_event into on_rect_select() and on_click() by @brentyi in #709Full Changelog: v1.0.26...v1.0.27
Fix regression in scene node removal, e2e test by @brentyi in #680
Full Changelog: v1.0.25...v1.0.26
Multiple significant performance optimizations; convert scenes to standalone HTML with .as_html() .
Multiple significant performance optimizations; convert scenes to standalone HTML with .as_html().
direction prop to add_light_spot() by @brentyi in #665SceneApi.as_html(), StateSerializer.as_html() by @brentyi in #673set_background_image() for reversed depth buffer by @brentyi in #677Full Changelog: v1.0.24...v1.0.25
Fix Gaussian splat shader for logarithmic depth buffer by @brentyi in #661
Full Changelog: v1.0.23...v1.0.24
feat: add configurable scene fog with custom shader support by @Mitia-RH in #656
scene.get_handle_by_name() by @lstoex in #644Full Changelog: v1.0.22...v1.0.23
Update URLs by @brentyi in https://github.com/viser-project/viser/pull/653
plane_color and plane_opacity fields to add_grid() by @brentyi in https://github.com/viser-project/viser/pull/652scale property to scene objects by @henrynoyes in https://github.com/viser-project/viser/pull/649Full Changelog: https://github.com/viser-project/viser/compare/v1.0.21...v1.0.22
Fix immediate websocket disconnect for large scenes by @brentyi in https://github.com/nerfstudio-project/viser/pull/643
Full Changelog: https://github.com/nerfstudio-project/viser/compare/v1.0.20...v1.0.21
Restore initial camera FOV, disable unintended animation by @brentyi in https://github.com/nerfstudio-project/viser/pull/642
Full Changelog: https://github.com/nerfstudio-project/viser/compare/v1.0.19...v1.0.20
Fix minor notification example + camera init behavior bugs by @brentyi in https://github.com/nerfstudio-project/viser/pull/641
Full Changelog: https://github.com/nerfstudio-project/viser/compare/v1.0.18...v1.0.19
Initial camera API, improve orbit crosshair sizing by @brentyi in https://github.com/nerfstudio-project/viser/pull/636
Full Changelog: https://github.com/nerfstudio-project/viser/compare/v1.0.17...v1.0.18
scene.show() in Jupyter notebooks (docs)
Notable new features:
on_hold() for buttonsadd_cylinder()scene.show() in Jupyter notebooks (docs)We've also made some build improvements:
19MB → 2.7MB.29.1MB → 4.9MB.xMin == xMax by @brentyi in https://github.com/nerfstudio-project/viser/pull/614uv for workflows by @brentyi in https://github.com/nerfstudio-project/viser/pull/624on_hold() for buttons by @david-dorf in https://github.com/nerfstudio-project/viser/pull/613zstd for build + message compression by @brentyi in https://github.com/nerfstudio-project/viser/pull/635Full Changelog: https://github.com/nerfstudio-project/viser/compare/v1.0.16...v1.0.17
Performance improvements for batched meshes, line segments, and text labels.
Performance improvements for batched meshes, line segments, and text labels.
SceneApi.add_label() by @brentyi in https://github.com/nerfstudio-project/viser/pull/603add_line_segments() transport + update efficiency by @brentyi in https://github.com/nerfstudio-project/viser/pull/605@three.ez/instanced-mesh, tweak auto LOD by @brentyi in https://github.com/nerfstudio-project/viser/pull/607infinite_grid=True by @brentyi in https://github.com/nerfstudio-project/viser/pull/606add_batched_labels() addition, fix local position bug in improve add_label() by @brentyi in https://github.com/nerfstudio-project/viser/pull/608Full Changelog: https://github.com/nerfstudio-project/viser/compare/v1.0.15...v1.0.16
Defensive array reads; prevents crashes from invalid prop updates
Full Changelog: https://github.com/nerfstudio-project/viser/compare/v1.0.14...v1.0.15
Python 3.14, dependency cleanup by @brentyi in https://github.com/nerfstudio-project/viser/pull/592
Full Changelog: https://github.com/nerfstudio-project/viser/compare/v1.0.13...v1.0.14
Bump Mantine to ^8.3.0 by @brentyi in https://github.com/nerfstudio-project/viser/pull/589
^8.3.0 by @brentyi in https://github.com/nerfstudio-project/viser/pull/589Full Changelog: https://github.com/nerfstudio-project/viser/compare/v1.0.12...v1.0.13
Minor GUI panel bug fix for unconnected clients
Full Changelog: https://github.com/nerfstudio-project/viser/compare/v1.0.11...v1.0.12
Add http://0.0.0.0:{port} to viser table printout when host is 0.0.0.0 by @rowoflo in https://github.com/nerfstudio-project/viser/pull/577
InstancedMesh2 by @brentyi in https://github.com/nerfstudio-project/viser/pull/586atexit callback after .stop() by @brentyi in https://github.com/nerfstudio-project/viser/pull/583Full Changelog: https://github.com/nerfstudio-project/viser/compare/v1.0.10...v1.0.11
Support infinite grids, deprecate width_segments and height_segments by @brentyi in https://github.com/nerfstudio-project/viser/pull/579
width_segments and height_segments by @brentyi in https://github.com/nerfstudio-project/viser/pull/579Full Changelog: https://github.com/nerfstudio-project/viser/compare/v1.0.9...v1.0.10
Focal length improvements: Gaussian update synchronization, fix orbit crosshair scale by @brentyi in https://github.com/nerfstudio-project/viser/pull/
add_mesh_trimesh(), allow float input for receive_shadow by @brentyi in https://github.com/nerfstudio-project/viser/pull/578Full Changelog: https://github.com/nerfstudio-project/viser/compare/v1.0.8...v1.0.9
Improve uPlot styling by @brentyi in https://github.com/nerfstudio-project/viser/pull/567
Full Changelog: https://github.com/nerfstudio-project/viser/compare/v1.0.7...v1.0.8
BVH optimizations for instanced/batched meshes, fix rendering and display bugs by @brentyi in https://github.com/nerfstudio-project/viser/pull/558
[0, 1] <=> [0, 255] conversion bug in RGBA picker component by @brentyi in https://github.com/nerfstudio-project/viser/pull/564Full Changelog: https://github.com/nerfstudio-project/viser/compare/v1.0.6...v1.0.7
Fixes edge case when removing and re-adding clickable scene nodes.
Fixes edge case when removing and re-adding clickable scene nodes.
Full Changelog: https://github.com/nerfstudio-project/viser/compare/v1.0.5...v1.0.6
Performance, dependency, and UI improvements.
Performance, dependency, and UI improvements.
client.get_render() by @brentyi in https://github.com/nerfstudio-project/viser/pull/538add_box() and add_icosphere(), docs on performance tips, refactor state management by @brentyi in https://github.com/nerfstudio-project/viser/pull/540Full Changelog: https://github.com/nerfstudio-project/viser/compare/v1.0.4...v1.0.5
Fix incorrect argument reference in build_client_entrypoint by @MosesEbere in https://github.com/nerfstudio-project/viser/pull/530
Full Changelog: https://github.com/nerfstudio-project/viser/compare/v1.0.3...v1.0.4
Same as 1.0.2 release, but fixed client metadata.
Same as 1.0.2 release, but fixed client metadata.
Full Changelog: https://github.com/nerfstudio-project/viser/compare/v1.0.2...v1.0.3
Nothing published for this version
Make tyro an examples-only dependency by @sea-bass in https://github.com/nerfstudio-project/viser/pull/516
tyro an examples-only dependency by @sea-bass in https://github.com/nerfstudio-project/viser/pull/516fixedDpr debug flag by @brentyi in https://github.com/nerfstudio-project/viser/pull/520Full Changelog: https://github.com/nerfstudio-project/viser/compare/v1.0.0...v1.0.1
Most methods now require keyword arguments - positional arguments deprecated with warnings
First stable release of Viser. Thanks to everyone who helped 🙂
We also have a white paper coming soon™, please stay tuned for this!
add_box() and add_icosphere() now return BoxHandle and IcosphereHandle instead of MeshHandle (#475)add_batched_axes() signature (#418)positions → points for splines (#493)point_ball_norm → point_shape for point clouds (#429)set_environment_map() → configure_environment_map() (#428)auto_close → auto_close_seconds for notifications timeout (#508)gui.add_html() - render custom HTML content (#387)gui.add_text() - now supports multiline text (#431) - by @zeroloveradd_point_cloud() - added precision="float16"/"float32" argument (#427) - by @ArthurAllshireon_drag_start and on_drag_end (#479)save_immediately= flag (#386)add_box and add_icosphere now have default arguments (#501)This is a full list of merged PRs. Many of them address recent regressions, so it's not representative of bugs in prior releases.
control_width (#507)_encode_image_binary() (#494) - by @alberthligui.configure_theme(show_share_button=False) (#426)pyliblzfse to avoid dependency issues (#498)dummyWindowDimensions= and dummyWindowTitle= search parameters (#402)Fix non-integer marks for sliders in https://github.com/nerfstudio-project/viser/pull/380
Full Changelog: https://github.com/nerfstudio-project/viser/compare/v0.2.22...v0.2.23
Fix minor play/pause button bug for embedded visualizations in https://github.com/nerfstudio-project/viser/pull/376
Full Changelog: https://github.com/nerfstudio-project/viser/compare/v0.2.21...v0.2.22
(Critical) Fix garbage collector for GUI updates in https://github.com/nerfstudio-project/viser/pull/372
viser.GridHandle in https://github.com/nerfstudio-project/viser/pull/373Full Changelog: https://github.com/nerfstudio-project/viser/compare/v0.2.20...v0.2.21
Allow erase for frustum images by @brentyi in https://github.com/nerfstudio-project/viser/pull/342
gui.add_image() + plotting example by @brentyi in https://github.com/nerfstudio-project/viser/pull/343.near and .far props to camera handles by @brentyi in https://github.com/nerfstudio-project/viser/pull/356add_line_segments() by @brentyi in https://github.com/nerfstudio-project/viser/pull/363Full Changelog: https://github.com/nerfstudio-project/viser/compare/v0.2.19...v0.2.20
More consistent API for environment map orientation in https://github.com/nerfstudio-project/viser/pull/334
get_render() in https://github.com/nerfstudio-project/viser/pull/339Full Changelog: https://github.com/nerfstudio-project/viser/compare/v0.2.18...v0.2.19
Significantly reduce scene tree remounts, display improvements by @brentyi in https://github.com/nerfstudio-project/viser/pull/328
Full Changelog: https://github.com/nerfstudio-project/viser/compare/v0.2.17...v0.2.18
Polish scene tree table in https://github.com/nerfstudio-project/viser/pull/324
Full Changelog: https://github.com/nerfstudio-project/viser/compare/v0.2.16...v0.2.17
Full Changelog: https://github.com/nerfstudio-project/viser/compare/v0.2.15...v0.2.16
Full Changelog: https://github.com/nerfstudio-project/viser/compare/v0.2.15...v0.2.16
Fix overflow artifacts for scene tree table in https://github.com/nerfstudio-project/viser/pull/322
Full Changelog: https://github.com/nerfstudio-project/viser/compare/v0.2.14...v0.2.15
Full Changelog: https://github.com/nerfstudio-project/viser/compare/v0.2.13...v0.2.14
Full Changelog: https://github.com/nerfstudio-project/viser/compare/v0.2.13...v0.2.14
Fix array mutation bugs in https://github.com/nerfstudio-project/viser/pull/319
origin_color prop to frame objects in https://github.com/nerfstudio-project/viser/pull/3200.2.13, switch from setuptools to hatchling in https://github.com/nerfstudio-project/viser/pull/321Full Changelog: https://github.com/nerfstudio-project/viser/compare/v0.2.12...v0.2.13
Support rendering from virtual cameras in https://github.com/nerfstudio-project/viser/pull/307
.stop() in https://github.com/nerfstudio-project/viser/pull/313scene.add_line_segments() in https://github.com/nerfstudio-project/viser/pull/315Full Changelog: https://github.com/nerfstudio-project/viser/compare/v0.2.11...v0.2.12
Fix 0.0.0.0-related issues by @brentyi in https://github.com/nerfstudio-project/viser/pull/306
Full Changelog: https://github.com/nerfstudio-project/viser/compare/v0.2.10...v0.2.11
Bug and performance fixes. We also now support callbacks define with async def.
Bug and performance fixes. We also now support callbacks define with async def.
Full Changelog: https://github.com/nerfstudio-project/viser/compare/v0.2.9...v0.2.10
Transform helpers cleanup in https://github.com/nerfstudio-project/viser/pull/285
Full Changelog: https://github.com/nerfstudio-project/viser/compare/v0.2.8...v0.2.9
Scene tree refactor by @brentyi in https://github.com/nerfstudio-project/viser/pull/280
Full Changelog: https://github.com/nerfstudio-project/viser/compare/v0.2.7...v0.2.8
Hotfix for remove() for URDF helper.
Hotfix for remove() for URDF helper.
Full Changelog: https://github.com/nerfstudio-project/viser/compare/v0.2.6...v0.2.7
Minor update for URDF helper, which now has a .remove() method.
Minor update for URDF helper, which now has a .remove() method.
Full Changelog: https://github.com/nerfstudio-project/viser/compare/v0.2.5...v0.2.6
fix builtins module by @ojh6404 in https://github.com/nerfstudio-project/viser/pull/276
Full Changelog: https://github.com/nerfstudio-project/viser/compare/v0.2.4...v0.2.5
Make 'gdown' an example group dependency. by @kdexd in https://github.com/nerfstudio-project/viser/pull/234
viser-specific internals by @brentyi in https://github.com/nerfstudio-project/viser/pull/258instance_index to click event for batched axes by @brentyi in https://github.com/nerfstudio-project/viser/pull/272Full Changelog: https://github.com/nerfstudio-project/viser/compare/v0.2.3...v0.2.4
Fix float/int cast for vector2 and vector3 GUI elements by @brentyi in https://github.com/nerfstudio-project/viser/pull/231
Full Changelog: https://github.com/nerfstudio-project/viser/compare/v0.2.2...v0.2.3
Small fix in development.md by @ginazhouhuiwu in https://github.com/nerfstudio-project/viser/pull/224
Bug fixes!
Full Changelog: https://github.com/nerfstudio-project/viser/compare/v0.2.1...v0.2.2
Allow users to set logging verbosity explicitly from viser server by @hangg7 in https://github.com/nerfstudio-project/viser/pull/222
Full Changelog: https://github.com/nerfstudio-project/viser/compare/v0.1.31...v0.2.1
Deprecations warnings are now raised when the older API is used.
Updated API.
Before:
server.add_gui_button()
server.add_gui_folder()
server.on_scene_click()
server.add_mesh()
server.reset_scene()
After:
server.gui.add_button()
server.gui.add_folder()
server.scene.on_click()
server.scene.add_mesh()
server.scene.reset()
Deprecations warnings are now raised when the older API is used.
Full Changelog: https://github.com/nerfstudio-project/viser/compare/v0.1.31...v0.2.0
Fix edge cases in 3D gui container.
Fix edge cases in 3D gui container.
Full Changelog: https://github.com/nerfstudio-project/viser/compare/v0.1.33...v0.1.34
Minor bug fixes: GUI dropdown edge case, unnecessary client builds.
Minor bug fixes: GUI dropdown edge case, unnecessary client builds.
Full Changelog: https://github.com/nerfstudio-project/viser/compare/v0.1.32...v0.1.33
Fixed edge cases with GUI containers.
Fixed edge cases with GUI containers.
Full Changelog: https://github.com/nerfstudio-project/viser/compare/v0.1.31...v0.1.32
Your coding agent can read these notes before it upgrades. Set up the MCP server →