There is a newer version of the record available.

Published October 22, 2025 | Version v3.1.0
Software Open

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

Description

New features and enhancements

  • Introduce ui.xterm (#4520 by @paco-sevilla, @evnchn, @falkoschindler)
  • Support root pages with request parameter (#5263 by @rodja)
  • Allow refreshing ui.sub_pages and ui.context.client.sub_pages_router (#5192 by @rodja)
  • Allow preventing default handlers for key events (#4924, #5222 by @eulerleibniz, @samuller, @falkoschindler)
  • Allow setting session cookie attributes from ui.run() (#4252, #5213 by @AlyShmahell, @rodja, @samuller, @falkoschindler)
  • Add --onedir argument to nicegui-pack (#5091, #5114 by @djongepier)
  • Run Uvicorn with ws='wsproto' to avoid using a deprecated protocol (#5256 by @evnchn)

Bugfixes

  • Fix dark theme for ui.aggrid (#5293, #5306 by @gioxc88, @python-and-novella, @gioxc, @evnchn, @AMorelProjects, @falkoschindler)
  • Fix NiceGUI rendering a blank page when behind a main guard (#5280, #5305 by @ClementPinard, @evnchn)
  • Fix clipboard button in ui.code after content has been changed (#5177, #5298 by @jlmanaloto, @python-and-novella, @falkoschindler, @evnchn)
  • Fix ui.leaflet not being fully functional when draw_control is False (#5279, #5281, #5317, #5319 by @lisa-ems, @evnchn, @falkoschindler, @jacksonhshields)
  • Fix auto-sizing of ui.aggrid (#5244, #5276, #5277, #5296 by @amks1, @guyingbo, @falkoschindler, @PhilippMolitor, @evnchn, @gioxc88)
  • Fix width of ui.separator in vertical orientation (#5270, #5271 by @backbord, @python-and-novella, @evnchn, @falkoschindler)
  • Fix missing spacing in ui.code without language specification (#5264, #5266 by @rolfn, @evnchn, @falkoschindler)

Documentation

  • Document the script mode (#5299 by @evnchn)
  • Add a note about packaging NiceGUI scripts (#5247, #5297 by @romaintailhurat, @Fleckso, @evnchn, @python-and-novella, @bubble-song, @falkoschindler)
  • Improve animation of minutes and hour hand in "SVG Clock" example (#5265, #5288 by @rolfn, @evnchn)
  • Improve documentation for "ZeroMQ" example (#5283 by @OpenSourceIronman, @rodja)
  • Add documentation for upload event arguments (#5278 by @falkoschindler, @evnchn)
  • Replace intro demos with more educational code and text (#5275 by @rodja, @evnchn, @falkoschindler)
  • Relax examples' version requirement and update "OpenAI Assistant" example (#5273 by @evnchn, @falkoschindler)
  • Remove obsolete advice about calling update methods (#5267 by @helmut-hoffer-von-ankershoffen, @evnchn, @python-and-novella, @falkoschindler)
  • Upgrade the "Chat with AI" example for langchain 1.0 (#5304 by @evnchn, @falkoschindler)
  • Document CSS layers (#5252 by @amks1, @evnchn, @falkoschindler)
  • Suggest user_plugin in demo to avoid Selenium dependency (#5262 by @rodja, @BayerSe)

Testing

  • Ensure proper cleanup and error handling in test fixtures (#5287 by @rodja)
  • Add support for specifying main file via pytest marker (#5219, #5269 by @BayerSe, @rodja)

Infrastructure

  • Add dynamic versioning for Poetry (#5312 by @pascalzauberzeug, @falkoschindler)
  • Fix usage of cursor rules by adhering to the proper format (#5310 by @rodja)
  • Drop build step "install test startup dependencies" (#5309 by @evnchn)
  • Rearrange the dependencies installation steps for the pipeline (#5261 by @evnchn, @falkoschindler)
  • Let pytest run first in the pipeline, startups later (#5254 by @evnchn)
  • Allow non-AMD64 devcontainers (#5206 by @evnchn)

Special thanks to all our sponsors and contributors! ✨

🙏 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.1.0.zip

Files (24.7 MB)

Name Size Download all
md5:8745814ad6cdee328a828d011b52e6fc
24.7 MB Preview Download

Additional details

Related works