Published September 30, 2026 | Version v0.9.2

napari: a multi-dimensional image viewer for Python

Description

napari 0.9.2

Tue, Sep 29, 2026

We're happy to announce the release of napari 0.9.2! 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 Meso release containing awesome new features, but some effort may be needed when updating previous projects to use this version.

Highlights

Vispy update

In #9499 we improved and updated Vispy (napari's rendering engine), which brings us a few fixes and new features. Some important ones:

  • perspective rendering of points and text is no longer broken (Shift+right-click-drag to change FOV in 3D!)
  • RGB data can now be viewed in 3D. This might still have some kinks to smooth out, so if you see issues, make sure to report them on the issue tracker.

Type checking changes and guide

In #9395 we have switched our type checking from mypy to pyrefly because its much faster (>20x!), easier to understand, and well supported. Read our new typing guide for more information on typing the napari code base. Contributors have found typing contributions as a great introduction to contributing to napari and it is work that we welcome. To read more about Aniket's experience, check out the new island dispatch blog post: From Any to Certainty.

New release policy with regular cadence

The napari team has been working hard to improve our release process, and based on our experience and feedback from the community, we have formally adopted a release policy (napari/docs#1126). Expect regular monthly releases and clearer communication about review and timing for contributions; read the full policy.

New Features

  • Add multiscale level extraction as a LayerList action (#9495)

Improvements

  • Feat: allow passing list of layers to Viewer.reset_view and .fit_to_view (#6120)
  • Add setting for global multisampling/antialiasing (#8570)
  • Reorder font-family declaration in console QSS (#9325)
  • Performance: Avoid redundant unit conversion when aggregating layer extents (#9411)
  • Add RenamedEmitter subclass of WarningEmitter to simplify renaming (#9482)
  • Bump vispy: rgb volumes, fixed perspective and overlay bleed (#9499)

Performance

  • Reorder font-family declaration in console QSS (#9325)
  • Performance: Avoid redundant unit conversion when aggregating layer extents (#9411)

Bug Fixes

  • Allow fourier_transform_playground.py to work via drag'n'drop (#8175)
  • Fix view direction and refactor camera logic into vispy module (#9389)
  • fix(vectors): emit edge_color_mode when the color setter changes the mode (#9396)
  • Fix _unique_element crash and incorrect result for list-valued features (#9409)
  • Fix changing theme with dynamic controls (#9460)
  • Fix keeping properties and equality operators from parent class (#9479)
  • Fix surface lighting in async mode (#9493)
  • Bump vispy: rgb volumes, fixed perspective and overlay bleed (#9499)
  • Fix calculation of number of viewboxes (#9509)
  • Fix qt command palette row indexing (#9512)
  • Frozen overlay dicts (#9525)
  • fix(qt): let QtViewer attach to a ViewerModel that already holds several layers (#9533)

Build Tools

  • Bump vispy: rgb volumes, fixed perspective and overlay bleed (#9499)

Documentation

  • New release policy with regular cadence and responsibilities (docs#1126)
  • Update 0.9.1 release notes to add missed author (docs#1130)
  • Typing guide: Using Pyrefly and understanding the config (docs#1134)
  • Add initial release notes for 0.9.2 (docs#1137)
  • enforce LF line endings (docs#1139)
  • Update release notes for 0.9.2 (docs#1146)
  • Update the version switcher for 0.9.2 (docs#1150)

Other Pull Requests

  • [pre-commit.ci] pre-commit autoupdate (docs#1131)
  • [pre-commit.ci] pre-commit autoupdate (docs#1133)
  • CI: skip docs build for CI-only changes (#8859)
  • fix(typing): add typing and fix mypy error in qt_layer_model.py (#9168)
  • fix(typing): add typing and fix mypy error in qt_layer_controls_container.py (#9173)
  • fix(typing): add typing and fix mypy error in qt_vectors_controls.py (#9178)
  • chore: cleanup unused functions (#9387)
  • Remove stale viewer context (#9406)
  • Update coverage, dask, hypothesis, ipython, platformdirs, pydantic, virtualenv, wrapt (#9471)
  • Use new resource package to source logos (#9477)
  • Fix --pre testing workflows to run only specific subset of environments (#9480)
  • Update coverage, hypothesis, ipython, lxml, matplotlib, numpy, pint, platformdirs, psygnal, pytest-rerunfailures, tifffile, tqdm, virtualenv, wrapt (#9492)
  • [pre-commit.ci] pre-commit autoupdate (#9496)
  • [pre-commit.ci] pre-commit autoupdate (#9510)
  • Disable graphviz on macos-intel, generate dependency pdf conditionally (#9514)
  • TYP: add type hints in action_manager.py (#9538)
  • TYP: add type hints in mouse_bindings.py (#9540)
  • TYP: add type hints in qt_text_visibility.py (#9541)
  • TYP: add type hints in stubgen.py (#9542)
  • TYP: add type hints in string_encoding.py (#9545)
  • TYP: add type hints in color_encoding.py (#9548)
  • [pre-commit.ci] pre-commit autoupdate (#9553)
  • Rename RenamedEmitter to RenamedWarningEmitter (#9567)

10 authors added to this release (alphabetical)

(+) denotes first-time contributors 🥳

14 reviewers added to this release (alphabetical)

(+) denotes first-time contributors 🥳

Notes

If you use this software, please cite it using these metadata.

Files

napari/napari-v0.9.2.zip

Files (4.1 MB)

Name Size Download all
md5:7caa8c96fea0e122346151b7faddb00d
4.1 MB Preview Download

Additional details

Related works

Is supplement to
Software: https://github.com/napari/napari/tree/v0.9.2 (URL)

Software