/awesome-shiny-extensions

🐝 Awesome R packages that offer extended UI or server components for the R web framework Shiny

Creative Commons Zero v1.0 UniversalCC0-1.0


awesome-shiny-extensions logo

Awesome Shiny Extensions

Awesome

A curated list of awesome R packages that offer extended UI or server components for the R web framework Shiny.

Your contribution is welcomed. Please create a pull request or issue to add packages to the list.



Theming

An awesome Shiny app often looks different from the default Bootstrap theme.

Generic Theming

Dashboard Theming

Mobile Theming

  • miniUI - Widgets and layouts for Shiny apps working on small screens. Designed for creating Shiny Gadgets.
  • shinyMobile - Theming Shiny apps with Framework7, a full featured HTML framework for building iOS & Android apps.

Theme Customization

  • bslib - Tools for theming Shiny and R Markdown from R via Bootstrap (3 or 4) Sass.
  • fresh - Create fresh themes for use in shiny & shinydashboard applications and flexdashboard documents.
  • Rnightly - An R wrapper of the JavaScript library Nightly.
  • linne - Write CSS in R.

UI Components

Frontend UI components for special input/output types.

Bootstrap

  • ShinyWidgets - Bootstrap 3 custom widgets for Shiny (switches, checkboxes, sweet alerts, slider text, knob inputs, select pickers, search bar, dropdown buttons).
  • bsplus - Bootstrap 3 addons for Shiny and R Markdown (collapsible elements, accordion panels, accordion-sidebar sets, tooltips, popovers, modals, carousels).
  • shinyBS - Bootstrap 3 components for Shiny (alerts, tooltips, popovers, modals, collapsible panels, button upgrades).
  • slickR - Carousels for Shiny apps using slick.js.
  • shinyLP - Bootstrap 3 landing pages for Shiny apps.
  • shinypanels - Shiny layout with collapsible panels.
  • spsComps - Additional Bootstrap 3 custom UI components (gallery, panels, buttons, animation and more) and additional Shiny server components (exception catch, validation, etc.).

File Input

  • shinyFiles - A server-side file system viewer for Shiny.
  • directoryInput - Shiny input widget for selecting directories.

Special Input

  • shinyTime - A timeInput widget for Shiny.
  • shinyDatetimePickers - Datetime pickers for Shiny.
  • shinyMatrix - Matrix input for Shiny.
  • shinyCleave - Customized text inputs (phone number, ZIP code, currency, credit card) based on Cleave.js.
  • regexSelect - Enable regular expression searches within a Shiny selectize object.
  • ShinyRatingInput - Star rating inputs for Shiny based on bootstrap-rating.
  • algo - Implements the Algolia Places address search auto completion menu on shiny text inputs.
  • shinyChakraSlider - Combined slider and number input for Shiny.
  • shinyMultiActionButton - A multi-action button for Shiny.
  • NestedMenu - Multi-level dropdown menu selection input.
  • codeModules - Shiny modules to import/manipulate/export tabular data, download plots/tables/widgets, and output code with syntax highlighting using highlight.js.
  • shiny-highlight-rmarkdown - R code and R Markdown code output syntax highlighting using highlight.js.

Loader

  • shinycssloaders - CSS loader animations for Shiny outputs.
  • shinycustomloader - Custom css/html or gif/image loaders for Shiny outputs.
  • shinybusy - Minimal busy indicator for Shiny apps.
  • shinydisconnect - Show a nice message when a Shiny app disconnects or errors.
  • waiter - Splash loading screens for Shiny.
  • sever - Customize Shiny's disconnected screen.

Feedback / Alert / Notification

  • shinyFeedback - Display user feedback next to Shiny inputs.
  • shinyalert - Create pretty popup messages (modals) in Shiny apps.
  • shinytoastr - Notifications for Shiny apps, via toastr.
  • shinypop - Collection of notifications, confirm dialogs, and alerts for Shiny apps based on noty, notie, push.js, and notiflix.
  • shinyvalidate - Add input validation capabilities to Shiny.
  • awn - Awesome Notifications for Shiny.

