Resources

An opinionated list of guides or tutorials for Shiny and helping packages

Module Material

Script templates and intermediate scripts prepared for this module can be forked or downloaded from github.

Shiny

Shiny Gallery’s Shiny Demo: interactive examples of various Shiny features (individual widgets, layout styles, and reactivity). The source code is displayed as you interact with the examples. It’s a great way to learn!

Official Cheatsheet: A two-pager of Shiny utilities.

Mastering Shiny Book: A book (in progress) by Hadley Wickham. See the Getting Started section. For those who use the tidyverse, it also includes a section on the latest version of tidy evaluation–essential for programming with packages like dplyr or ggplot2.

Datacamp: Building Web Applications with Shiny in R: 4 hours of Shiny instruction and hands-on activity. Go more in-depth with reactivity and learn how to use the isolate() function. Courses on Shinydashboard and Flexdashboard are also available via Datacamp.

Visualization Packages

DT

DT is an R adaptation of the JavaScript library DataTables. It generates an HTML table with advanced features such as filtering, pagination, sorting, and many others.

Other htmlwidgets

DT like Plotly and Leaflet are part of the htmlwidgets family, an effort to bring the best of JavaScript visualization into R to create interactive visualizations. htmlwidgets itself is a package for developers to bind various JS packages to R.

Reactable

Another interactive table package. On the surface, basic use of reactable might not be that different than DT, but the ability to create expandable rows and nested tables, and the conditional styling examples really makes this package stand out.

To see a Shiny app with a reactable table in the wild, see this reactable example, code is available here.

Other

As your app grows in complexity, here are some other popular packages and techniques to consider:

shinyjs

JS is a key to interactivity. To add JavaScript functionality to your app without learning JavaScript, you can use the shinyjs package.

Shiny Modules

Use Shiny Modules as way to manage growing, repetitive code by functionalizing your UI and Server elements. Modules represent a part of a larger app and are added as a component to your Shiny app.