3 min read

Introducing standby

We are excited to announce the standby package. It allows you to easily create alerts, notifications, tooltips and loading screens in Shiny. The package was developed as part of our internal tools for developing shiny apps and we are glad to share it with the rest of the community.

Installation

# Install release version from CRAN
install.packages("standby")

# Install development version from GitHub
# install.packages("devtools")
devtools::install_github("rsquaredacademy/standby")

Loading Screens

To use spinners/loaders from standby in your Shiny application, include the following in the UI part of the app:

  • Include the dependencies using the appropriate use* functions (useSpinkit() in the below example).
  • Wrap the target output using corresponding rendering function (spinkit() in the below example).

Example

library(shiny)
library(standby)

ui <- fluidPage(

  standby::useSpinkit(), # include dependencies
  fluidRow(
    standby::spinkit(plotOutput("plot1")), # wrap output inside loader
    actionButton("render", "Render")
  )

)

server <- function(input, output, session) {

    output$plot1 <- renderPlot({
      input$render
      Sys.sleep(3)
      hist(mtcars$mpg)
    })

}

shinyApp(ui, server)

Details

The below table displays the dependency and rendering functions along with references:

Index Dependency Render Reference
1 useThreeDots() threeDots() Three Dots
2 useSpinkit() spinkit() SpinKit
3 useVizLoad() vizLoad() Loading Visualization
4 useSpinners() spinners() Spinners
5 useLoaders() loaders() Loaders

Alerts and Notifications

To use alerts or notifications from buzz in your Shiny application, follow the below steps:

  • Include the dependencies in the UI part of the app using the appropriate use* functions (useToast() in the below example).
  • Include the corresponding rendering function in the Server part of the app (toast() in the below example).

Example

library(shiny)
library(standby)
ui <- fluidPage(
  useBootBox(), # include dependencies
  actionButton(inputId = "notify",
               label   = "Show Notification")
)
server <- function(input, output, session) {
  observeEvent(input$pnotify, {
    bootBox(class = "rubberBand") # display the alert
  })
}
shinyApp(ui, server)

Details

The below table displays the dependency and rendering functions along with references:

Index Dependency Render Reference
1 useAlertify() alertify_alert() Alertify
2 useAlertify() alertify_notify() Alertify
3 useBootBox() bootBox() BootBox
4 useMicroTip() microTip() MicroTip
5 useNS() notice() Notification Styles
6 useNotify() notify() PNotify
7 useTingle() tingle() Tingle
8 useToast() toast() iziToast

Learning More

Inspiration & Acknowledgement

standby takes inspiration from the following wonderful packages:

We found the following books extremely helpful while working on the package and in general for developing Shiny apps. We would like to express out heartful gratitude to the respective authors for making them available for free to the community.

Getting Help

If you encounter a bug, please file a minimal reproducible example using reprex on github. For questions and clarifications, use StackOverflow.

Feedback

All feedback is welcome. Issues (bugs and feature requests) can be posted to github tracker. For help with code or other related questions, feel free to reach out to us at .