Walkthrough / Tooltip / Help

  • rintrojs - Wrapper for Intro.js to create step-by-step introductions and clickable hints.
  • tippy - Wrapper for Tippy.js to add tooltips to R Markdown documents or Shiny apps.
  • cicerone - Create guided tours for Shiny apps using driver.js.
  • shinyhelper - Add Markdown help files to Shiny app elements.
  • scrollrevealR - Animate shiny elements when they scroll into view using the scrollrevealjs library.
  • faq - Accordion-based FAQ component with expand/collapse control.
  • flashCard - htmlwidget for creating flippable flash cards.
  • prompter - Add tooltips in Shiny apps with 'hint.css'.

Clipboard

  • rclipboard - Wrapper for clipboard.js to create copy-to-clipboard buttons for Shiny apps.

Color Picker

  • colourpicker - A colour picker tool for Shiny.
  • gradientPickerD3 - Interactive color gradient picker based on jquery-gradient-picker.
  • gradientInput - Another approach at gradient colour picker, implemented using the colourpicker package.

Editor

  • shinyAce - Ace code editor bindings for Shiny.
  • shinyMonacoEditor - The Monaco Editor in Shiny.
  • shinyMCE - TinyMCE WYSIWYG editor bindings for Shiny.
  • sqlquery - htmlwidget for writing SQL queries with autocompletion for SQL keywords and table/field names.

Table

  • DT - R interface to the DataTables library.
  • reactable - Interactive data tables for R, based on the React Table library and made with reactR.
  • reactablefmtr - Simplify the styling, formatting, and customization of tables made with reactable.
  • kableExtra - Construct complex table with knitr::kable() and pipes.
  • formattable - Table elements formatting and styling for R Markdown documents and Shiny apps.
  • flextable - Create tables for reporting with format and layout control.
  • gt - Generate information-rich, publication-quality tables.
  • rhandsontable - Create Excel-like editable tables in Shiny apps.
  • DTedit - Editable DataTables for Shiny apps.
  • texPreview - Preview and save images of rendered snippets of LaTeX in RStudio viewer, R Markdown and Shiny.
  • basictabler - Construct rich tables for output to HTML/Excel.
  • pivottabler - Create pivot tables in R.
  • pivta - R wrapper for WebDataRocks, an interactive pivot table component for data analysis.
  • excelR - R interface to the jExcel.js library.
  • RXSpreadsheet - R wrapper for the JavaScript canvas spreadsheet library x-spreadsheet.

Drawers

  • pushbar - pushbar.js for Shiny. Create off-canvas sliding drawers for inputs, outputs, or any other content.

Drag and Drop

  • shinyDND - Create drag and drop elements in Shiny.
  • sortable - htmlwidget for SortableJS that enables drag-and-drop behavior and reorderable elements.
  • dragulaR - R interface for the dragula JavaScript library for moving around elements in Shiny apps.
  • dndselectr - Drag-and-drop Shiny select input.
  • esquisse - Drag and drop inputs and visual builder for ggplot2.

Text

  • marker - Highlight text in Shiny with markjs.

Image / Audio / Video

  • shinysense - A series of shiny modules to help Shiny sense the world around it (draw, swipe cards, record images from a webcam, record audio, capture accelerometer data).
  • pixels - htmlwidget and Shiny Gadget to render and draw pixels.
  • fabricerin - Create HTML5 canvas in Shiny and R Markdown documents based on Fabric.js.
  • heyshiny - Speech to text input.
  • vembedr - Embed videos in R Markdown documents and Shiny apps.
  • webcamR - htmlwidget wrapper around the react-webcam library.
  • pianobar - Create histograms with audible features.
  • drawer - A front-end only image editor for both Shiny and R Markdown.

PDF

  • rpdf - Mozilla pdf.js htmlwidget for R.

Icon Font

  • fontawesome - Insert FontAwesome icons into R Markdown documents and Shiny apps.
  • icongram - Interface to Icongram, easily fetch svg icons with a single function.

Image Comparison

  • vdiffr - Visual regression testing and graphical diffing, with toggle, slide, and diff widgets for comparing two images.

