Published April 17, 2026 | Version v17.0.0
Software Open

silx-kit/h5web: H5Web 17

  • 1. ESRF
  • 2. Diamond Light Source Ltd
  • 3. Freiburg University
  • 4. @physicsxltd

Description

Full Changelog: https://github.com/silx-kit/h5web/compare/v16.0.1...v17.0.0

  • :warning: {Breaking} All three packages are now ESM-only. We no longer provide CommonJS bundles. This shouldn't be an issue if you're using a modern bundler like Vite but if you run into issues or need advice, don't hesitate to open a discussion thread. #1924
  • :warning: {Breaking} We now target Baseline Widely Available features of the web platform. This means that browser versions released more than two and a half years may no longer be supported out of the box. That being said, H5Web 17 still works down to Firefox 102 ESR, which was released in 2022, and it should be possible to support even older versions by polyfilling web platform features. #2009
  • :performing_arts: The mock demo has been significantly reworked with a clearer, more self-explanatory structure #1994

@h5web/app

Viewer

  • :tada: Improve sidebar resizing and toggling experience #1987
    • The width of the sidebar is now saved and restored automatically when toggling or reopening the viewer.
    • The sidebar can be closed and reopened by dragging the splitter all the way to the left and then back.
    • Double-clicking on the splitter resets the sidebar to its default size.
    • The sidebar is now fully accessible — it can be resized and opened/closed entirely with the keyboard.
  • :tada: Maintain zoom level and pan position when possible #1941
    • The zoom/position is saved transparently for end users, and independently for each visualization (Line, Heatmap, etc.)
    • For Heatmap, RGB and Scatter, the zoom/position is restored as long as both axes domains remain the same.
    • For Line, the zoom/position is restored as long as the abscissa domain remains the same and the user zooms only on the x axis, not the y axis.
  • :tada: Pick better icons in explorer based on dataset shape and dimensions #1976
  • :tada: < Heatmap, Line, NX Heatmap, NX Line > Add support for NetCDF attributes valid_min, valid_max and valid_range #1956
  • :tada: < RGB, NX RGB > Support RGBA/BGRA images and rgba-image NeXus interpretation #1979
  • :tada: < Scalar > Support array datasets (i.e. arrays of "scalar" values in the HDF5 sense) that are not supported by other visualizations #1768 #1770
    • The Raw visualization is removed — "non-printable" scalars like nested compounds, opaque arrays, etc. are now handled seamlessly by the Scalar visualization — cf. /compound_mixed_1D in sample.h5
    • This brings support for stacks of binary JPEG/PNG images stored as opaque array datasets — cf. frogs.h5
  • :sparkles: < NX Heatmap, NX Line > Add support for _FillValue attribute (already supported on Heatmap and Line) #1956
  • :sparkles: < Complex Line > Support unwrapping complex phase values by removing 2π discontinuities #1947
  • :sparkles: Show "NX" badges in explorer where NeXus visualizations are actually known to be supported instead of using less accurate heuristics #1990
  • :sparkles: < Line > Update line colors automatically when switching between light and dark mode #1968
  • :sparkles: < Line > Improve visibility of points in dark mode #1968
  • :sparkles: Improve user experience when copying path of selected entity from top bar #1936
  • :sparkles: Bring support for _FillValue attribute in line with NetCDF spec — the fill value now acts as an invalid upper bound (when positive) or lower bound (when negative) instead of as a single invalid value #1956
  • :zap: Optimise domain computations to reduce lag when toggling errors in toolbar #1950
  • :bug: < NX Scatter > Force ascending axes regardless of order of axes values #1989
  • :bug: Fix ordering of compound fields with number-like names #1970
  • :bug: Fix flickering of toolbar controls #1927
  • :bug: Disable <kbd>Ctrl</kbd>+left click context menu on Mac to fix selection-based zoom interactions #1985
  • :bug: Fix keyboard navigation in explorer with empty groups #1934
  • :bug: < NX Heatmap > Fix "Keep ratio" toggle not working right away when axes have different units #1954

