shiny v1.5.0


Monthly downloads



Web Application Framework for R

Makes it incredibly easy to build interactive web applications with R. Automatic "reactive" binding between inputs and outputs and extensive prebuilt widgets make it possible to build beautiful, responsive, and powerful applications with minimal effort.



CRAN R build status RStudio community

Shiny is a new package from RStudio that makes it incredibly easy to build interactive web applications with R.

For an introduction and examples, visit the Shiny Dev Center.

If you have general questions about using Shiny, please use the RStudio Community website. For bug reports, please use the issue tracker.


  • Build useful web applications with only a few lines of code—no JavaScript required.
  • Shiny applications are automatically "live" in the same way that spreadsheets are live. Outputs change instantly as users modify inputs, without requiring a reload of the browser.
  • Shiny user interfaces can be built entirely using R, or can be written directly in HTML, CSS, and JavaScript for more flexibility.
  • Works in any R environment (Console R, Rgui for Windows or Mac, ESS, StatET, RStudio, etc.).
  • Attractive default UI theme based on Bootstrap.
  • A highly customizable slider widget with built-in support for animation.
  • Prebuilt output widgets for displaying plots, tables, and printed output of R objects.
  • Fast bidirectional communication between the web browser and R using the httpuv package.
  • Uses a reactive programming model that eliminates messy event handling code, so you can focus on the code that really matters.
  • Develop and redistribute your own Shiny widgets that other developers can easily drop into their own applications (coming soon!).


To install the stable version from CRAN, simply run the following from an R console:


To install the latest development builds directly from GitHub, run this instead:

if (!require("remotes"))

Getting Started

To learn more we highly recommend you check out the Shiny Tutorial. The tutorial explains the framework in-depth, walks you through building a simple application, and includes extensive annotated examples.

Bootstrap 3 migration

Shiny versions and below used the Bootstrap 2 web framework. After, Shiny switched to Bootstrap 3. For most users, the upgrade should be seamless. However, if you have have customized your HTML-generating code to use features specific to Bootstrap 2, you may need to update your code to work with Bootstrap 3.

If you do not wish to update your code at this time, you can use the shinybootstrap2 package for backward compatibility.

If you prefer to install an older version of Shiny, you can do it using the devtools package:

devtools::install_version("shiny", version = "")

Development notes

The Javascript code in Shiny is minified using tools that run on Node.js. See the tools/ directory for more information.

Guidelines for contributing

We welcome contributions to the shiny package. Please see our file for detailed guidelines of how to contribute.


The shiny package as a whole is licensed under the GPLv3. See the LICENSE file for more details.

Functions in shiny

