New features and enhancements
- Make JavaScript calls optionally awaitable (#1471, #1709, #1797 by @falkoschindler)
- Introduce react-like
ui.state
to be used withui.refreshable
(#1410, #1438, #1447, #1489 by @qingant, @falkoschindler) - Move Highcharts dependency into a separate nicegui-highcharts package to avoid the need for a license for commercial projects (#1850, #1863 by @rodja, @falkoschindler)
- Refactor
globals
module (#1708, #1847 by @falkoschindler) - Use FastAPI's new
lifespan
API (#1849 by @rj-vera, @rodja, @falkoschindler) - Use flex layout per default for layout elements (#1614, #1796 by @youyou015, @natankeddem, @falkoschindler)
- Replace netifaces with much simpler (and better) ifaddr (#1856 by @retsyo, @rodja)
- Convert
ui.timer
into an element (#1710, #1829 by @falkoschindler) - Update httpx dependency (#1820 by @tscheburaschka, @falkoschindler)
- Consistently mark methods private if not part of the public API (#1326 by @falkoschindler)
- Remove deprecated APIs (#1711 by @falkoschindler)
Bugfixes
- Fix AG Grid bug with hidden cells by upgrading to new version (#1860 by @rhkarls, @natankeddem, @falkoschindler)
Documentation
- Add LangChain handler to the "Chat with AI" example (#1832 by @cam-barts)
Breaking changes and migration guide
No need to await JavaScript calls
When using run_javascript
, run_method
, call_api_method
and call_column_api_method
,
you can decide whether the client should respond with a return value or not by awaiting the method call or not.
The method will automatically inform the client.
The respond
parameter of run_javascript
is not used anymore. See https://nicegui.io/documentation/run_javascript
ui.chart
is now ui.highchart
and requires the package "nicegui-highchart"
Highcharts requires you to buy a license for commercial products if the code is installed on your machine.
That's why we made it an optional package.
Install with pip install nicegui[highcharts]
.
The globals
module is gone
We removed the ugly globals
module, which was never intended to be public API,
but might have been used nonetheless.
- If you need the app configuration, use
app.config
instead (usingfrom nicegui import app
to get the app object). - If you need the current client or slot, use the
context
module instead. - If you need the client dictionary, use
Client.instances
instead.
FastAPI's new lifespan API
Since FastAPI's @on_event("startup")
and @on_event("shutdown")
are deprecated,
NiceGUI switched to the new lifespan API.
You can still use app.on_startup()
and app.on_shutdown()
.
Layout elements use flex layout by default
Before you needed to use ui.column
inside, e.g., ui.tab_panel
and other elements to get proper alignment, padding and spacing.
Now most UI elements provide reasonable default so that the content looks like in a ui.row
or ui.column
.
Upgraded third-party dependencies
- vue: 3.3.4 → 3.3.6
- quasar: 2.12.2 → 2.13.0
- tailwindcss: 3.3.2 (unchanged)
- socket.io: 4.7.1 → 4.7.2
- es-module-shims: 1.7.3 → 1.8.0
- aggrid: 30.0.3 → 30.2.0
- echarts: 5.4.3 (unchanged)
- mermaid: 10.2.4 → 10.5.1
- nipplejs: 0.10.1 (unchanged)
- plotly: 2.24.3 → 2.27.0
- three: 0.154.0 → 0.157.0
- tween: 21.0.0 (unchanged)
- vanilla-jsoneditor: 0.18.0 → 0.18.10