Any Shiny output that uses withSpinner() will automatically show a spinner
while it's recalculating. Use showSpinner() and hideSpinner() to manually
trigger the spinner on-demand.
Arguments
- id
The ID of the Shiny output. The corresponding output must have been wrapped in
withSpinner()in the UI.- expr
(optional) An R expression to run while showing the spinner. The spinner will automatically get hidden when this expression completes.
Examples
if (interactive()) {
library(shiny)
#--- Example 1: Using showSpinner/hideSpinner ---
shinyApp(
ui = fluidPage(
actionButton("show", "Show"),
actionButton("hide", "Hide"),
withSpinner(plotOutput("plot"))
),
server = function(input, output) {
output$plot <- renderPlot({
plot(runif(10))
})
observeEvent(input$show, {
showSpinner("plot")
})
observeEvent(input$hide, {
hideSpinner("plot")
})
}
)
#--- Example 2: Using showSpinner with expr ---
some_slow_function <- function() {
Sys.sleep(2)
}
shinyApp(
ui = fluidPage(
actionButton("show", "Show"),
withSpinner(plotOutput("plot"))
),
server = function(input, output) {
output$plot <- renderPlot({
plot(runif(10))
})
observeEvent(input$show, {
showSpinner("plot", { some_slow_function() })
})
}
)
}