Name Description
actionButton Action button/link
bookmarkButton Create a button for bookmarking/sharing
bootstrapPage Create a Bootstrap page
MockShinySession Mock Shiny Session
NS Namespaced IDs for inputs/outputs
applyInputHandlers Apply input handlers to raw input values
Progress Reporting progress (object-oriented API)
brushOpts Create an object representing brushing options
bootstrapLib Bootstrap libraries
absolutePanel Panel with absolute positioning
checkboxGroupInput Checkbox Group Input Control
conditionalPanel Conditional Panel
brushedPoints Find rows of data selected on an interactive plot.
callModule Invoke a Shiny module
createRenderFunction Implement render functions
column Create a column within a UI definition
clickOpts Create an object representing click options
debounce Slow down a reactive expression with debounce/throttle
deprecatedReactives Deprecated reactive functions
domains Reactive domains
diskCache Create a disk cache object
dateRangeInput Create date range input
dblclickOpts Create an object representing double-click options
dateInput Create date input
createWebDependency Create a web dependency
downloadHandler File Downloads
downloadButton Create a download button or link
fillRow Flex Box-based row/column layouts
fillPage Create a page that fills the window
fileInput File Upload Control
exprToFunction Convert an expression to a function
getCurrentOutputInfo Get output information
getQueryString Get the query string / hash component from the URL
loadSupport Load an app's supporting R files
helpText Create a help text element
headerPanel Create a header panel
icon Create an icon
markdown Insert inline Markdown
maskReactiveContext Evaluate an expression without a reactive context
insertTab Dynamically insert/remove a tabPanel
checkboxInput Checkbox Input Control
htmlOutput Create an HTML output element
exportTestValues Register expressions for export in test mode
fixedPage Create a page with a fixed layout
flowLayout Flow layout
enableBookmarking Enable bookmarking for a Shiny application
hoverOpts Create an object representing hover options
insertUI Insert and remove UI objects
plotOutput Create an plot or image output element
fluidPage Create a page with fluid layout
isolate Create a non-reactive scope for an expression
makeReactiveBinding Make a reactive variable
reactiveVal Create a (single) reactive value
radioButtons Create radio buttons
reactiveTimer Timer
onBookmark Add callbacks for Shiny session bookmarking events
reactive Create a reactive expression
observeEvent Event handler
inputPanel Input panel
is.reactivevalues Checks whether an object is a reactivevalues object
knitr_methods Knitr S3 methods
plotPNG Run a plotting function and save the output as a PNG
renderText Text Output
markOutputAttrs Mark a render function with attributes that will be used by the output
installExprFunction Install an expression as a function
navbarPage Create a page with a top level navigation bar
freezeReactiveVal Freeze a reactive value
markRenderFunction Mark a function as a render function
navlistPanel Create a navigation list panel
invalidateLater Scheduled Invalidation
selectInput Create a select list input control
renderUI UI Output
onFlush Add callbacks for Shiny session events
modalDialog Create a modal dialog UI
numericInput Create a numeric input control
isRunning Check whether a Shiny application is running
observe Create a reactive observer
req Check for required values
pageWithSidebar Create a page with a sidebar
repeatable Make a random number generator repeatable
outputOptions Set options for an output object.
parseQueryString Parse a GET query string from a URL
memoryCache Create a memory cache object
modalButton Create a button for a modal dialog
reactiveValues Create an object for storing reactive values
snapshotExclude Mark an output to be excluded from test snapshots
snapshotPreprocessInput Add a function for preprocessing an input before taking a test snapshot
registerInputHandler Register an Input Handler
onStop Run code after an application or session ends
removeInputHandler Deregister an Input Handler
shinyAppTemplate Generate a Shiny application from a template
shinyUI Create a Shiny UI handler
serverInfo Collect information about the Shiny Server environment
passwordInput Create a password input control
reactlog Reactive Log Visualizer
shinyDeprecated Print message for deprecated functions in Shiny
reexports Objects exported from other packages
reactiveValuesToList Convert a reactivevalues object to a list
moduleServer Shiny modules
runGadget Run a gadget
runTests Runs the tests associated with this Shiny app
showBookmarkUrlModal Display a modal dialog for bookmarking
tableOutput Create a table output element
updateDateInput Change the value of a date input on the client
getShinyOption Get or set Shiny options
tabsetPanel Create a tabset panel
updateDateRangeInput Change the start and end values of a date range input on the client
shinyServer Define Server Functionality
showTab Dynamically hide/show a tabPanel
renderCachedPlot Plot output with cached images
sidebarLayout Layout a sidebar and main area
stopApp Stop the currently running Shiny app
updateSelectInput Change the value of a select input on the client
updateQueryString Update URL in browser's location bar
updateRadioButtons Change the value of a radio input on the client
updateNumericInput Change the value of a number input on the client
stacktrace Stack trace manipulation functions
renderPrint Printable Output
renderTable Table Output
runUrl Run a Shiny application from a URL
reactiveFileReader Reactive file reader
safeError Declare an error safe for the user to see
withProgress Reporting progress (functional API)
verticalLayout Lay out UI elements vertically
withMathJax Load the MathJax library and typeset math expressions
varSelectInput Select variables from a data frame
addResourcePath Resource Publishing
shiny.appobj Shiny App object
restoreInput Restore an input value
shinyApp Create a Shiny app object
renderDataTable Table output with the JavaScript library DataTables
session Session object
setBookmarkExclude Exclude inputs from bookmarking
reactivePoll Reactive polling
textOutput Create a text output element
textAreaInput Create a textarea input control
wellPanel Create a well panel
textInput Create a text input control
viewer Viewer options
testServer Reactive testing for Shiny server functions and modules
sizeGrowthRatio Create a sizing function that grows at a given ratio
sliderInput Slider Input Widget
updateSliderInput Update Slider Input Widget
updateTabsetPanel Change the selected tab on the client
showModal Show or remove a modal dialog
submitButton Create a submit button
updateCheckboxGroupInput Change the value of a checkbox group input on the client
tabPanel Create a tab panel
showNotification Show or remove a notification
updateCheckboxInput Change the value of a checkbox input on the client
updateTextAreaInput Change the value of a textarea input on the client
updateTextInput Change the value of a text input on the client
renderPlot Plot Output
renderImage Image file output
runApp Run Shiny Application
runExample Run Shiny Example Applications
shiny-package Web Application Framework for R
setSerializer Add a function for serializing an input before bookmarking application state
splitLayout Split layout
titlePanel Create a panel containing an application title.
snapshotPreprocessOutput Add a function for preprocessing an output before taking a test snapshot
updateActionButton Change the label or icon of an action button on the client
urlModal Generate a modal dialog that displays a URL
validate Validate input values and other conditions
No Results!

Last month downloads


Type Package
License GPL-3 | file LICENSE
Collate 'app.R' 'app_template.R' 'bookmark-state-local.R' 'stack.R' 'bookmark-state.R' 'bootstrap-deprecated.R' 'bootstrap-layout.R' 'globals.R' 'conditions.R' 'map.R' 'utils.R' 'bootstrap.R' 'cache-context.R' 'cache-disk.R' 'cache-memory.R' 'cache-utils.R' 'diagnose.R' 'fileupload.R' 'font-awesome.R' 'graph.R' 'reactives.R' 'reactive-domains.R' 'history.R' 'hooks.R' 'html-deps.R' 'htmltools.R' 'image-interact-opts.R' 'image-interact.R' 'imageutils.R' 'input-action.R' 'input-checkbox.R' 'input-checkboxgroup.R' 'input-date.R' 'input-daterange.R' 'input-file.R' 'input-numeric.R' 'input-password.R' 'input-radiobuttons.R' 'input-select.R' 'input-slider.R' 'input-submit.R' 'input-text.R' 'input-textarea.R' 'input-utils.R' 'insert-tab.R' 'insert-ui.R' 'jqueryui.R' 'middleware-shiny.R' 'middleware.R' 'timer.R' 'shiny.R' 'mock-session.R' 'modal.R' 'modules.R' 'notifications.R' 'priorityqueue.R' 'progress.R' 'react.R' 'reexports.R' 'render-cached-plot.R' 'render-plot.R' 'render-table.R' 'run-url.R' 'serializers.R' 'server-input-handlers.R' 'server.R' 'shiny-options.R' 'shinyui.R' 'shinywrappers.R' 'showcase.R' 'snapshot.R' 'tar.R' 'test-export.R' 'test-server.R' 'test.R' 'update-input.R'
Encoding UTF-8
NeedsCompilation no
Packaged 2020-06-19 17:22:05 UTC; winston
Repository CRAN
Date/Publication 2020-06-23 13:30:03 UTC

Include our badge in your README