There is a newer version of the record available.

Published January 21, 2026 | Version v3.6.0
Software Open

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

Description

New features and enhancements

  • Introduce app.colors for global color configuration (#3787, #5611 by @ghbm-itk, @evnchn, @falkoschindler)
  • Introduce color setters and bindings like set_background_color() and bind_text_color() (#5511, #5512 by @borolepratik, @evnchn, @falkoschindler)
  • Introduce ui.on_exception for handling exceptions after the page has been sent to the client (#5617, #5618 by @CatamountJack, @evnchn, @falkoschindler)
  • Provide an easy way to replace AG Grid Community with Enterprise (#2431, #5623, #5629 by @ducnva, @luongnv275, @xaptronic, @gioxc88, @evnchn, @falkoschindler)
  • Let ui.altair accept any Altair chart type like LayerChart or FacetChart (#5649, #5650 by @s-meza, @falkoschindler)
  • Allow passing a path to ui.run(show=...) to open a specific page (#5642 by @jsb-zz, @falkoschindler, @evnchn)
  • Make ui.tabs and ui.tab_panels always emit change values as string (#5637, #5638 by @jeffective, @evnchn, @falkoschindler)
  • Allow the user to click-to-reload when ui.scene loses the WebGL context (#5360, #5656 by @falkoschindler, @evnchn)
  • Suppress Vue component registration warnings for native tags (#3179, #5654 by @jojje, @ksikka, @evnchn, @falkoschindler)
  • Patch and warn about late event registrations (#4154, #5439, #5663, #5664 by @Alyxion, @xaptronic, @evnchn, @falkoschindler)
  • Break up strong reference cycles in slot children for better garbage collection (#5110, #5644 by @thevinchi, @falkoschindler, @evnchn, @phifuh)
  • Reduce initial page payload by omitting unused element properties (#5500 by @evnchn, @falkoschindler)
  • Speed-up the websocket handshake process (#5499 by @evnchn, @falkoschindler)

Bugfixes

  • Fix CSS not being added correctly when calling ui.add_css after client connected (#5624, #5628, #5666, #5667 by @svhb1000, @falkoschindler, @evnchn)
  • Fix ui.dialog being hidden when created inside ui.menu (#4116, #5602 by @tgbl-mk, @evnchn, @falkoschindler)
  • Fix ui.leaflet tiles not loading when element is unhidden (#2338, #5614 by @kleynjan, @evnchn, @falkoschindler)
  • Fix ui.log scroll-to-bottom in ui.tab_panel (#5118, #5632 by @pandabearcodes, @evnchn, @falkoschindler)
  • Fix errors when updating elements on hidden tabs (#5333, #5633 by @natankeddem, @evnchn, @falkoschindler)
  • Fix AG Grid memory leak on update and unmount (#5635 by @evnchn, @falkoschindler)
  • Fix nested updates in ui.anywidget not propagating back to frontend (#5626, #5636 by @s-meza, @evnchn, @falkoschindler)
  • Ensure API exceptions return raw error instead of NiceGUI error page (#5508, #5510 by @ghbm-itk, @evnchn, @falkoschindler)
  • Forward log messages through On Air relay (#5668 by @falkoschindler)

Documentation

  • Add on_path_changed demo and reference for SubPagesRouter (#5487, #5665 by @GinjiJizai, @falkoschindler, @evnchn)
  • Fix documentation for native mode settings in packaged apps (#4842, #5651 by @h0uter, @himbeles, @falkoschindler, @evnchn)
  • Avoid duplication in methods documentation and use best available docstring (#5630, #5631 by @evnchn, @falkoschindler)
  • Fix docs for ui.context.client.connected (#5607 by @jeffective, @falkoschindler, @evnchn)

Testing

  • Add a note about limitations for the asyncio_default_fixture_loop_scope setting (#4785 by @gzu300, @evnchn, @rodja, @falkoschindler)

Special thanks to our top sponsors Lechler GmbH and TestMu AI

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

Files (25.1 MB)

Name Size Download all
md5:e85935f2557036fc673ebe155f8e41fc
25.1 MB Preview Download

Additional details

Related works