| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| README.md | 2026-09-16 | 6.5 kB | |
| v3.17.0 source code.tar.gz | 2026-09-16 | 23.2 MB | |
| v3.17.0 source code.zip | 2026-09-16 | 23.9 MB | |
| Totals: 3 Items | 47.1 MB | 0 | |
Security
- ⚠️ Make single-use download routes of
ui.download(nicegui.io),app.add_static_file()andapp.add_media_file()unguessable and truly single-use (GHSA-p92q-2755-mhgh by @hsnyus-09, @evnchn, @falkoschindler)
New features and enhancements
- Add a decoration API to
ui.codemirror(nicegui.io) for marking ranges, styling lines, hiding or replacing text and inserting text widgets without modifying the document (#5991 by @Jepson2k, @evnchn, @falkoschindler) - Warn when
NICEGUI_PORT,NICEGUI_HOSTorNICEGUI_PROTOCOLare set in the environment but ignored, sinceui.run(nicegui.io) only uses them internally (#6301, [#6337] by @evnchn, @Zeeshan-Chaudhry, @SaadZahem, @falkoschindler)
Bugfixes
- Cancel
button.clicked()and theinitialized()awaits ofui.scene(nicegui.io),ui.scene_viewandui.leaflet(nicegui.io) when the client is deleted instead of stranding one task per abandoned page load (#6232, [#6271], [#6277], [#6294] by @evnchn, @SaadZahem, @falkoschindler) - Fix awaited
ui.run_javascriptreporting a bogus timeout or leaking its task when the client is deleted (#6278, [#6295] by @falkoschindler, @SaadZahem, @evnchn) - Cancel awaited
Event.emitted()(nicegui.io) when the client is deleted (#6311, [#6322] by @falkoschindler, @chiliec, @evnchn) - Fix page builders returning HTTP 500 "No response returned." when their task is cancelled (#6296, [#6297] by @evnchn, @SaadZahem, @falkoschindler)
- Fix
app.handle_exceptionreplacing the real exception with aRuntimeErrorafter the client has been deleted, and keep running the remaining exception handlers when one of them fails (#6230, [#6272], [#6328] by @evnchn, @SaadZahem, @falkoschindler) - Fix half-built
ui.sub_pagesandui.select(nicegui.io) elements remaining registered after their constructor raised (#6313, [#6323], [#6330] by @falkoschindler, @gyanu2507, @evnchn) - Fix
ui.sub_pagesstaying in the SPA instead of loading pages registered viaapp.include_router()or reached with a query string or fragment; apage('/')on a prefixedAPIRouternow registers the bare prefix without trailing slash, old URLs are redirected (#6281, [#6288] by @falkoschindler, @DineshThumma9, @evnchn) - Fix
ui.select(nicegui.io),ui.radio(nicegui.io) andui.toggle(nicegui.io) rebuilding their options for every prop write during construction, which made large option lists slow to create (#6317, [#6324] by @benthie, @evnchn, @falkoschindler) - Fix sortable containers not working when created in a callback or inside a dialog (#6318, [#6326] by @bodacious-bill, @python-and-novella, @evnchn, @falkoschindler)
- Fix
ui.codemirror(nicegui.io) andui.editor(nicegui.io) losing their HTML id, which broke tooltips (#6315, [#6316] by @python-and-novella, @evnchn, @falkoschindler) - Fix
ui.codemirror(nicegui.io) line anchors and tooltips set together with a new value being applied to the old document, and reject line anchors on fractional lines (#6335, [#6336], [#6285] by @falkoschindler, @Jepson2k, @evnchn) - Fix
ui.scene.move_camera()recreating the camera controls when the up vector is unchanged, which discarded user configuration and misaligned TrackballControls after a window resize (#6241, [#6242], [#6247] by @ptruka, @evnchn, @falkoschindler) - Skip the page re-render when
ui.on()(nicegui.io) registers a global event after the first render, which caused flicker and lost client-side state (#6248, [#6249] by @amks1, @evnchn, @falkoschindler) - Keep the tab alive when a stale socket disconnects after the browser has already reconnected (#6237 by @evnchn, @falkoschindler)
- Pin each client to a single tab ID so that replayed handshakes can no longer create unbounded tab storages (#6279 by @evnchn, @falkoschindler)
- Close the storage file when a backup task is cancelled, and fix queued lazy tasks losing their
await_on_shutdownprotection (#6263, [#6329] by @evnchn, @falkoschindler) - Fix
ui.popup(nicegui.io) andui.menu(nicegui.io) not appearing in Firefox 153+ (#6221 by @SHDocter, @evnchn, @falkoschindler) - Make
ui.query(nicegui.io)'sstyle(replace=...)replace the existing styles instead of merging them (#6182 by @evnchn, @falkoschindler) - Fix Quasar overriding Tailwind's monospace font stack for
ui.code(nicegui.io) and otherpreelements, which fell back to Courier on Safari (#6340, [#6342] by @tcjennings, @falkoschindler, @evnchn)
Documentation
- Fix the
on_changedocumentation ofui.slider(nicegui.io) andui.range(nicegui.io), which fire while dragging and not only on release (#6291, [#6292] by @KeurKeur, @evnchn, @falkoschindler)
Testing
- Fix
nicegui_reset_globals()not clearingSlot.stacks, which broke laterUsertests after an element was built outside a page (#6314, [#6334] by @evnchn, @jnchen, @falkoschindler)
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!