Choose your language
R Shiny course
More than 2 million students worldwide

R Shiny course

4.3

Master R Shiny from the ground up and build interactive, data-driven web applications entirely in R. This course takes you from your first app to production-grade deployments with authentication, CI/CD pipelines, and scalable architecture. Whether you're an analyst, data scientist, or R developer, you'll gain the skills to turn raw data into polished, shareable tools.

Dedika for Business

What you will learn:

You will learn how to design and build full-featured Shiny applications, starting with core R syntax and the Shiny framework and advancing to modular app architecture and enterprise deployment. You will master Shiny's reactive programming model, create rich user interfaces with dynamic inputs and outputs, and integrate tidyverse data wrangling directly into reactive workflows. The course covers interactive visualizations using plotly and leaflet, structured logging, and automated testing with shinytest2. You will also explore performance tuning techniques including caching, asynchronous programming, and load testing to keep your apps fast under real user traffic.

How you study in practice R Shiny course

How you practise R Shiny course

For companies looking to train their team

With Dedika for Business, the course includes exercises and examples tailored to your own business and the way your company needs.

Click here

Course Content

8 Chapters • 39 LessonsDuration between 4 and 360 hours (you decide)

Chapter 1See details

Introduction to R and Shiny

  • Lesson 1 • Setting Up the R Environment

    Install R, RStudio, and essential packages needed for Shiny development. Establishes the baseline toolchain for all subsequent chapters.

  • Lesson 2 • Anatomy of a Shiny App

    Examine the ui, server, and shinyApp components that form every Shiny application. Connects R fundamentals to the Shiny execution model.

  • Lesson 3 • Core R Syntax for Shiny

    Review vectors, data frames, functions, and control flow as used inside Shiny apps. Provides the R fluency required before writing reactive code.

  • Lesson 4 • Running Your First Shiny App

    Create and launch a minimal app that displays static text and a plot. Confirms the environment is correctly configured and demystifies the run cycle.

Chapter 2See details

Building User Interfaces

  • Lesson 1 • Layout Functions and Page Types

    Explore fluidPage, navbarPage, and fillPage to control overall app structure. Choosing the right page type determines how content scales across screen sizes.

  • Lesson 2 • Input Widgets Catalog

    Implement text, numeric, date, select, checkbox, radio, and slider inputs. Each widget maps to a named input value consumed by the server function.

  • Lesson 3 • Styling the UI with HTML and CSS

    Apply inline styles, custom CSS files, and Shiny's HTML helper functions to refine visual appearance. Prepares students for theming with bslib in later chapters.

  • Lesson 4 • Sidebar and Panel Layouts

    Use sidebarLayout, sidebarPanel, and mainPanel to separate controls from output. This pattern is the most common Shiny UI convention and underpins later dashboard work.

  • Lesson 5 • Dynamic UI Elements

    Generate UI components conditionally using uiOutput and renderUI. Enables interfaces that adapt to user state without full page reloads.

Chapter 3See details

Reactivity Fundamentals

  • Lesson 1 • Reactive Expressions

    Create reactive() expressions to cache intermediate computations shared across multiple outputs. Reduces duplicated code and improves app performance.

  • Lesson 2 • Reactive Values and State

    Store mutable application state using reactiveValues() and reactiveVal(). Enables features like undo history, counters, and session-level data accumulation.

  • Lesson 3 • Observers and Side Effects

    Use observe() and observeEvent() to trigger side effects such as writing files or updating inputs. Distinguishes reactive producers from reactive consumers.

  • Lesson 4 • Isolating and Controlling Reactivity

    Apply isolate(), req(), and validate() to control when and how reactive code executes. Prevents premature execution and provides user-friendly error messages.

  • Lesson 5 • The Reactive Execution Model

    Trace how Shiny tracks dependencies and schedules re-execution when inputs change. Understanding this model prevents redundant computation and silent bugs.

Chapter 4See details

Outputs and Rendering Functions

  • Lesson 1 • Rendering Static and Interactive Plots

    Produce base R, ggplot2, and plotly visualizations inside Shiny output slots. Interactive plots enable click and hover events used in later chapters.

  • Lesson 2 • Notifications and Progress Indicators

    Provide user feedback during long operations using showNotification() and withProgress(). Improves perceived performance and communicates app state clearly.

  • Lesson 3 • File Downloads and Uploads

    Implement downloadHandler() for CSV and PDF exports and fileInput() for user-supplied data. Closes the data ingestion and export loop in a complete app.

  • Lesson 4 • Text and Verbatim Output

    Display dynamic strings and raw R output using renderText() and renderPrint(). Forms the simplest output type and validates that reactivity is wired correctly.

  • Lesson 5 • Tables with DT and gt

    Render interactive data tables using the DT package and formatted static tables with gt. Tables are the most common data output in business Shiny apps.

Chapter 5See details

