napari 0.8.0#
Sun, Jul 12, 2026
We’re happy to announce the release of napari 0.8.0! napari is a fast, interactive, multi-dimensional image viewer for Python. It’s designed for browsing, annotating, and analyzing large multi-dimensional images. It’s built on top of Qt (for the GUI), vispy (for performant GPU-based rendering), and the scientific Python stack (numpy, scipy).
For more information, examples, and documentation, please visit our website, https://napari.org.
napari follows EffVer (Intended Effort Versioning); this is a Macro release containing awesome new features, but may require dedication of some significant time when upgrading projects to use this version.
Highlights#
Add floating axes canvas overlay (#8262)
Histogram for the Image layer controls and contrast limits popup (#8391)
Unify use of theme colors (#8927)
[Shapes] When using Shift to draw circle/square, allow shape to grow in direction of mouse drag (#9018)
Theme colors adjustments (#9078)
Add information about PyQt5 deprecation (#9079)
Drop Python 3.10 and implement 3.11+ changes (#9104)
Selectable camera modes with
Separate(default) andSharedviews across ndisplay (#9151)
New Features#
Improvements#
Add handler for show message when napari fails to import (#8609)
UX: Add viewer mouse binding (alt) to the scroll wheel to scroll layers (#8731)
Make tips more generally usable (#8762)
Add handler to show message when napari fails to import (#8803)
Unify use of theme colors (#8927)
Make multiscale level labels static to avoid delayed updates (#9006)
Accept
pathlib.Pathin reader and writer plugin utilities (#9042)Fix: adapt frame box upper bound to data size (allow >6-digit indices) (#9064)
Theme colors adjustments (#9078)
feat: add metadata submenu to the layers menu (#9107)
Enable clickable links for tips that have URLs (#9114)
Use level-0 extent for multiscale bounding box overlay (#9142)
Show active level in Auto entry of multiscale combobox (#9143)
Performance#
[Labels, Perf] Refactor painting to use masks and bounding boxes (#8636)
Bug Fixes#
Make multiscale level labels static to avoid delayed updates (#9006)
Gate drag_to_zoom to pan/zoom mode or no layers selected (#9016)
[Shapes] When using Shift to draw circle/square, allow shape to grow in direction of mouse drag (#9018)
Fix: adapt frame box upper bound to data size (allow >6-digit indices) (#9064)
Fix half-voxel offset (#9065)
make LabelColorMapBase deep-copyable (#9069)
Make Wayland XCB/GLX workaround modular for non-NVIDIA GPUs (#9070)
Fix colorbar box (#9071)
Remove stretch from features table widget layout (#9099)
Limit dims scroll to 1 step at a time (#9117)
Fix get_status for RGB images in 3D display mode (#9135)
Fix problem with ignoring annotation when drag and drop (#9136)
Fix multiscale _set_view_slice when switching to 3D (#9141)
Use level-0 extent for multiscale bounding box overlay (#9142)
Guard against stale index for layer paint methods (#9149)
Fix: Restore tooltip symbol QSS after #9003 (#9161)
API Changes#
Remove
compat.py(andStrEnumexport), update imports, and remove case-insens lookup (#9133)
Deprecations#
Next round of deprecation for scale_bar.unit (#9029)
Documentation#
Up-to-date compile constraints instructions (docs#1043)
Update version_switcher for 0.7.1 (docs#1044)
Fix formatting in version_switcher.json (remove spurious comma) (docs#1045)
Update pre-commit config, apply rules (docs#1046)
python >=3.11 for all docs references (docs#1052)
Add tip to use
-hor--helpflags with thecompile_constraints.shscript (docs#1053)Remove
github-advanced-security[bot]from list of reviewers of 0.7.1 (docs#1055)Add initial release notes for 0.8.0 (docs#1056)
Update README with links for the dev and published docs (docs#1058)
Feature documentation for image layer histogram (docs#1059)
examples: remove deprecated
scale_bar.unitand enableviewer.scale_bar.visible = True(#9012)
Other Pull Requests#
Fix linkchecker action constraints to file for py312 (docs#1048)
[pre-commit.ci] pre-commit autoupdate (docs#1050)
Use shared workflow for remove ready to merge label (docs#1054)
Prevent selection from overwriting feature_defaults (#8769)
Use Qt6 colorScheme to detect system theme (#8904)
Remove check of Qt version that disable gradient in themes (#8961)
QSS cleanup: remove plugin manager qss and some even older plugin sorter qss (#9003)
typing: add type annotations to _tracebacks.py (#9011)
Update
dask,hypothesis,ipython,matplotlib,pytest,tqdm,virtualenv(#9036)[pre-commit.ci] pre-commit autoupdate (#9040)
[Maint] Remove unneeded _set_highlight calls in Shapes key and mouse binds (#9060)
Fix flaky fullscreen test: skip on all Qt >= 6.9.0 (#9074)
[pre-commit.ci] pre-commit autoupdate (#9080)
ci: trigger dependency check on PR edits (#9084)
Add
-h | --helparguments tocompile_constraints.sh(#9090)Actually use pride logo (#9091)
fix(typing): fix mypy error in
qt_list_view.py(#9093)fix(typing): add typing and fix mypy error in
qt_tree_view.py(#9094)fix(typing): add typing and fix mypy error in
screenshot_dialog.py(#9095)fix(typing): add typing and fix mypy errors in
tree/group.py(#9096)fix(typing): add typing and fix mypy errors in
debugging.py(#9097)fix(typing): add typing and fix mypy errors in
custom_types.py(#9098)fix(typing): add typing and fix mypy error in
qt_tooltip.py(#9101)fix(typing): add typing and fix mypy error in
qt_spinbox.py(#9102)fix(typing): add typing and fix mypy error in
qt_scrollbar.py(#9103)bump numpy to 2.5.0 in mypy constraints to fix
[unused-ignore]errors (#9106)fix(typing): add typing and fix mypy errors in
qt_range_slider_popup.py(#9108)fix(typing) : add typing and fix mypy error in
qt_progress_bar.py(#9109)fix(typing): add typing and fix mypy error in
qt_message_popup.py(#9111)fix(typing): add typing and fix mypy error in
qt_font_size.py(#9112)fix(typing): add typing and fix error in
qt_dims_sorter.py(#9113)Use shared version of label clean workflow (#9116)
[pre-commit.ci] pre-commit autoupdate (#9122)
fix(typing): add typing and fix mypy error in
qt_about.py(#9125)Minimum support for zarr>=3 for builtins (#9134)
Stop using pickle when copying/pasting spatial features of layer (#9146)
Remove
image_reader_to_layerdata_reader(#9147)Remove
color_dict_to_colormap(#9148)QApplicationmouse event to trigger event filter oftest_toggle_menubar(#9152)Remove
pyautoguiand update failing tests on Windows-Qt6 (#9153)gitignore various agent related file names (#9154)
Update
certifi,coverage,fsspec,hypothesis,ipython,npe2,pillow,pydantic-settings,pytest,pytest-rerunfailures,scipy,tqdm,virtualenv,wrapt(#9158)macos-15runner instead ofmacos-latest(nowmacos-26) to prevent segfaults (#9162)Remove method and functions marked for removal in 0.8.0 (#9177)
16 reviewers added to this release (alphabetical)#
(+) denotes first-time contributors 🥳
Aniket - @Aniketsy
Carlos Mario Rodriguez Reza (docs) - @carlosmariorr
Carol Willing - @willingc
Caroline Malin-Mayor - @cmalinmayor
Draga Doncila Pop - @DragaDoncila
Gabriel Selzer - @gselzer
Grzegorz Bokota (docs) - @Czaki
Imaduddin Sheikh - @isheikh8492 +
Jacopo Abramo - @jacopoabramo
Juan Nunez-Iglesias - @jni
Kyle I. S. Harrington - @kephale
Lorenzo Gaifas - @brisvag
Mikkel Roald-Arbøl - @roaldarbol +
Peter Sobolewski (docs) - @psobolewskiPhD
Teun Huijben - @TeunHuijben +