There is a newer version of the record available.

Published June 9, 2026 | Version v3.13.0

NiceGUI: Web-based user interfaces with Python. The nice way.

Description

New features and enhancements

  • Introduce ui.skip_link for keyboard-accessibility skip links (WCAG 2.4.1 "Bypass Blocks") (#5790 by @evnchn, @falkoschindler)
  • Add per-line hover tooltips to ui.codemirror via a new line_tooltips property (with optional line_tooltip_html) (#5992 by @Jepson2k, @falkoschindler, @evnchn)
  • Add a ui.plotly run_plot_method() helper (mirroring run_grid_method/run_chart_method) with a Plotly.extendTraces demo for appending data without re-sending the full figure (#2660, #6060 by @evnchn, @falkoschindler)
  • Improve the error message when storing a non-JSON-serializable value in app.storage, pointing at the offending key path and the underlying type instead of an internal class name (#6044, #6050 by @NichtJens, @falkoschindler, @evnchn)

Bugfixes

  • Fix dropped app.native.window_args, app.native.settings and app.native.start_args when the spawned window process can't re-execute the main module (e.g. console-scripts, python -m, PyInstaller); unpicklable values now emit a one-time warning instead of being silently dropped (#6082, #6093 by @VFLins, @falkoschindler, @evnchn)

  • Fix blank ui.aggrid when flex columns use the infinite row model; auto_size_columns becomes a tri-state bool | None defaulting to None (skip autoSizeStrategy when columns use flex) (#5087, #6080 by @davetapley, @evnchn, @falkoschindler)

  • Fix Event.emitted() returning None instead of the emitted arguments, adding an opt-in expect_args parameter to Event.subscribe() (#6077, #6078 by @falkoschindler, @evnchn)

  • Fix the ui.sub_pages 404 sad-face persisting after client-side navigation when the page is first loaded at an unknown URL (#6069, #6071 by @evnchn, @falkoschindler)

    Note: Apps that relied on the styled sad-face overlay appearing on ui.sub_pages 404s now see only the inline 404: sub page X not found label inside their own chrome. The HTTP 404 status and the show_404=False escape hatch are unchanged.

  • Replace the misleading "remove the main guard" reload error for python -m <pkg> with a targeted message naming the package and the working alternatives (#181, #3769, #5280, #5939, #6066, #6068 by @NichtJens, @evnchn, @falkoschindler)

  • Fix Client has been deleted warning spam on reload when scene objects are mutated after await (#6058, #6059 by @codingpaula, @evnchn, @falkoschindler)

    Note: Element.update(), run_method() and get_computed_prop() now stay silent only for the disconnect/reload race; using an element after an explicit element.delete() emits a one-shot warning with a stack trace.

Documentation

  • Improve the Markdown documentation served to AI agents: serve Markdown to known agent user-agents sending a wildcard Accept, emit heading prefixes while skipping decorative HTML and demo previews, and add aria-label/child-content labels to button Markdown (#6007, #6052, #6053, #6054 by @evnchn, @falkoschindler, @HosseyNJF)
  • Fill llms.md gaps in the element surface vs. ui.* exports (#6048, #6051 by @evnchn, @falkoschindler)
  • Document how to keep ui.plotly responsive with large datasets by passing NumPy arrays / pandas Series instead of Python lists (#3340, #6095 by @TsaiTung-Chen, @python-and-novella, @mohsenminaei, @krashdifferent, @eddie3ruff, @buiapp, @falkoschindler, @evnchn)
  • Fix bad Cumulative Layout Shift (CLS) on the documentation homepage (#6087, #6089 by @evnchn, @falkoschindler)

Testing

  • Redo: randomize test ports and directories for parallel pytest sessions, re-applying #5960 with a fix for the #6061 import-time Storage.path regression (#5960, #6061, #6075 by @falkoschindler, @evnchn)

Infrastructure

  • Fix Selenium screenshot artifacts not being uploaded on test failure (#6086 by @HosseyNJF, @evnchn, @falkoschindler)

Special thanks to our top sponsors DiscoLike Inc. and Lechler GmbH

and all our other sponsors and contributors for supporting this project!

🙏 Want to support this project? Check out our GitHub Sponsors page to help us keep building amazing features!

Notes

If you use this software, please cite it as below.

Files

zauberzeug/nicegui-v3.13.0.zip

Files (23.5 MB)

Name Size Download all
md5:09214486de032070b98f2724e015cd57
23.5 MB Preview Download

Additional details

Related works