Download Latest Version v3.18.0 source code.zip (25.2 MB) Google Add to Preferred Sources
Home / v3.18.0
Name Modified Size InfoDownloads / Week
Parent folder
README.md 2026-10-07 5.7 kB
v3.18.0 source code.tar.gz 2026-10-07 24.5 MB
v3.18.0 source code.zip 2026-10-07 25.2 MB
Totals: 3 Items   49.7 MB 0

Security

  • ⚠️ Reject uploads to disabled or hidden ui.upload (nicegui.io) elements, whose upload route bypassed the server-side event check (GHSA-9mxh-cwxr-cxjj by @alperenkesk, @evnchn, @falkoschindler)

New features and enhancements

  • Add reveal_line() and the signals on_focus_change, on_viewport_change and on_geometry_change to ui.codemirror (nicegui.io) (#5984 by @Jepson2k, @evnchn, @falkoschindler)

Bugfixes

  • Report exceptions from @ui.refreshable rebuilds, async Event subscribers, async validation functions and other fire-and-forget tasks to ui.on_exception (#6233, [#6234], [#6262], [#6363] by @evnchn, @SaadZahem, @falkoschindler)
  • Fix ui.sub_pages staying in the SPA instead of loading pages registered via app.include_router(), also with FastAPI 0.141+ (#6281, [#6374] by @falkoschindler, @DineshThumma9, @KrilleGH, @evnchn)
  • Fix button.clicked() (nicegui.io) registering a new click listener on every await (#6312, [#6333] by @falkoschindler, @jnchen, @evnchn)
  • Create the tab storage before the connect handlers run and in the On Air handshake (#6310, [#6332], [#6341], [#6355] by @evnchn, @jnchen, @Barry-Lenhart, @falkoschindler)
  • Fix a duplicated browser tab sharing nested values of its tab storage with the original tab (#6364 by @falkoschindler, @evnchn)
  • Fix Redis tab storage no longer receiving changes from other instances after a page reload (#6365 by @falkoschindler, @evnchn)
  • Fix ui.leaflet (nicegui.io) and ui.scene (nicegui.io) elements being kept alive after their client is gone (#6339, [#6345] by @falkoschindler, @wolfgang-aura, @evnchn)
  • Fix elements staying registered when their constructor raises after Element.__init__ (#6343, [#6369] by @falkoschindler, @horizonbymuneeb)
  • Fix make_sortable() having no effect on containers rendered after page load, like inside a ui.dialog (nicegui.io) (#6353, [#6358] by @darronmcnutt, @evnchn, @falkoschindler)
  • Fix ui.codemirror (nicegui.io) leaving its editor view alive after a remount (#6367, [#6368] by @falkoschindler, @evnchn)
  • Fix ui.scene (nicegui.io) objects created before the scene is mounted being lost, a regression in 3.16 (#6379, [#6380] by @ptruka, @falkoschindler, @evnchn)

Documentation

  • Add a Chinese translation of the website chrome under /zh (#4025, [#6350] by @Yuerchu, @evnchn, @falkoschindler)
  • Add a sitemap and robots.txt to the website (#6357 by @falkoschindler, @evnchn)
  • Update nicegui-highcharts to 3.5 and document that point_index of ui.highchart (nicegui.io) is Highcharts' internal index (#6259, [#6347] by @aFlocker, @evnchn, @falkoschindler)
  • Document custom colors from ui.colors (nicegui.io) for LLMs and in the documentation (#6351 by @falkoschindler, @evnchn)
  • Explain JavaScript expressions in ui.aggrid (nicegui.io) options and log unknown row IDs in run_row_method() (#6344, [#6362] by @csrubin, @falkoschindler, @evnchn)
  • Fix the ui.scene (nicegui.io) docstrings for material side and spot light defaults (#6243 by @python-and-novella, @evnchn, @falkoschindler)
  • Clarify which favicon values ui.run (nicegui.io) and ui.page accept (#6354 by @DominiksITService, @falkoschindler)

Testing

  • Close deferred background tasks when the test fixtures reset the app, which failed the first User test after a module-level ui.timer (nicegui.io) (#6359 by @falkoschindler, @evnchn)
  • Let ElementFilter and the User fixture match the values that input elements like ui.number (nicegui.io) display (#6352 by @falkoschindler, @evnchn)

    Breaking change: user.should_not_see('42') now fails if a ui.number shows 42, and ui.linear_progress, ui.circular_progress and ui.dark_mode are no longer found by a value they do not display.

Dependencies

  • Build the ui.mermaid (nicegui.io) and ui.json_editor bundles from package sources, so that the lockfiles decide which dependency versions ship (#6215, [#6375] by @falkoschindler, @evnchn)

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!

Source: README.md, updated 2026-10-07