Skip to main content

Deploy

Published

2026-11-06

Expand the callout boxes below to review the previous testing chapters:

Specifications dives into:

The applications in Chapter 15 (Specifications) can be accessed with the launch() or get() functions from the shinypak R package:

# install.packages('pak')
pak::pak('mjfrigaard/shinypak')
library(shinypak)

Chapter 15 applications:

list_apps(regex = '^15')
## # A tibble: 1 ร— 2
##   branch   last_updated       
##   <chr>    <dttm>             
## 1 15_specs 2026-10-13 17:58:51

Test tools covers:

The applications in Chapter 16 (Test tools) can be accessed with the launch() or get() functions from the shinypak R package:

# install.packages('pak')
pak::pak('mjfrigaard/shinypak')
library(shinypak)

Chapter 16 applications:

list_apps(regex = '^16')
## # A tibble: 4 ร— 2
##   branch              last_updated       
##   <chr>               <dttm>             
## 1 16.1_test-help      2026-10-13 17:58:52
## 2 16.2_test-data      2026-10-13 17:58:52
## 3 16.3_test-logger    2026-10-13 17:58:52
## 4 16.4_test-snapshots 2026-10-13 17:58:53

Testing modules includes strategies for:

The applications in Chapter 17 (Testing modules) can be accessed with the launch() or get() functions from the shinypak R package:

# install.packages('pak')
pak::pak('mjfrigaard/shinypak')
library(shinypak)

Chapter 17 applications:

list_apps(regex = '^17')
## # A tibble: 1 ร— 2
##   branch          last_updated       
##   <chr>           <dttm>             
## 1 17_test-modules 2026-10-13 17:58:53

The applications in Chapter 18 (System tests) can be accessed with the launch() or get() functions from the shinypak R package:

# install.packages('pak')
pak::pak('mjfrigaard/shinypak')
library(shinypak)

Chapter 18 applications:

list_apps(regex = '^18')
## # A tibble: 1 ร— 2
##   branch         last_updated       
##   <chr>          <dttm>             
## 1 18_test-system 2026-10-13 17:58:53

Deploy

This section covers six ways to deploy a Shiny app-package: 1) publishing to Posit Connect Cloud, 2) Docker images and containers, 3) using GitHub Actions for Continuous Integration (CI) and Continuous Deployment (CD), 4) running the app in the browser with webR and shinylive, 5) building desktop installers with shinyelectron, and 6) building and deploying a package website with pkgdown.

Docker

Docker covers how using Docker can simplify setting up your R environment and reduce the โ€œit works on my machineโ€ problem:

GitHub Actions

Continuous Integration/Continuous Deployment (CI/CD) can be implemented for your Shiny app-package using GitHub actions. This chapter covers the following workflows:

webR

webR runs R in the browser, so a shinylive app needs no server. This chapter covers:

Desktop apps

shinyelectron packages a Shiny app as a desktop installer. This chapter covers:

Package websites

pkgdown helps us easily create websites for our app-packages. This chapter covers: