The R Shiny packages you need for your web apps!

[This article was first published on Enhance Data Science, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

Shiny is an R Package to deploy web apps using an R backend. Let’s face it, Shiny is awesome! It brings all the power of R to a simple web app with interactivity, user inputs, and interactive visualizations. If you don’t know Shiny yet, you can access a selection of apps on Show me shiny.
As usual with R, the community is great and has created lots of packages for Shiny, here is a personal selection of Shiny packages.
NB: The post focuses on shiny functionalities and visual improvements but it does not deal with data visualization packages. You should check A pick of the best R packages for interactive plot and visualization (1/2) to discover visualizations!

Improving the Shiny UI

This sections will show you some Shiny packages to improve your UI with new components and UI/UX improvements like draggable UI or in-app tutorial.

ShinyDashboard by Rstudio

ShinyDashboard makes it easy to create a dashboard and is based on the AdminLTE Bootstrap theme. Basically, you can build much more complex shiny apps with a sidebar, a header with notifications, messages, … and Bootstrap UI components (box, value box, info box). As it’s based on the adminLTE theme and bootstrap, you can often use their custom HTML classes by adding a few HTML lines to your application.

Example Shiny Dashboard
An example of a Shiny dashboard application

This package should be downloaded with Shiny and is really a must have!

Version: 0.6.1 (June 15, 2017) on CRAN
License: GPL-2
Package components’ License: GPL-2

shiny.semantic by Appsilon

Like ShinyDashboard, shiny.semantic is a wrapper for a web UI: Semantic UI. Semantic UI looks really beautiful and modern and has more varied components and inputs than Bootstrap.

Components from Semantic UI.

Click to view slideshow.

The apps made with this package looks really awesome, you can check this demo app from Appsilon. However, the package is not easy to use at the beginning, its syntax is very close to HTML and may require some adaptation.

Version: 0.1.1 (2017-05-29) on CRAN
License: MIT
Package components’ License: MIT

ShinyBS by ebailey78

ShinyBS adds some Bootstrap components to Shiny such as popovers, tooltips, and modal windows. Since modal windows are now included in Shiny, the main interest of the packages lies in the popover and tooltips. They can be easily added and parametrized using a R syntax.

Version: 0.61 (2015-03-30 ) on CRAN
License: GPL-3
Package components’ License: MIT

shinyjqui by Yang-Tang

Shinyjqui adds the Jquery UI to Shiny and this is really awesome! With the package, you can create drag, resize, sort and animates the elements of your UI with a few lines of code. This really adds a wahoo factor to your apps and corrects the fixed/static aspect of Shiny applications. Just check this example from the repository and you will love this Shiny package!


Version: 0.2.0 ( 2017-07-04 ) on CRAN
License: MIT
Package components’ license: CC0

rintrojs by CarlGanz

Is your app really complex? You don’t want your user to get lost and to quit? Then, you should really give a look at rintrojs. It’s a wrapper for the intro.js library to create step-by-step walkthroughs for your app and to show the users how they can use it. You can trigger the intro programmatically (it can be triggered when the user clicks on a ‘Hey I need help’ button) and the intro will highlight the elements of interest in your app with a comment. You can check the demo app to see it working.
This is definitely a must have for complex apps!

Version: 0.2.0 ( 2017-07-04 ) on CRAN
License: GNU Affero General Public License v3.0
Package components’ license (intro.js)
Commercial license for commercial use (price are reasonable though).
GNU AGPLv3 for open-source use.

New Shiny inputs

These Shiny packages bring new inputs and variety to your app.

shinyWidgets by dreamRs

ShinyWidgets brings news and improved inputs from Bootstrap to Shiny:

  • Improved radio button and checkbox inputs
  • Grouped checkbox and radio buttons which can be used instead of the original checkboxes and radio. Very useful for mobile-friendly whiny apps!
  • Two different types of switch for boolean inputs
  • A pickerInput which enhances a lot the vanilla selectize input
  • Drop-down buttons and improved modal/alert windows.

Examples of inputs from shinyWidgets
Examples Shiny Widgets

You can see a live version of all the inputs here.

Version: 0.3.0 (June 12, 2017) on CRAN
License: GPL-3
Package components’ License: MIT

ShinySky by AnalytixWare

ShinySky also brings some new inputs. Though the package does not seems active anymore, it has some nice inputs that are not in Shiny:

  • Typeahead input which will complete what the user is typing in the input and provide more CSS and HTML when the results appear. It’s like a slectizeInput on steroids.
  • Select2input, which is also a selectize on steroids with a possibility to rearrange the inputs order.

Version: 0.1.2 (2014-3-27) on Github
License: MIT

Make your tables great again

The vanilla tables are so-so, this selection of Shiny packages will help you to create interactive, editable and stylish tables.

DT by RStudio

DT is an interface to the JS library datatables. The package is a must-have if you plan to insert tables in your apps, it improves the vanilla tables with:

  • Sorting, search, filtering, and scrolling for long or wide tables
  • Enhance table layout with captions and custom table container.
  • Possibility to insert raw HTML codes (for instance to add buttons) and to modify your table style.
  • Easy table export to convenient format (pdf, excel, clipboard, …)
  • Built-in selection to use the table as a Shiny Input. For instance, you can detect which cell has been clicked, which row(s) or columns are selected, …

Version: 0.2 ( 2016-08-09) on CRAN
License: GPL-3
Package components’ License: Open source components

Formattable by Renkun

Formattable is centered around data presentation and formatting in a table. It has conditional styling options (colors, bar charts, icons, …) for your table and formatting options (Rounding, percentage, …). Even if I tend to prefer DT for its interactivity, I found formattable easier to use for formatting and styling tables.

Example of a formattable (from package repo)

Example Formattable

Version: ( 2016-08-05) on CRAN
License: MIT

Rhandsontable by jrowen

Rhansonetable brings handsontable.js into Shiny. Handsontable.js is like excel brought in your internet browser, with rhansontable you can use editable tables in your shiny application!

Example of rhansontable (from the package vignette)


Here is a quick list of its functionalities:

  • Editable table and shiny binding to use the table as a Shiny input
  • Definition of column types, for instance, you can set a column as being a date column (with a date picker) a character column or a boolean column (with a checkbox).
  • Contextual events on right clicks to add and remove rows, to add comments or borders.
  • Data validation with built-in or custom validation functions (in javascript)
  • Custom formatting of data, insertion of HTML code and of sparklines.

Version: (2016-08-05) on CRAN
License: MIT
Package components’ License: MIT for the community version of handsontable (which is used in the package)

Sparkline by timelyportfolio & ramnathv

Sparklines are tiny plots than can be put in a single cell, they can be used to show trends or evolution over the last periods. Hence, Sparkline is an HTMLWidget to add interactive sparklines in your tables and also includes bar charts and boxplots. That’s a great package to make your tables even more interactive and visually appealing.

Examples of sparkline (from the package repo)

sparkline example

Version: 2.0 ( 2016-11-12) on CRAN
License: MIT
Package components’ License: 3-Clause BSD License ( jquery sparkline)

A text and code editor in your shiny apps: ShinyAce by trestletech

Ace is a web-based code editor and gives you access to syntax coloring and code edition in your web browser. As you have already guessed, ShinyAce is a wrapper for the Ace editor and contains most of its functionalities. The editor field can also be used as an input to run the code from the editor.
[Warning: you should only allow this in restricted/logged parts of your application. You don’t want everyone playing with your server.]

Version: 0.2.1 (2016-03-14) on CRAN
License: MIT
Package components’ License: BSD 3 (Ace)

Interfacing your Shiny app with JS

shinyJs by Dean Attali

ShinyJs greatly improves the interaction between R and Shiny, the package is divided into two parts:

  • It makes some js-based action (hiding an element, on-event listener, change the class of an HTML element, …) accessible with an R and shiny syntax. Hence it helps the non-js programmers to perform some easy actions in Shiny.
  • It makes it easier to use and to call your custom js function in Shiny. You can now easily pass parameters to your js function and call them in a more R-friendly way.

So whether you intend to add more interactivity or to include js code in your application, this package is a must!

Version: 0.9.1(2017-06-29) on CRAN
License: GNU Affero General Public License v3.0 for open-source use

d3R by timelyportfolio

d3R is not really focused on Shiny but on making the use of d3.js easier in R:

  • Loading D3.js with a single function to avoid checking the latest D3.js version
  • Several helper functions to convert usual R data types to data types that can be used in d3.js (such as nested list or graphs).

d3R removes the painful data transformation part and simplifies the integration of custom d3.js viz’ in R.

Version: 0.9.1(2017-06-29) on CRAN
License: BSD-3
Package components’ License: BSD License (d3.js)

Improving your development pipeline

shinyTest by Rstudio

One of the painful parts of Shiny development is testing of your app.You have to do it manually …hence, the testing is inconsistent and you may forget some cases … and it’s boring and it requires a lot of times.
Shinytest intends to automate applications testing, you need to create your different test once. Each time you want to test the app, shinyTest will run the test and compare the inputs and outputs with the original test. You don’t need to run manual test anymore!

Version: 1.1.0 (2017-06-23) on Github
License: MIT

shinyLoadTest by Rstudio

shinyLoadTest is an extension of shinyTest which will help you to ensure that your applications are scalable. The packages create concurrent sessions which will perform a predefined set of actions to test the ability of your application to sustain the load.

Version: 0.1.0 (2017-06-23) on Github
License: GPL-3

That’s it, our little tour of Shiny packages is done. If you know other packages and wish to share them, please comment, I’d be glad to add them to the post.

You can follow the blog on TwitterFacebook  and subscribe to the newsletter:

EmailThank you for following us!

The post The R Shiny packages you need for your web apps! appeared first on Enhance Data Science.

To leave a comment for the author, please follow the link and comment on their blog: Enhance Data Science. offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

Never miss an update!
Subscribe to R-bloggers to receive
e-mails with the latest R posts.
(You will not see this message again.)

Click here to close (This popup will not appear again)