Code Diff

  • diffr - Create code diff widgets based on codediff.js.
  • diffRgit - Create an HTML git diff widget using the diff2html library.
  • jsondiff - R interface to jsondiffpatch for comparing R objects as JSONs.

Calendar

  • tuicalendr - htmlwidget to create interactive calendars with JavaScript library tui-calendar.

Notebooks

Animation Effects

  • typed - R htmlwidget for animated typing effect with typed.js.
  • countup - R htmlwidget that animates a numerical value by counting to it with CountUp.js.
  • textillate - CSS3 text animations with textillate.js.
  • shinyglide - Create carousel-like or assistant-like (wizard) UI components with Glide.js.
  • d3rain - htmlwidget bringing D3 drip to R.
  • hover - Add animations to Shiny button elements using Hover.css.
  • bubblyr - Add animated bubbles to Shiny and R Markdown backgrounds.
  • shinyEffects - Customize shiny apps with CSS effects (Zoom / Pulse / Shadow / Shake).

i18n

  • shiny.i18n - Easy internationalization of Shiny apps.
  • shi18ny - Tools for shiny apps internationalization.

React

  • reactR - Use React in R with htmlwidget constructor templates and local JavaScript dependencies.
  • shinyReactWidgets - React widgets for Shiny apps.
  • shiny.react - Tools for using React in Shiny.

Vue.js

  • vuer - Use Vue components and build Vue apps in R.
  • vueR - Use Vue.js in R with htmlwidget constructor templates and local JavaScript dependencies.

Advanced Interactivity

  • htmlwidgets - A framework for creating R bindings to JavaScript libraries.
  • crosstalk - Inter-widget interactivity (for example, linked brushing and filtering) for htmlwidgets.
  • shinyjs - Perform common JavaScript operations in Shiny apps.
  • shinyjqui - Add jQuery UI interactions and effects (e.g. draggable, resizable, sortable elements) to Shiny apps.
  • shiny.collections - Google Docs-like live collaboration in Shiny with RethinkDB.
  • shinyCanvas - Create and customize an interactive canvas using the D3 JavaScript library and the htmlwidgets package.
  • shinymeta - Record and expose Shiny app logic using metaprogramming.
  • shinyscroll - Scroll to an element in Shiny.
  • pagemapR - Create a mini map for Shiny apps and R Markdown documents.
  • keys - Assign and listen to keyboard shortcuts in Shiny using the Mousetrap Javascript library.

Visualization

Frontend components for interactive visualization of specific data types.

General-Purpose

  • plotly - Interactive web graphics via plotly.js. Has special support for linking/highlighting/filtering views.
  • highcharter - R wrapper for the highcharts JavaScript charting library.
  • rbokeh - R interface for Bokeh.
  • echarts4r - Interactive graphs with Echarts v4.
  • r2d3 - R interface to D3 visualizations.
  • vegalite - R ggplot2 bindings for Vega-Lite.
  • vegawidget - htmlwidget renderer for Vega and Vega-Lite.
  • ggiraph - htmlwidget that makes ggplot2 graphics interactive. Select graphical elements, add tooltips, animations, and JavaScript actions to the graphics.
  • rfrappe - htmlwidget for the Frappe Charts JavaScript library.
  • tuichartr - htmlwidget for tui-chart.
  • billboarder - htmlwidget for billboard.js.
  • apexcharter - htmlwidget for ApexCharts.js.
  • taucharts - htmlwidget for Taucharts.
  • googleVis - R interface to Google Charts.
  • rroughviz - R warpper for roughViz.js, a JavaScript library for creating sketchy/hand-drawn styled charts.
  • rAmCharts4 - R interface to amCharts 4.

Scatterplot

  • scatterD3 - R scatterplot htmlwidget based on D3.js.
  • pairsD3 - D3 scatterplot matrices.
  • rthreejs - Interactive 3D scatterplots, networks, and globes based on three.js.
  • graph3d - R wrapper of the JavaScript library vis-graph3d.
  • hpackedbubble - Split packed bubble charts with highcharts.

