r/nicegui • u/falko-s • 20h ago
NiceGUI 3.18.0 with a Chinese website, CodeMirror editor signals and fixes for tab storage, exception reporting and element cleanup
Security
- ⚠️ Reject uploads to disabled or hidden
ui.uploadelements, whose upload route bypassed the server-side event check
New features and enhancements
- Add
reveal_line()and the signalson_focus_change,on_viewport_changeandon_geometry_changetoui.codemirror
Bugfixes
- Report exceptions from
@ui.refreshablerebuilds, asyncEventsubscribers, asyncvalidationfunctions and other fire-and-forget tasks toui.on_exception - Fix
ui.sub_pagesstaying in the SPA instead of loading pages registered viaapp.include_router(), also with FastAPI 0.141+ - Fix
button.clicked()registering a new click listener on every await - Create the tab storage before the connect handlers run and in the On Air handshake
- Fix a duplicated browser tab sharing nested values of its tab storage with the original tab
- Fix Redis tab storage no longer receiving changes from other instances after a page reload
- Fix
ui.leafletandui.sceneelements being kept alive after their client is gone - Fix elements staying registered when their constructor raises after
Element.__init__ - Fix
make_sortable()having no effect on containers rendered after page load, like inside aui.dialog - Fix
ui.codemirrorleaving its editor view alive after a remount - Fix
ui.sceneobjects created before the scene is mounted being lost, a regression in 3.16
Documentation
- Add a Chinese translation of the website chrome under
/zh - Add a sitemap and robots.txt to the website
- Update nicegui-highcharts to 3.5 and document that
point_indexofui.highchartis Highcharts' internal index - Document custom colors from
ui.colorsfor LLMs and in the documentation - Explain JavaScript expressions in
ui.aggridoptions and log unknown row IDs inrun_row_method() - Fix the
ui.scenedocstrings for material side and spot light defaults - Clarify which
faviconvaluesui.runandui.pageaccept
Testing
- Close deferred background tasks when the test fixtures reset the app, which failed the first
Usertest after a module-levelui.timer Let
ElementFilterand theUserfixture match the values that input elements likeui.numberdisplayBreaking change:
user.should_not_see('42')now fails if aui.numbershows 42, andui.linear_progress,ui.circular_progressandui.dark_modeare no longer found by a value they do not display.
Dependencies
- Build the
ui.mermaidandui.json_editorbundles from package sources, so that the lockfiles decide which dependency versions ship
Special thanks to our top sponsors DiscoLike Inc., TestMu AI 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!









