There is a newer version of the record available.

Published December 8, 2025 | Version v3.4.0
Software Open

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

Description

Security

  • ⚠️ Prevent arbitrary file access when using app.add_media_files (GHSA-hxp3-63hc-5366 by @y4rvin, @evnchn, @falkoschindler)
  • ⚠️ Prevent XSS attacks via user-defined content for ui.add_css, ui.add_scss, or ui.add_sass (GHSA-72qc-wxch-74mg by @twmoon, @evnchn, @falkoschindler)
  • ⚠️ Prevent XSS attacks via user-defined SVG content in ui.interactive_image using a new sanitize parameter (GHSA-2m4f-cg75-76w2 by @twmoon, @evnchn, @falkoschindler)

Deprection

  • ⚠️ Deprecate ui.add_scss and ui.add_sass in favor of ui.add_css (#5321, #5449 by @falkoschindler, @evnchn)

New features and enhancements

  • Load Vue components faster (#5496 by @evnchn)
  • Load codehilite.css faster (#5497 by @evnchn, @falkoschindler)
  • Load headwind.css faster (#5513 by @evnchn)
  • Allow emitting events from other threads (#4985, #5546 by @MaidScientistIzutsumiMarin, @rodja, @ftilde, @evnchn, @falkoschindler)
  • Allow upgrading to pywebview 6 (#5555 by @paco-sevilla, @evnchn, @falkoschindler)
  • Drop support for non-ESM support browsers (#5514 by @evnchn)
  • Warn about accidental script mode due to missing shared=True in ui.add_head_html (#5472, #5478 by @davetapley, @evnchn, @falkoschindler)
  • Forward --clean and --noconfirm to pyinstaller in nicegui-pack (#5469 by @himbeles)
  • Let element.clear() return the element (builder pattern) (#5461 by @falkoschindler, @evnchn)
  • Raise exception when trying to run script mode in REPL (#5414, #5456 by @defkev, @falkoschindler, @evnchn, @python-and-novella, @plambertgis)
  • Compile SASS and SCSS in the browser (#5321, #5449 by @falkoschindler, @evnchn)
  • Support wildcard routing in ui.sub_pages (#5437, #5440, #5529, #5530, #5541 by @davetapley, @evnchn, @falkoschindler, @rodja)
  • Lazily start active link refresher task (#5438 by @bulletmark, @evnchn, @falkoschindler)
  • Remove orjson dependency for PyPy (#5161 by @evnchn, @falkoschindler)

Bugfixes

  • Fix .tooltip() for complex elements like ui.table (#5447, #5482 by @pandabearcodes, @python-and-novella, @evnchn, @himbeles, @falkoschindler)
  • Fix sizing problem of ui.interactive_image (#5479, #5517 by @daniel-anderberg, @evnchn, @falkoschindler)
  • Fix default values of ui.range (#5467 by @Mick235711)
  • Fix padding of horizontal ui.stepper (#5434, #5463 by @Buruxianian, @evnchn, @falkoschindler)

Documentation

  • Show a screenshot per example on the website (#4391, #5044 by @kler, @leocjj, @rodja, @falkoschindler, @evnchn)
  • Improve loading speed (#5507, #5515 by @evnchn)
  • Add a note about native mode on Windows requiring .NET (#5544 by @phifuh, @falkoschindler)
  • Add missing link in ui.sub_pages demo (#5498, #5504 by @evnchn, @falkoschindler)
  • Remove error message "The type of the None singleton." (#5488, #5489 by @evnchn)

Testing

  • Add possibility to perform tests without NiceGUI pytest plugins (#5377, #5380 by @himbeles, @evnchn, @rodja, @falkoschindler)

Dependencies

  • Bump actions/checkout from 5 to 6 (#5506 by @dependabot)
  • Exclude broken FastAPI version 0.123.5 to avoid "coroutine object not iterable" (#5535 by @frankhuurman, @edouardrolland, @Alyxion, @falkoschindler, @evnchn)

Infrastructure

  • Migrate to uv (#5311, #5547 by @falkoschindler, @evnchn, @EmberLightVFX, @pascalzauberzeug, @himbeles, @codingpaula)
  • Add codespell support (#5368 by @yarikoptic, @evnchn, @falkoschindler)

Special thanks to our top sponsors Lechler GmbH and LambdaTest

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.4.0.zip

Files (24.9 MB)

Name Size Download all
md5:75ef5bbee1af9a03667f37b6eaa9dd2b
24.9 MB Preview Download

Additional details

Related works