Parallel Coordinates

  • parcoords - htmlwidget for D3 parallel coordinates chart.

Time Series

  • dygraphs - R interface to the dygraphs JavaScript charting library.
  • metricsgraphics - An htmlwidget interface to the MetricsGraphics.js D3-based charting library.
  • timevis - Interactive timeline visualizations based on vis.js.
  • timelineschart - R interface to timelines-chart.
  • streamgraph - htmlwidget for creating streamgraph visualizations in R.
  • eventdropR - htmlwidget for EventDrops, time based and event series interactive visualization using D3.

Tree and Hierarchical Data

  • D3partitionR - D3-based interactive visualization of nested and hierarchical data (sunburst, treemap, circle treemap, icicle, and partition chart) for Shiny.
  • d3Tree - D3-based collapsible trees for Shiny.
  • collapsibleTree - D3-based interactive collapsible tree diagrams.
  • jsTree - R htmlwidget for inspecting heirachal structures with the jQuery jsTree plugin.
  • shinyTree - jsTree bindings for creating interactive trees in Shiny.
  • jsTreeR - A wrapper of the JavaScript library jsTree.
  • shinyCheckboxTree - Checkbox tree widget for Shiny. Wrapper of the JavaScript library react-checkbox-tree.
  • listviewer - View and modify lists interactively, based on jsoneditor and react-json-view.
  • trelliscopejs - Create interactive Trelliscope displays based on trelliscopejs-lib.
  • gwordtree - Render a word tree with Google Charts.
  • Rmarkmap - Create interactive mind maps with the markmap JavaScript library.

Network and Graph Data

  • networkD3 - Create D3 network, tree, dendrogram, and Sankey diagram from R.
  • visNetwork - Network visualization using vis.js.
  • sigmajs - Interface to the sigma.js graph visualization library, including animations, plugins, and Shiny widgets.
  • sigmaNet - Render igraph networks using sigma.js.
  • chorddiag - R interface to D3 interactive chord diagrams.
  • chordViz - Create interactive chord diagrams in R.
  • edgebundleR - Circular layout plots with bundled edges based on D3.
  • hiveD3 - D3-based hive plots. Tutorial for recreating the package.
  • grapher - An R integration of ngraph to create 3D and 2D interactive graphs.
  • shinyCyJS - Cytoscape.js R binding for Shiny.
  • cyjShiny - R/Shiny widget for Cytoscape.js.

Categorical Data

  • bar - Interactive one-dimensional proportions chart for representing categorical data.

Diagrams

  • DiagrammeR - Diagram, graph, and network visualization based on D3.js, viz.js, and mermaid.js.
  • nomnoml - R interface to nomnoml, a tool for drawing sassy UML diagrams based on syntax with customizable styling.
  • bpmn - R interface to the bpmn-js library.

Heatmap

  • d3heatmap - D3-based interactive heatmaps (highlight rows/columns, zoom in/out, clustering, dendrograms).
  • heatmaply - Interactive heatmaps using plotly.
  • rChartsCalmap - An htmlwidgets binding for calendar heatmaps using D3.
  • calheatmapR - R interface for the cal-heatmap JavaScript charting library to create calendar heatmaps.
  • nivocal - htmlwidget for drawing calendar heatmaps based on nivo.
  • nivowaffle - htmlwidget for drawing waffle diagrams based on nivo.
  • supercaliheatmapwidget - Supercalifragilistic HTML calendar heatmaps.

