| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| README.md | 2026-07-23 | 3.9 kB | |
| v3.15.0 source code.tar.gz | 2026-07-23 | 22.9 MB | |
| v3.15.0 source code.zip | 2026-07-23 | 23.6 MB | |
| Totals: 3 Items | 46.6 MB | 0 | |
New features and enhancements
- Introduce
ui.popup(nicegui.io), a menu on desktop and a dialog on small screens (#1125, [#2149], [#5613] by @DelScipio, @adosikas, @evnchn, @phifuh, @falkoschindler) - Make the start method of the
run.cpu_boundprocess pool configurable viarun.process_pool_start_method(#6117 by @evnchn, @NiklasNeugebauer, @falkoschindler) - Speed up binding cleanup with a reverse index (#6135, [#6150] by @ftilde, @jwinpbe, @evnchn, @falkoschindler)
- Speed up observable change handlers by resolving
expects_argumentsonce at registration (#6098, [#6108] by @maybites, @evnchn, @falkoschindler) - Add element identity to the "parent slot has been deleted" error (#6153 by @pascalzauberzeug, @evnchn, @falkoschindler)
Bugfixes
- Fix
ObservableCollectionleaking change handlers and keeping discarded containers alive (#6139, [#6140] by @falkoschindler, @evnchn) - Raise
KeyErrorfromObservableDict.pop()for a missing key, likedict.pop(#6163, [#6164] by @evnchn, @falkoschindler)
Breaking change: app.storage (nicegui.io).general, .user, .tab and .client are ObservableDicts, so storage.pop('missing') now raises a KeyError instead of returning None. Pass an explicit default to keep the previous behavior: storage.pop('missing', None).
- Skip change events for no-op mutations of observable collections (#6169, [#6171] by @falkoschindler, @evnchn)
- Fix
ui.page_title,ui.add_head_html,ui.add_body_htmlandui.add_cssbeing lost in asyncui.sub_pagesbuilders (#6058, [#6147], [#6148], [#6168] by @cervelas, @evnchn, @falkoschindler) - Fix
run.cpu_boundhanging with theforkserverstart method, e.g. on Python 3.14 + Linux (#6166, [#6167] by @evnchn, @falkoschindler) - Fix
PermissionErroron Windows when clearing storage while a backup is in flight (#6158, [#6159], [#6173], [#6174] by @Jepson2k, @evnchn, @falkoschindler) - Fix sporadic HTTP 500 when user storage is pruned during an in-flight request (#6145, [#6146] by @evnchn, @falkoschindler)
- Fix
TypeErrorinui.input(nicegui.io)'s shadow text when the autocomplete list is absent (#6161, [#6162] by @Jepson2k, @evnchn, @falkoschindler) - Fix placement and order of
ui.fab_actions underdir="rtl"(#6165, [#6172] by @roximn148, @evnchn, @falkoschindler) - Fix crash when loading an STL model into
ui.scene(nicegui.io) withwireframe=True(#5989, [#6118], [#6137] by @fabian0702, @Jepson2k, @evnchn, @falkoschindler) - Close streamed media file handles synchronously on teardown (#6149 by @evnchn, @falkoschindler)
Documentation
- Add an accessibility heading tree to the homepage (#6155 by @evnchn, @falkoschindler)
Testing
- Make CPython-only-semantics tests PyPy-compatible (#6157 by @evnchn, @falkoschindler)
Dependencies
- Update nicegui-highcharts to 3.3, fixing dynamic adding and removing of chart series (#6138 by @falkoschindler, @evnchn)
Infrastructure
- Run
examples/pytestsin CI so bundled example tests can't silently rot (#6141, [#6144] by @falkoschindler, @evnchn)
Special thanks to our top sponsors DiscoLike Inc. 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!