Learn R Programming

⚠️There's a newer version (1.11.1) of this package.Take me there.

shiny

Easily build rich and productive interactive web apps in R — no HTML/CSS/JavaScript required.

Features

  • An intuitive and extensible reactive programming model which makes it easy to transform existing R code into a "live app" where outputs automatically react to new user input.
    • Compared to event-based programming, reactivity allows Shiny to do the minimum amount of work when input(s) change, and allows humans to more easily reason about complex MVC logic.
  • A prebuilt set of highly sophisticated, customizable, and easy-to-use widgets (e.g., plots, tables, sliders, dropdowns, date pickers, and more).
  • An attractive default look based on Bootstrap which can also be easily customized with the bslib package or avoided entirely with more direct R bindings to HTML/CSS/JavaScript.
  • Seamless integration with R Markdown, making it easy to embed numerous applications natively within a larger dynamic document.
  • Tools for improving and monitoring performance, including native support for async programming, caching, load testing, and more.
  • Modules: a framework for reducing code duplication and complexity.
  • An ability to bookmark application state and/or generate code to reproduce output(s).
  • A rich ecosystem of extension packages for more custom widgets, input validation, unit testing, and more.

Installation

To install the stable version from CRAN:

install.packages("shiny")

Getting Started

Once installed, load the library and run an example:

library(shiny)
# Launches an app, with the app's source code included
runExample("06_tabsets")
# Lists more prepackaged examples
runExample()

For more examples and inspiration, check out the Shiny User Gallery.

For help with learning fundamental Shiny programming concepts, check out the Mastering Shiny book and the Shiny Tutorial. The former is currently more up-to-date with modern Shiny features, whereas the latter takes a deeper, more visual, dive into fundamental concepts.

Join the conversation

If you want to chat about Shiny, meet other developers, or help us decide what to work on next, join us on Discord.

Getting Help

To ask a question about Shiny, please use the RStudio Community website.

For bug reports, please use the issue tracker and also keep in mind that by writing a good bug report, you're more likely to get help with your problem.

Contributing

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

License

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

R version support

Shiny is supported on the latest release version of R, as well as the previous four minor release versions of R. For example, if the latest release R version is 4.1, then that version is supported, as well as 4.0, 3.6, 3.5, and 3.4.

Copy Link

Version

Install

install.packages('shiny')

Monthly Downloads

486,176

Version

1.9.0

License

GPL-3 | file LICENSE

Issues

Pull Requests

Stars

Forks

Maintainer

Winston Chang

Last Published

July 29th, 2024

Functions in shiny (1.9.0)

applyInputHandlers

Apply input handlers to raw input values
absolutePanel

Panel with absolute positioning
NS

Namespaced IDs for inputs/outputs
actionButton

Action button/link
Progress

Reporting progress (object-oriented API)
MockShinySession

Mock Shiny Session
bookmarkButton

Create a button for bookmarking/sharing
bindCache

Add caching with reactivity to an object
bindEvent

Make an object respond only to specified reactive events
ExtendedTask

Task or computation that proceeds in the background
busyIndicatorOptions

Customize busy indicator options
clickOpts

Control interactive plot point events
column

Create a column within a UI definition
callModule

Invoke a Shiny module
brushedPoints

Find rows of data selected on an interactive plot.
brushOpts

Create an object representing brushing options
checkboxInput

Checkbox Input Control
checkboxGroupInput

Checkbox Group Input Control
bootstrapPage

Create a Bootstrap page
bootstrapLib

Bootstrap libraries
devmode

Shiny Developer Mode
domains

Reactive domains
downloadButton

Create a download button or link
createWebDependency

Create a web dependency
diskCache

Create disk cache (deprecated)
conditionalPanel

Conditional Panel
createRenderFunction

Implement custom render functions
debounce

Slow down a reactive expression with debounce/throttle
dateRangeInput

Create date range input
dateInput

Create date input
flowLayout

Flow layout
fluidPage

Create a page with fluid layout
downloadHandler

File Downloads
enableBookmarking

Enable bookmarking for a Shiny application
exprToFunction

Convert an expression to a function
exportTestValues

Register expressions for export in test mode
headerPanel

Create a header panel
helpText

Create a help text element
knitr_methods

Knitr S3 methods
isolate

Create a non-reactive scope for an expression
fillRow

Flex Box-based row/column layouts
fixedPage

Create a page with a fixed layout
isTruthy

Truthy and falsy values
inputPanel

Input panel
isRunning

Check whether a Shiny application is running
icon

Create an icon
fillPage

Create a page that fills the window
fileInput

File Upload Control
invalidateLater

Scheduled Invalidation
freezeReactiveVal

Freeze a reactive value
getCurrentOutputInfo

Get output information
is.reactivevalues

Checks whether an object is a reactivevalues object
navbarPage

Create a page with a top level navigation bar
moduleServer

Shiny modules
loadSupport

Load an app's supporting R files
makeReactiveBinding

Make a reactive variable
memoryCache

Create memory cache (deprecated)
insertUI

