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 pkgs@rsquaredacademy.com.