Creating and Designing Interactive Web Applications with Shiny


Shiny is an R package which enables users to turn an R analysis into an interactive web application. Shiny is simple to get started with for an R programmer, because it requires no knowledge of web technologies such as HTML, CSS, or Javascript. However, Shiny is also immensely powerful. It uses a reactive programming design so that results are automatically updated when only when their dependencies change.

In this course, we will introduce and motivate why Shiny should be used. We will then discuss the structure and syntax of a Shiny app, and begin exploring the different inputs and outputs available to us when constructing them. Following this, we will cover reactive programming and user interface design and apply it to our Shiny apps. We will wrap up with some information on debugging and addon packages, before launching to a Shiny workshop in which we will help people construct their own Shiny app from scratch.


  • Knowledge of R Programming
  • Basic understanding of web design techniques
  • R 3.4.x
  • RStudio 1.0.x


1. Requirements / Setup – In this section, we will go over the software needed in order to work with Shiny. We will also go over what prior knowledge is assumed in order to get the most out of this course.

2. Getting Started with Shiny – Here, we motivate the use of Shiny by looking at examples of apps from the web. We focus specifically on applications designed in house, which are available from our Shiny Laboratory page.

3. Creating an App – The basics of Shiny app creation using RStudio are introduced. We create a demo application and begin analyzing the functionality and structure, along with basic concepts of its reactive design.

4. Structure of a Shiny App – This section focuses on the programmatic structure of Shiny applications, specifically the relationship between the User Interface (UI) and the Server. Two possible app structures are introduced.

5. Inputs and Outputs – The fun begins! We explore five commonly used inputs for user interaction, and four commonly used outputs for displaying the results of the analysis. We used these inputs and outputs to extend the functionality of our demo application.

6. Reactive Programming – A more in-depth exploration into reactive programming concepts as it pertains to Shiny app development. We use the techniques developed to refine our application.

7. User Interface Design – Here, we focus on principles of sound user interface design. We cover tabs, navbars, Shiny themes, and conditional panels to learn how to properly design a good web-based Shiny interface.

8. Debugging Shiny – We introduce two methods for debugging Shiny applications, using cat statements, and using the javascript reactlog. We use these to explore the execution architecture of a Shiny app.

9. Deploying Shiny – Several methods for the deployment of Shiny applications are introduced, including, Shiny Server, and RStudio Connect.

10. Extending Shiny – To conclude the course, we introduce and overview some cool extensions and use cases for Shiny. These include the embedding of Shiny applications within RMarkdown documents, and the use of the Flex Dashboard package for creating an interactive Shiny dashboard.


Back to Top