New features and improvements
-
When busy indicators are enabled (i.e.,
useBusyIndicators()
is in the UI), Shiny now: -
Improve collection of deep stack traces (stack traces that are tracked across steps in an async promise chain) with
{coro}
async generators such as{elmer}
chat streams. Previously, Shiny treated each iteration of an async generator as a distinct deep stack, leading to pathologically long stack traces; now, Shiny only keeps/prints unique deep stack trace, discarding duplicates. (#4156) -
Added an example to the
ExtendedTask
documentation. (@daattali #4087)
Bug fixes
-
Fixed a bug in
conditionalPanel()
that would cause the panel to repeatedly show/hide itself when the provided condition was not boolean. (@kamilzyla, #4127) -
Fixed a bug with
sliderInput()
when used as a range slider that made it impossible to change the slider value when both handles were at the maximum value. (#4131) -
dateInput()
anddateRangeInput()
no longer send immediate updates to the server when the user is typing a date input. Instead, it waits until the user presses Enter or clicks out of the field to send the update, avoiding spurious and incorrect date values. Note that an update is still sent immediately when the field is cleared. (#3664) -
Fixed a bug in
onBookmark()
hook that caused elements to not be excluded from URL bookmarking. (#3762) -
Fixed a bug with stack trace capturing that caused reactives with very long async promise chains (hundreds/thousands of steps) to become extremely slow. Chains this long are unlikely to be written by hand, but
{coro}
async generators and{elmer}
async streaming were easily creating problematically long chains. (#4155) -
Duplicate input and output IDs -- e.g. using
"debug"
for two inputs or two outputs -- or shared IDs -- e.g. using"debug"
as theinputId
for an input and an output -- now result in a console warning message, but not an error. Whendevmode()
is enabled, an informative message is shown in the Shiny Client Console. We recommend all Shiny devs enabledevmode()
when developing Shiny apps locally. (#4101) -
Updating the choices of a
selectizeInput()
viaupdateSelectizeInput()
withserver = TRUE
no longer retains the selected choice as a deselected option if the current value is not part of the new choices. (@dvg-p4 #4142) -
Fixed a bug where stack traces from
observeEvent()
were being stripped of stack frames too aggressively. (#4163)