Busy indicators provide a visual cue to users when the server is busy calculating outputs or otherwise performing tasks (e.g., producing downloads). When enabled, a spinner is shown on each calculating/recalculating output, and a pulsing banner is shown at the top of the page when the app is otherwise busy. Busy indication is enabled by default for UI created with bslib, but must be enabled otherwise. To enable/disable, include the result of this function in anywhere in the app's UI.

useBusyIndicators(..., spinners = TRUE, pulse = TRUE)

Arguments

...

Currently ignored.

spinners

Whether to show a spinner on each calculating/recalculating output.

pulse

Whether to show a pulsing banner at the top of the page when the app is busy.

Details

When both spinners and pulse are set to TRUE, the pulse is automatically disabled when spinner(s) are active. When both spinners and pulse are set to FALSE, no busy indication is shown (other than the graying out of recalculating outputs).

See also

busyIndicatorOptions() for customizing the appearance of the busy indicators.

Examples

if (FALSE) { # rlang::is_interactive()

library(bslib)

ui <- page_fillable(
  useBusyIndicators(),
  card(
    card_header(
      "A plot",
      input_task_button("simulate", "Simulate"),
      class = "d-flex justify-content-between align-items-center"
    ),
    plotOutput("p"),
  )
)

server <- function(input, output) {
  output$p <- renderPlot({
    input$simulate
    Sys.sleep(4)
    plot(x = rnorm(100), y = rnorm(100))
  })
}

shinyApp(ui, server)
}