Data Wrangling Inside Shiny

  • Lesson 1 • Filtering Data Reactively

    Apply dplyr filter() inside reactive expressions driven by widget inputs. Reactive filtering is the core pattern for exploratory data apps.

  • Lesson 2 • Handling Missing and Dirty Data

    Detect and handle NA values, type mismatches, and malformed inputs before rendering. Prevents cryptic errors and ensures outputs remain meaningful.

  • Lesson 3 • Connecting Data Sources to Apps

    Load CSV, Excel, and RDS files at startup or reactively based on user input. Proper data loading strategy determines app startup time and memory use.

  • Lesson 4 • Transforming and Summarizing Data

    Use mutate(), group_by(), and summarize() inside reactive pipelines to derive new metrics. Transformed data feeds both plot and table outputs simultaneously.

  • Lesson 5 • Working with Databases via DBI

    Connect to SQL databases using DBI and execute parameterized queries from reactive inputs. Enables apps to query large datasets without loading them into memory.

Chapter 6See details

App Organization and Modules

  • Lesson 1 • Structuring Large Shiny Projects

    Organize code across R/, www/, and data/ directories following the golem and standard conventions. Good structure reduces onboarding time and merge conflicts.

  • Lesson 2 • Building Apps as R Packages

    Wrap a Shiny app inside an R package using golem to gain documentation, testing, and dependency management. Package structure is the industry standard for production apps.

  • Lesson 3 • Passing Data Between Modules

    Return reactive values from modules and pass them as arguments to sibling modules. Enables complex multi-module data flows without global state.

  • Lesson 4 • Introduction to Shiny Modules

    Encapsulate UI and server logic into namespaced module functions using moduleServer(). Modules prevent ID collisions and enable component reuse across apps.

  • Lesson 5 • Testing Shiny Apps with shinytest2

    Write snapshot and interaction tests using the shinytest2 package to catch regressions. Automated tests are essential before deploying updated apps to production.

Chapter 7See details

Performance and Scalability

  • Lesson 1 • Optimizing Data and Rendering

    Reduce data transferred to the browser by pre-aggregating server-side and using efficient output formats. Smaller payloads directly improve time-to-interactive for end users.

  • Lesson 2 • Asynchronous Programming with Promises

    Offload slow operations to background processes using the promises and future packages. Async execution prevents one user's slow query from blocking all other sessions.

  • Lesson 3 • Profiling App Performance

    Use profvis and reactlog to identify slow reactive chains and rendering bottlenecks. Profiling before optimizing prevents wasted effort on non-critical code paths.

  • Lesson 4 • Scaling with Shiny Server and Load Testing

    Configure worker processes and conduct load tests using shinyloadtest to find capacity limits. Load testing before launch prevents outages under real user traffic.

  • Lesson 5 • Caching with bindCache and memoise

    Apply bindCache() to render functions and memoise() to pure R functions to avoid redundant computation. Caching is the highest-leverage optimization for data-heavy apps.

Chapter 8See details

Deployment and Production Readiness

  • Lesson 1 • Authentication and Access Control

    Restrict app access using Posit Connect permissions, shinymanager, or OAuth integrations. Protects sensitive data and satisfies organizational security requirements.

  • Lesson 2 • Deploying to shinyapps.io

    Publish apps to the managed shinyapps.io platform using rsconnect and configure instance settings. The fastest path from local app to a publicly accessible URL.

  • Lesson 3 • Logging and Error Monitoring

    Implement structured logging with the logger package and capture runtime errors for alerting. Observability is essential for diagnosing issues in production without user reports.

  • Lesson 4 • Continuous Deployment Pipelines

    Automate testing and deployment using GitHub Actions and rsconnect CLI on every code push. CI/CD eliminates manual deployment steps and enforces quality gates.

  • Lesson 5 • Self-Hosted Deployment Options

    Deploy apps on Posit Connect or open-source Shiny Server on Linux virtual machines. Self-hosting provides data residency control required by many organizations.

Certification

Your valid completion certificate

This course is for you:

  • Data analysts: ready to replace static exports with interactive, shareable tools.

  • Academic researchers: wanting to share findings through explorable, browser-based interfaces.

  • Business intelligence developers: looking to add R-native app delivery to their skill set.

  • R programmers: eager to move beyond scripts into structured, deployable application code.

  • Statisticians: needing a practical way to let clients explore models without writing code.

  • Career changers: entering data roles and wanting a concrete, demonstrable full-stack project.

What our students say

Your classes are perfect. I purchased the one-year package and finally have the opportunity to follow various topics of interest without needing to switch platforms... I thank you for everything you do, I've already recommended you to other people...
Giulio Carlo
Giulio CarloDigital Marketing Student
I like how the lessons are straight to the point and how I can change chapters and skip content I don't need.
Mariana Ferres
Mariana FerresPhotography Student
I like the content and the presentation style and video transcription, which speeds up the process!
Luciana Alvarenga
Luciana AlvarengaNail Design Student
The platform is fast, simple to use. The diversity of content and complementary videos really help with learning.
André Felipe
André FelipePrompt Engineering Student

Top training programs

FAQ

Who is Dedika?

Is the certificate valid in Canada?

Are the courses free?

What is the course workload?

What are the courses like?

How do the courses work?

What is the duration of the courses?

What is the cost or price of the courses?

What is an EAD or online course and how does it work?

PDF Course