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.
- Inspired by: awesome-react-components and awesome-rshiny.
- Please send pull requests: contributing guide and code of conduct.
- A special thanks to all the package authors for making the world a better place!
- Theming
- UI Components
- Bootstrap
- File Input
- Special Input
- Loader
- Feedback / Alert / Notification
- Walkthrough / Tooltip / Help
- Clipboard
- Color Picker
- Editor
- Table
- Drawers
- Drag and Drop
- Image / Audio / Video
- Icon Font
- Image Comparison
- Code Diff
- Calendar
- Notebooks
- Animation Effects
- i18n
- React
- Vue.js
- Advanced Interactivity
- Visualization
- Backend
- Deploy
- Developer Tools
- Miscellaneous
An awesome Shiny app often looks different from the default Bootstrap theme.
- shinythemes - Bootswatch themes (Bootstrap 3) for Shiny.
- shiny.semantic - Semantic UI for Shiny.
- shinymaterial - Material Design for Shiny with Materialize.css.
- shinyUIkit - UIkit API for Shiny.
- fullPage - Single page styles for Shiny apps.
- shinybulma - Bulma.io for Shiny.
- shinyMetroUi - Metro 4 UI for Shiny.
- yonder - A reactive web framework built on Shiny with Bootstrap 4.
- shinydashboard - Shiny dashboarding framework based on AdminLTE 2.
- shinydashboardPlus - Additional AdminLTE 2 components for shinydashboard.
- gentelellaShiny - Bootstrap 3 Gentelella theme for Shiny dashboards.
- semantic.dashboard - Semantic UI for Shiny dashboards.
- bs4Dash - Bootstrap 4 Shiny dashboards using AdminLTE 3.
- argonDash - Bootstrap 4 Argon template for Shiny dashboards.
- tablerDash - Tabler dashboard template for Shiny with Bootstrap 4.
- 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.
- bootstraplib - 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.
Frontend UI components for special input/output types.
- 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.
- shinyFiles - A server-side file system viewer for Shiny.
- directoryInput - Shiny input widget for selecting directories.
- shinyTime - A timeInput widget for Shiny.
- shinyDatetimePickers - Datetime pickers 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.
- 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.
- waiter - Splash loading screens for Shiny.
- sever - Customize Shiny's disconnected screen.
- 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.
- 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.
- rclipboard - Wrapper for clipboard.js to create copy-to-clipboard buttons for Shiny apps.
- 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.
- 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.
- DT - R interface to the DataTables library.
- reactable - Interactive data tables for R, based on the React Table library and made with reactR.
- 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.
- pushbar - pushbar.js for Shiny. Create off-canvas sliding drawers for inputs, outputs, or any other content.
- 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.
- 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.
- rpdf - Mozilla pdf.js htmlwidget for R.
- fontawesome - Insert FontAwesome icons into R Markdown documents and Shiny apps.
- vdiffr - Visual regression testing and graphical diffing, with toggle, slide, and diff widgets for comparing two images.
- 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.
- tuicalendr - htmlwidget to create interactive calendars with JavaScript library tui-calendar.
- robservable - Observable notebooks as R htmlwidgets.
- 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.
- shiny.i18n - Easy internationalization of Shiny apps.
- shi18ny - Tools for shiny apps internationalization.
- reactR - Use React in R with htmlwidget constructor templates and local JavaScript dependencies.
- shinyReactWidgets - React widgets for Shiny apps.
- vuer - Use Vue components and build Vue apps in R.
- vueR - Use Vue.js in R with htmlwidget constructor templates and local JavaScript dependencies.
- 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.
Frontend components for interactive visualization of specific data types.
- 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.
- 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.
- parcoords - htmlwidget for D3 parallel coordinates chart.
- 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.
- 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.
- 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.
- arcDiagramR - Create arc diagrams with htmlwidgets.
- grapher - An R integration of ngraph to create 3D and 2D interactive graphs.
- 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.
- 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.
- 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.
- 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 - 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.
- wordcloud2 - Word cloud visualization based on wordcloud2.js.
- hwordcloud - Render word clouds with highcharts.
- d3wordcloud - htmlwidget for D3.js word cloud layout.
- 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.
- cyjShiny - htmlwidget for Cytoscape.js, a JavaScript library for graph/network visualization. The API is based on RCyjs (and thus RCy3).
- 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.
- chemdoodle - htmlwidget for visualizing and drawing molecules.
- 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.
- shinyaframe - WebVR data visualizations with Shiny and Mozilla A-Frame.
- arframer - Augmented Reality in R based on AR.js.
Backend components and service integrations for Shiny apps.
- 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.
- 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.
- 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.
- 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.
- cronR - R package for managing cron jobs.
- 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.
- 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.
- cloudyr - R packages for integrating with AWS, Azure, and Google Cloud.
- 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 Shiny apps to the cloud, hosted infrastructure, or desktop.
- rsconnect - Deploy Shiny apps to shinyapps.io, or RStudio Connect.
- 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).
Debug, test, and optimize Shiny apps.
- 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.
- tidymodules - An object-oriented approach to Shiny modules.
- supreme - Structure Shiny applications developed with modules.
- shinyreactlog - Visual debugger for Shiny reactivity.
- reactlog - Easier debugging with the Shiny reactive log.
- shinytest - Automated testing for Shiny apps.
- shinyloadtest - Load testing for Shiny apps.
- reactor - Unit testing for Shiny reactivity.
- profvis - Interactive visualizations for profiling R code. Profiling Shiny apps.
- promises - Promise-based asynchronous programming for R. Using promises with Shiny.
- shinyParallel - Run Shiny applications in a multi-session mode.
Not necessarily an R package, but it helps.
- Bootstrap Live Customizer - Customize Bootswatch themes (Bootstrap 3) to create your own Bootstrap themes.
- google-webfonts-helper - A hassle-free way to self-hosted Google Fonts, useful for air-gapped environments.
- 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.