Maps and Spatial Data

  • leaflet - R interface to the Leaflet JavaScript library to create interactive maps.
  • leaflet.extras - Extra functionality for the leaflet package.
  • leaflet.minicharts - Add and modify small charts on the interactive map created with the leaflet package.
  • leaflet.esri - ESRI bindings for the leaflet package.
  • leaflet.opacity - Opacity controls for Leaflet maps.
  • leaftime - Leaflet-timeline plugin for Leaflet to show changing geospatial data over time.
  • leafletCN - China and geojson choropleth maps for Leaflet.
  • leafletGeocoderRshiny - Leaflet + Pelias geocoding for Shiny.
  • leafdown - Provides drilldown functionality for leaflet choropleths.
  • mapdeck - Interactive maps using Mapbox GL and Deck.gl.
  • deckgl - R Interface to Deck.gl.
  • r2deck - R interface to Deck.gl and Mapbox GL visualizations.
  • h3r - Uber's H3 geographical indexing library bindings for R.
  • googleway - Access Google Maps API to retrieve data and draw maps.
  • mapview - Interactive viewing of spatial data.
  • mapedit - Interactive editing of spatial data.
  • tmap - Create thematic maps, such as choropleths and bubble maps.
  • datamaps - Create interactive choropleth maps with the JavaScript library Datamaps, add arcs and bubbles, change choropleth values, and change labels.
  • topogram - Cartogram htmlwidget for visualizing geographical data by distorting a TopoJSON topology using cartogram-chart.
  • rsquaire - R interface for squaire.js, a JavaScript library for making responsive equal-area square maps using D3.
  • hchinamap - Mapping China and its provinces with highcharts.
  • mapbrew - Mapping China with amCharts.
  • planetary - htmlwidget for the planetary.js library for creating interactive globes.
  • gior - htmlwidget for gio.js for declarative 3D globe data visualization.
  • quickglobe - View country data via a 3D D3 globe.

Sparkline

  • sparkline - jQuery Sparkline (tiny inline charts) HTML Widget for R. Use sparklines in DT.
  • reactrend - Simple, elegant spark lines and trend graphs based on react-trend.
  • peity - Peity htmlwidget for R.
  • dataui - Interactive visualizations of data-ui based on vx.

Word Cloud

  • wordcloud2 - Word cloud visualization based on wordcloud2.js.
  • hwordcloud - Render word clouds with highcharts.
  • d3wordcloud - htmlwidget for D3.js word cloud layout.

Biological Data

  • igvR - R package providing interactive connections to igv.js running in a web browser.
  • igvShiny - htmlwidget for igv.js, a JavaScript library for embeddable genomic visualization.
  • nglShiny - NGL Viewer as an htmlwidget for molecular visualization.
  • msaR - BioJS-based MSA (multiple sequence alignment) viewer.
  • TnT - Track-based visulizations based on the TnT JavaScript libraries. Useful for displaying genomic features as a simple genome browser.
  • mutsneedle - Interactive mutation lollipop diagrams.
  • g3viz - D3-based interactive lollipop plots.
  • BioCircos.R - Interactive circular visualization of genomic data using htmlwidgets and BioCircos.js.
  • chromoMap - Interactive visualization and mapping of human chromosomes.
  • ideogRam - htmlwidget for chromosome visualization with ideogram.js.
  • flowDashboard - Shiny Modules for visualizing flow cytometry data.
  • qtlcharts - Interactive graphics for QTL experiments.
  • phylocanvas - Interactive phylogenetic trees using the Phylocanvas JavaScript library.
  • phylowidget - Interactive phylogenetic trees based on phylotree.js.
  • JBrowseR - R interface to the JBrowse 2 linear genome view.

Chemical Data

  • r3dmol - Visualizing molecular data in 3D, based on 3Dmol.js.
  • chemdoodle - htmlwidget for visualizing and drawing molecules.

WebGL

  • rgl - Render WebGL scenes created with the rgl package (vignette).
  • rayshader - Create and visualize hillshaded maps from elevation matrices.
  • rayrender - Build and raytrace 3D scenes.
  • rayfocus - Render depth of field for images.

Augmented and Virtual Reality

  • shinyaframe - WebVR data visualizations with Shiny and Mozilla A-Frame.
  • arframer - Augmented Reality in R based on AR.js.

Backend

Backend components and service integrations for Shiny apps.

Database

  • db.rstudio.com - Packages and tutorials for connecting R and Shiny apps to databases.
  • pool - Database connection pooling in R.
  • elastic - R client for the Elasticsearch HTTP API.
  • sergeant - Transform and query data with Apache Drill.

Persistent Data Storage

  • pins - Publish data sets, models, and other R objects to folders, RStudio Connect, Amazon S3, and more.