Insert and remove UI objects
insertTab

Dynamically insert/remove a tabPanel
getQueryString

Get the query string / hash component from the URL
getCurrentTheme

Obtain Shiny's Bootstrap Sass theme
markdown

Insert inline Markdown
markRenderFunction

Mark a function as a render function
markOutputAttrs

Mark a render function with attributes that will be used by the output
modalDialog

Create a modal dialog UI
parseQueryString

Parse a GET query string from a URL
pageWithSidebar

Create a page with a sidebar
observe

Create a reactive observer
observeEvent

Event handler
passwordInput

Create a password input control
plotOutput

Create an plot or image output element
maskReactiveContext

Evaluate an expression without a reactive context
onStop

Run code after an application or session ends
outputOptions

Set options for an output object.
navlistPanel

Create a navigation list panel
htmlOutput

Create an HTML output element
onBookmark

Add callbacks for Shiny session bookmarking events
numericInput

Create a numeric input control
httpResponse

Create an HTTP response object
radioButtons

Create radio buttons
onFlush

Add callbacks for Shiny session events
plotPNG

Capture a plot as a PNG file.
reactiveFileReader

Reactive file reader
reactivePoll

Reactive polling
reactiveValuesToList

Convert a reactivevalues object to a list
reactiveValues

Create an object for storing reactive values
reactiveConsole

Activate reactivity in the console
reactive

Create a reactive expression
registerInputHandler

Register an Input Handler
renderPlot

Plot Output
reactiveTimer

Timer
registerThemeDependency

Register a theme dependency
renderPrint

Text Output
reactiveVal

Create a (single) reactive value
renderImage

Image file output
dataTableOutput

Table output with the JavaScript DataTables library
removeInputHandler

Deregister an Input Handler
renderCachedPlot

Plot output with cached images
reactlog

Reactive Log Visualizer
req

Check for required values
repeatable

Make a random number generator repeatable
reexports

Objects exported from other packages
runGadget

Run a gadget
runTests

Runs the tests associated with this Shiny app
runExample

Run Shiny Example Applications
runApp

Run Shiny Application
renderUI

UI Output
shinyApp

Create a Shiny app object
addResourcePath

Resource Publishing
tableOutput

Table Output
restoreInput

Restore an input value
shiny.appobj

Shiny App object
session

Session object
setBookmarkExclude

Exclude inputs from bookmarking
setSerializer

Add a function for serializing an input before bookmarking application state
shiny-package

Web Application Framework for R
runUrl

Run a Shiny application from a URL
safeError

Declare an error safe for the user to see
serverInfo

Collect information about the Shiny Server environment
showModal

Show or remove a modal dialog
showTab

Dynamically hide/show a tabPanel
shinyAppTemplate

Generate a Shiny application from a template
shinyUI

Create a Shiny UI handler
selectInput

Create a select list input control
sidebarLayout

Layout a sidebar and main area
showNotification

Show or remove a notification
getShinyOption

Get or set Shiny options
shinyServer

Define Server Functionality
snapshotPreprocessInput

Add a function for preprocessing an input before taking a test snapshot
shinyDeprecated

Print message for deprecated functions in Shiny
snapshotExclude

Mark an output to be excluded from test snapshots
stopApp

Stop the currently running Shiny app
textAreaInput

Create a textarea input control
tabPanel

Create a tab panel
sliderInput

Slider Input Widget
submitButton

Create a submit button
textInput

Create a text input control
updateCheckboxInput

Change the value of a checkbox input on the client
showBookmarkUrlModal

Display a modal dialog for bookmarking
textOutput

Create a text output element
sizeGrowthRatio

Create a sizing function that grows at a given ratio
updateDateInput

Change the value of a date input on the client
testServer

Reactive testing for Shiny server functions and modules
stacktrace

Stack trace manipulation functions
updateCheckboxGroupInput

Change the value of a checkbox group input on the client
updateActionButton

Change the label or icon of an action button on the client
updateTextInput

Change the value of a text input on the client
tabsetPanel

Create a tabset panel
updateQueryString

Update URL in browser's location bar
urlModal

Generate a modal dialog that displays a URL
updateRadioButtons

Change the value of a radio input on the client
updateSliderInput

Update Slider Input Widget
updateSelectInput

Change the value of a select input on the client
titlePanel

Create a panel containing an application title.
snapshotPreprocessOutput

Add a function for preprocessing an output before taking a test snapshot
withMathJax

Load the MathJax library and typeset math expressions
splitLayout

Split layout
updateTabsetPanel

Change the selected tab on the client
withProgress

Reporting progress (functional API)
updateTextAreaInput

Change the value of a textarea input on the client
viewer

Viewer options
wellPanel

Create a well panel
verticalLayout

Lay out UI elements vertically
varSelectInput

Select variables from a data frame
updateNumericInput

Change the value of a number input on the client
updateDateRangeInput

Change the start and end values of a date range input on the client
useBusyIndicators

Enable/disable busy indication
validate

Validate input values and other conditions