New features
-
Added AI-powered test generator for Shiny applications. Use
shiny add testto automatically generate comprehensive Playwright tests for your apps using AI models from Anthropic or OpenAI. (#2041) -
ui.sidebar()is now interactively resizable. (#2020) -
ui.sidebar()gains afillableargument to support vertical fill behavior in sidebars. (#2077) -
Added
ui.insert_nav_panel(),ui.remove_nav_panel(), andui.update_nav_panel()to support dynamic navigation. (#90) -
navset_card_*()now gains afull_screenoption. (#1451) -
ui.update_*()functions now acceptui.TagChild(i.e., HTML) as input to thelabelandiconarguments. (#2020) -
The
.output_*()methods of theClientDataclass (e.g.,session.clientdata.output_height()) can now be called without anidwhen called inside a@renderfunction. (#1978) -
playwright.controller.InputActionButtongains aexpect_icon()method. As a result, the already existingexpect_label()no longer includes the icon. (#2020)
Breaking changes
-
The
ui.Chatandui.MarkdownStreamcomponents are now imported from the newshinychatlibrary. Future versions ofshinychatwill likely deprecate and remove some features fromChat. If you still want to use those features with the latest Shiny, we suggest pinningshinychatto it's initial release (v0.1.0). (#2051) -
express.ui.insert_accordion_panel()'s function signature has changed to be more ergonomic. Now you can pass thepanel_titleandpanel_contentsdirectly instead ofui.hold()ing theui.accordion_panel()context manager. (#2042)
Improvements
-
Improved the styling and readability of markdown tables rendered by
ui.Chat()andui.MarkdownStream(). (#1973) -
input_date(),input_date_range(),update_date(), andupdate_date_range()now support""for values, mins, and maxes. In this case, no date will be specified on the client. (#1713) (#1689) -
Restricted the allowable types of the
choicesparameter ofinput_select(),input_selectize(),update_select(), andupdate_selectize()to actual set of allowable types (previously, the type was suggesting HTML-like values were supported). (#2048) -
Added module support for
session.clientdatamethods. This allows you to access client data values in Shiny modules without needing to namespace the keys explicitly. (#1978) -
Added
timeout_secsparameter tocreate_app_fixtureto allow testing apps with longer startup times. (#2033) -
Add support for selecting menu items in
Navsetcontrollers to improve dropdown navigation test coverage. (#2066) -
Python 3.13 is now offically supported and tested. (#1711)
Bug fixes
-
Fixed issue where apps run in Workbench were unexpectedly crashing. Apps running in Workbench will now have
ws_per_message_deflate=Falseenforced. (#2005) -
include_js()andinclude_css()now work as expected in multi-user settings and also when multiple files from the same directory are included. (#2061, #2069) -
Fixed numerous issues related to programmatically updating selectize options. (#2053)
update_selectize(options=...)no longer gets ignored whenserver=False(the default).update_selectize(options=...)now works as expected in a module.
-
Fixed an issue with
update_selectize(server=True)not properly displaying labels with HTML reserved characters like "&" (#1330) -
Fixed an issue with
ui.Chat()sometimes wanting to scroll a parent element. (#1996) -
Fix several issues with bookmarking error reporting and documentation. (#2076, #1984, #1983)
-
input_date()andinput_date_range()once again use the client's (not the server) current date as the defaultvalue. (#2060) -
Fixed false positive warning in
layout_columns()about number of widths vs elements. (#1704) -
Fixed
set()method of theInputSelectizetest controller so it clears existing selections before applying new values. (#2024)
Deprecations
-
ui.update_navs()is deprecated in favor ofui.update_navset(). (#2047) -
ui.panel_well()is deprecated in favor ofui.card(). (#2038) -
selectize,remove_button, andoptionsparameters ofui.input_select()have been deprecated; useui.input_selectize()instead. (Thanks, @ErdaradunGaztea!) (#1947)