shiny breaking changes

cran

3 curated breaking changes across major versions of shiny. Use this as a migration checklist before bumping dependencies.

3
changes
Breaking changes by transition
  • v1.7.5.1 \u2192 v1.8.0breaking

    Closed #3899: The JS function `Shiny.bindAll()` is now asynchronous. This change is driven by the recent push toward making dynamic UI rendering asynchronous, which is necessary for [shinylive](https://shinylive.io/r) (and should've happened when it was first introduced in Shiny v1.7.5). The vast majority of existing `Shiny.bindAll()` uses should continue to work as before, but some cases may break if downstream code relies on it being synchronous (i.e., blocking the main thread). In this case,

  • v1.7.5.1 \u2192 v1.8.0breaking

    Since `renderContent()` calls `bindAll()` (after it inserts content), it now returns a `Promise<void>` instead of `void`, which can be useful if downstream code needs to wait for the binding to complete.

  • v1.11.1 \u2192 v1.12.0breaking

    The return value of `actionButton()` and `actionLink()` now wraps `label` and `icon` in an additional HTML container element. This allows `updateActionButton()` and `updateActionLink()` to distinguish between the `label` and `icon` when making updates, and allows spacing between `label` and `icon` to be more easily customized via CSS.

API access

Get this data programmatically \u2014 free, no authentication.

curl https://depscope.dev/api/breaking/cran/shiny
shiny breaking changes — CRAN migration guide | DepScope