A minimalistic router for your Shiny apps.

Travis build status codecov

Now it’s possible to recreate a state of your app, by providing a specific URL, like:

  route("<your_app_url>/main",  mainPageShinyUI),
  route("<your_app_url>/other", otherPageShinyUI)

Basic tutorial article is available on Appsilon Data Science blog.

Live demo

Source code

This library source code can be found on Appsilon Data Science’s Github:

How to install?

It’s possible to install this library through CRAN


The most recent version you can get from this repo using devtools.


To install previous version you can run:

devtools::install_github("Appsilon/shiny.router", ref = "0.1.0")


Visit examples directory for some complete samples. Here’s the basic usage:

router <- make_router(
  route("/", root_page),
  route("/other", other_page)

ui <- shinyUI(semanticPage(
  title = "Router demo",

server <- shinyServer(function(input, output) {
  router(input, output)

shinyApp(ui, server)

How to contribute?

If you want to contribute to this project please submit a regular PR, once you’re done with new feature or bug fix.

Changes in documentation

Both repository file and an official documentation page are generated with Rmarkdown, so if there is a need to update them, please modify accordingly a README.Rmd file and use readmebuilder package to render the new README.

In most cases a simple call of:



We used the latest versions of dependencies for this library, so please update your R environment before installation.

However, if you encounter any problems, try the following:

  1. Up-to-date R language environment
  2. Installing specific dependent libraries versions
    • magrittr

      install.packages("magrittr", version='1.5') 
    • shiny

      install.packages("shiny", version='')
  3. Missing semanticui dependency - one of our examples uses one of our others libraries, so please install it as well, when running that example. Repository: semanticui

Future enhacements