API Frameworks

  • RestRserve - R web API framework for building high-performance and robust microservices and app backends.
  • plumber - Create web APIs by decorating R code with special comments.
  • opencpu - A system for embedded scientific computing and reproducible research with R.

URL Routing

  • shiny.router - Minimalistic URL router for Shiny apps.
  • shinyURL - Save and restore the state of a Shiny app by encoding the values of user inputs and active tab panels in the app's URL query string.

Authentication

  • shinymanager - Simple and secure authentification mechanism for single Shiny apps.
  • googleAuthR - Shiny compatible Google API client for authentication with OAuth2.
  • auth0 - Authentication in Shiny apps using Auth0.
  • shinyauthr - Server-side authentication using shiny modules.
  • firebase - Authenticate Shiny users with Google Firebase.
  • otp - One-Time Password generation and verification.
  • backendlessr - R wrapper for Backendless API to manage users.

Job Scheduling

  • cronR - R package for managing cron jobs.

Web APIs Integration

  • glouton - Handle browser cookies in shiny, built on top of js-cookie.
  • geoloc - Use the Geolocation API to get the location of the user (with user's permission).
  • shinyStore - Use the Web Storage API to store persistent, synchronized data in the user's browser.

Notification Integration

  • slackr - Send messages, images, R objects, and files to Slack channels/users.
  • sendgridr - Send emails with SendGrid mail API (v3).
  • twilio - R interface to the Twilio API.
  • blastula - Easily send HTML email messages from R.
  • mjml - Create responsive emails with R and MJML.
  • mailtoR - Creates a friendly user interface for emails sending in Shiny.

Cloud Integration

  • cloudyr - R packages for integrating with AWS, Azure, and Google Cloud.

G Suite Integration

  • googlesheets4 - R interface to Google Sheets via the Sheets API v4.
  • googlesheets - R interface to Google Spreadsheets API (no longer under active development).
  • googledrive - R API client for Google Drive.
  • gmailr - Access the Gmail RESTful API from R.

Deploy

Deploy Shiny apps to the cloud, hosted infrastructure, or desktop.

Cloud Deploy

  • rsconnect - Deploy Shiny apps to shinyapps.io, or RStudio Connect.

Desktop Deploy

  • RInno - Deploy Shiny apps to Windows by interfacing Inno Setup and Electron.
  • electricShine - Create distributable Shiny Electron apps.
  • photon - RStudio Add-in to build Shiny apps utilizing the Electron framework.
  • DesktopDeployR - A framework for deploying self-contained R-based applications to the desktop.
  • Shiny Meets Electron - Talk at useR! 2018 on turning Shiny app into standalone desktop apps. Talk video.
  • r-shiny-electron - Template for R Shiny and Electron integration.
  • nativefier - Create Electron wrappers for any websites (including remotely deployed Shiny apps).

Developer Tools

Debug, test, and optimize Shiny apps.

Prototyping

  • golem - Opinionated framework for building production-grade Shiny apps.
  • shinipsum - Lorem-Ipsum-like helpers for fast Shiny prototyping.
  • fakir - Create fake data in R for tutorials.
  • shinysnippets - A series of Shiny related RStudio snippets.

Modularization

  • tidymodules - An object-oriented approach to Shiny modules.
  • supreme - Structure Shiny applications developed with modules.
  • packer - An opinionated framework for using JavaScript with R.

Debugging

  • shinyreactlog - Visual debugger for Shiny reactivity.
  • reactlog - Easier debugging with the Shiny reactive log.

Testing

Profiling

Scaling

Miscellaneous

Not necessarily an R package, but it helps.

UI Customization

Dependency Resolution

  • packrat - Parse R package dependencies of Shiny apps with packrat::appDependencies.
  • sysreqsdb - SystemRequirements mappings for R packages.
  • shinyapps-package-dependencies - A collection of bash scripts that install system dependencies for R packages.

Books

Videos / Screencasts

  • Shiny Developer Series - Interviews with practitioners & developers of Shiny and the broader ecosystem of Shiny packages, plus occasional live streams of Shiny app development in action.