VTK.JS v16 Release Notes

VTK.JS logo

VTK.js is a freely available, open source rendering library made for scientific visualization on the web. It is an implementation of the Visualization Toolkit (VTK) in an ES6 JavaScript class library which can be integrated into any web application. The toolkit leverages WebGL and supports a wide variety of visualization algorithms including scalar, vector, tensor, texture, and volumetric methods.

It’s been a while since we’ve posted about a VTK.js release (last post was for VTK.js version 9), so 7 versions later, we would like to announce the release of VTK.js version 16! Below is a list of major features that have been added since version 9.

  • Infrastructure
    • Removed dependency on kw-web-suite, so VTK.js releases moving forward will have faster dependency upgrades.
    • New release channel available:
      • vtk.js@beta will be used to test breaking changes prior to release
    • Webpack 5 support.
    • Migrated to cross-platform GitHub Actions CI testing.
  • Visualization
    • Multi-component image rendering (slice and volume)
    • 2D convolution filtering on GPU (example)
    • GPU-powered volume clipping, thanks to external contributor @gandis0713 (example)
  • Camera manipulation:
    • vtkFollower
    • MouseCameraAxisRotateManipulator
    • First-person camera manipulator
    • Unicam manipulator (example, paper)
  • I/O
    • Add STLWriter (example)
    • Add PLYReader (example)
    • Add support of XMLPolyDataReader field data
    • Improve ITK integration
    • Add Draco reader (example)
    • Improved support of ParaView exported scenes (blog)
    • Add time series from vtp files (example)
  • Widgets
    • Support coincident topology. Widget geometry now can optionally appear above everything else in the scene.
    • Major cleanup of reslice cursor widget interactions (example)
    • SVG layer support (example)
    • Pixel-scaling of widget control handles (example)
    • Add arrow widget (example)
  • Features on the horizon
    • ES module builds of vtk.js! Instead of requiring downstream users to include asset processing libraries in their bundler of choice (e.g. webpack), the ESM build of vtk.js will allow users to consume vtk.js without worrying about asset preprocessing. This is currently available in vtk.js@beta, and soon to land on the default release channel.
    • Soon to go with vtk.js we have a react-vtk-js library that let you create a visualization scene in a declarative manner. Such a library will be available via dash-vtk from Plotly to streamline vtk.js based visualization from a Python server using the Dash infrastructure developed by Plotly.

Getting Started with vtk.js

If you want to learn more about vtk.js or get help, we have you covered. Below is a list of links to help you navigate vtk.js and the help forums.


We would like to thank all of the external contributors who helped improve vtk.js. Here is the list of contributors since the last vtk.js release post.

We would also like to acknowledge the funding sources that have helped contribute to vtk.js:

  • NIH NIBIB R01EB014955
  • Total SA

Questions or comments are always welcome!