New features
-
Added AI-powered test generator for Shiny applications. Use
shiny add test
to 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 afillable
argument 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_screen
option. (#1451) -
ui.update_*()
functions now acceptui.TagChild
(i.e., HTML) as input to thelabel
andicon
arguments. (#2020) -
The
.output_*()
methods of theClientData
class (e.g.,session.clientdata.output_height()
) can now be called without anid
when called inside a@render
function. (#1978) -
playwright.controller.InputActionButton
gains aexpect_icon()
method. As a result, the already existingexpect_label()
no longer includes the icon. (#2020)
Breaking changes
-
The
ui.Chat
andui.MarkdownStream
components are now imported from the newshinychat
library. Future versions ofshinychat
will likely deprecate and remove some features fromChat
. If you still want to use those features with the latest Shiny, we suggest pinningshinychat
to 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_title
andpanel_contents
directly 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
choices
parameter 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.clientdata
methods. This allows you to access client data values in Shiny modules without needing to namespace the keys explicitly. (#1978) -
Added
timeout_secs
parameter tocreate_app_fixture
to allow testing apps with longer startup times. (#2033) -
Add support for selecting menu items in
Navset
controllers 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=False
enforced. (#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 theInputSelectize
test 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
, andoptions
parameters ofui.input_select()
have been deprecated; useui.input_selectize()
instead. (Thanks, @ErdaradunGaztea!) (#1947)