API

  • :warning: {Breaking} [H5GroveProvider] Require h5grove@4.0.0
    • v3.0.0 makes trailing slashes optional on all endpoints #1931
    • v4.0.0 returns compound fields metadata in an array for proper ordering #1970
  • :warning: {Breaking} The shape property of Dataset and Attribute objects, which was previously number[] | null, is now a Shape object — to access the dimensions of an array dataset, use dataset.shape.dims instead of dataset.shape #1952
  • :warning: {Breaking} assertDatasetValue is renamed to assertValue #1951
  • :warning: {Breaking} Remove hooks useDatasetValue, useDatasetsValues and usePrefetchValues — use the new useDatasets and useValues hooks instead #1964
  • :tada: Add useDatasets hook to provide a declarative, schema-based alternative to useEntity to retrieve multiple datasets at once without having to invoke type guards or assertions afterwards #1963
  • :tada: Add useValues hook to retrieve multiple dataset values and/or slices at once in a more flexible and convenient way than the now-removed useDatasetsValues hook #1964
  • :sparkles: All type guards and assertions that accept Dataset objects, like hasScalarShape, assertStringType, assertValue, etc. now also accept Attribute objects — this allows type-checking the metadata and values of HDF5 attributes #1951
  • :sparkles: Add utilities hasAttribute, findAttribute, findScalarNumAttr, findScalarStrAttr, and getAttributeValue to work with HDF5 attributes in a more convenient way #1953 #2010
  • :sparkles: Add generic guards and assertions isShape, isType, hasShape, hasType, assertShape and assertType #1963

@h5web/lib

  • :warning: {Breaking} [DataCurve] Change default glyphType from cross to circle, and increase default glyphSize from 6px to 7px to improve glyphs visibility on 4k screens and in dark mode #1968
  • :warning: {Breaking} getDomain and getDomains (and their memoised versions useDomain and useDomains) now accept an options object as second parameter to specify the scaleType, errors array(s), and ignoreValue function #1950
  • :warning: {Breaking} getAxisDomain and useAxisDomain now accept an options object as second parameter #1989
  • :tada: [RgbVis] Support RGBA and BGRA data arrays #1979
  • :sparkles: Add ignoreValue option to getDomains and useDomains #1950
  • :sparkles: Add includeErrors option to getDomain, getDomains, useDomain and useDomains to control whether to return the domain(s) with or without the errors — note that all four utility functions always compute and memoise the domains both with and without errors internally for performance reasons, so this option can be toggled as often as needed #1950
  • :sparkles: New KeepZoom component (and KeepZoomProvider) to maintain camera zoom when possible across VisCanvas remounts #1941
  • :sparkles: [LineVis] Update line colors automatically when switching between light and dark mode #1968
  • :sparkles: Add forceAscending option to getAxisDomain and useAxisDomain to force computed domain to remain ascending regardless of order of axis values #1989
  • :sparkles: Add CSS variables --h5w-info--color, --h5w-scalar--color, --h5w-scalar--fontFamily and --h5w-scalar-fallback--color #2006 #2008
  • :bug: [ScatterVis] Force ascending axes regardless of order of axes values #1989
  • :bug: [Toolbar] Fix flickering of toolbar controls #1927
  • :bug: [DefaultInteractions, PreventDefaultContextMenu] Disable <kbd>Ctrl</kbd>+left click context menu on Mac when it conflicts with other interactions like selection-based zoom #1985
  • :bug: [Separator] Fix passing custom class name #1935

@h5web/h5wasm

Upgrade h5wasm from 0.8.7 to 0.10.1. It is now based on HDF5 2.0.0 — cf. https://github.com/usnistgov/h5wasm/pull/120

  • :warning: {Breaking} Require h5wasm-plugins@0.3.0 if installed #1931
  • :tada: Support bitgroom and bitround filters #1931
  • :sparkles: Show clearer error when there's not enough memory available to read data #1938
  • :sparkles: Improve display of errors when attempting to read invalid metadata #1939
  • :bug: Fix errors with some compression filters #1948

Screenshots

Better dataset icons in explorer

<img width="122" height="127" alt="image" src="https://github.com/user-attachments/assets/1eae8e63-459f-4242-9337-b37d07ff800e" />

Better sidebar resizing and toggling experience

Screencast from 2026-03-18 10-03-54.webm

Maintain zoom/position

Screencast from 2026-04-10 10-38-25.webm

NetCDF valid_range, valid_min and valid_max

<img width="1202" height="674" alt="image" src="https://github.com/user-attachments/assets/96e47ae5-8e8f-4183-83b0-304769ff9f64" />

Unwrap complex phase

Screencast from 2026-01-16 13-06-22.webm

Stack of binary images

<img width="1331" height="618" alt="image" src="https://github.com/user-attachments/assets/5c4bae3b-8851-4a8c-b3a6-0e8b5562ccf1" />

Files

silx-kit/h5web-v17.0.0.zip

Files (3.8 MB)

Name Size Download all
md5:a7c1410b7e14865a4411cac3a6297c2c
3.8 MB Preview Download

Additional details

Related works

Is supplement to
Software: https://github.com/silx-kit/h5web/tree/v17.0.0 (URL)

Software