Web Application Framework for R
Overview
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.
New features
- New
startApp()runs a Shiny app in non-blocking mode, returning aShinyAppHandleobject withstop(),status(),url(), andresult()methods. When a new app is started, any previously running non-blocking app is automatically stopped. (#4349) session$destroy()andsession$onDestroy()are now available on module session proxies to clean up "dangling reactivity" when dynamic module UI is removed. Callingsession$destroy()invokes all registeredonDestroy()callbacks for that scope and its descendants, tearing down reactive values, expressions, and observers. A parent can also destroy a child module scope by id withsession$destroy(id), so it can tear down a module using the same id it used to insert the UI (#4372).
Show all changes in 1.14.0Hide the rest of the changes in 1.14.0
downloadButton()anddownloadLink()gain a newenabledparameter. The default value,"auto", automatically enables the button/link when the download is ready. To opt-into manual state management (e.g.,shinyjs::enable()), setenabledtoFALSE(orTRUE). (#4119)
Improvements
- Output resize/visibility detection now uses native browser observers (
ResizeObserver,IntersectionObserver) instead of relying on jQueryshown/hiddenevents andwindow.resize. This makes Shiny's client-side output-info pipeline (image/plot sizing, hidden-state tracking, theme reporting) work automatically in any layout — including CSS-only show/hide, third-party tab components, and non-Bootstrap frameworks — without requiring custom event hooks. This also introduces ashiny:themechangeevent for code that needs to trigger theme clientdata refreshes after changing surrounding visual theme context. (#3682) conditionalPanel()no longer briefly flashes its contents on app start when the condition is initiallyFALSE. (#3505)- Updated default HTTP headers for better security. Shiny now sends
X-Content-Type-Options: nosniffinstead of the legacyX-UA-Compatibleheader. This removes outdated Internet Explorer–specific behavior and adds a modern safeguard that prevents browsers from misinterpreting file types. (#4385) - Removed
InputBinding.dispose()from the JavaScriptInputBindingclass. This method was never called by Shiny's runtime, so any overrides were dead code. Useunsubscribe()for cleanup logic instead. (#4375)
Bug fixes
- Loading shiny no longer creates
.Random.seedin the global environment as a side effect. (#4382) need()now gives a clearer error when called without either amessageorlabelargument, instead of the cryptic "argument \"label\" is missing, with no default". (thanks @chasemc and @sundrelingam, #2509)- Clarified
varSelectInput()documentation to explain that the input returns a symbol for use with tidy evaluation, and fixed a grammatical typo. (#2334)
From NEWS.md in the release
Install
Health
- OK13 OK2026-08-04
- NOTE12 OK, 1 NOTE2026-08-01
- OK13 OK2026-06-09
- ERROR12 OK, 1 ERROR2026-06-08
- OK12 OK2026-04-25
Show 3 earlier changesHide 3 earlier changes
- NOTE11 OK, 3 NOTE2026-04-08
- ERROR10 OK, 3 NOTE, 1 ERROR2026-04-07
- NOTE11 OK, 3 NOTE2026-03-10
Documentation
- Help pages
- 170 (20 internal)includes a package overview page
- Examples that run
- 91%107 run in a plain check (78 of them under a condition) · 10 never run
- Exported functions with examples
- 71%
- Documented parameters
- 96%
- Return-value docs
- 40%
- Help pages citing references
- 0%
Downloads
Repository
- PRs merged (all time)
- 84%
- Median days to close, 50 most recently updated closed issues
- 840
- Median days to close, 50 most recently updated closed PRs
- 1
Stars over time
Forks over time
Releases over time
Issues over time
PRs over time
Commits over time
Commit identities over time
10 development-tooling and community-health practices detected across 7 families in the upstream repository
Checks run against github.com/rstudio/shiny on 2026-10-18.
GitHub Pages site last deployed 2026-10-02
Show all practicesHide 3 practices
This repository shows signs of AI coding tools.
- Claude Codefirst seen 2025-08-05Named in .Rbuildignore: .claudeNamed in .gitignore: .claudePull request it wrote: opened by a project memberCommits: at least 4 crediting it in the message
- GitHub Copilotfirst seen 2025-11-25Pull request: opened by its own accountCommits: 2 by its own account · at least 1 crediting it in the message
- Copilot code reviewCommits: at least 2 accepting its review suggestions
- Claude Opus 4.63 commits · Feb to May 2026
- Claude Sonnet 4.61 commit · May 2026
Dependencies
Installing shiny adds 29 packages (19 with compiled code, 23 MB of source tarballs). Heaviest: bslib 5.6 MB, promises 3.1 MB, sass 2.9 MB.
Show the 48 most downloaded dependentsHide the 48 most downloaded dependents
and 1,102 more dependents and 525 packages that suggest it on CRAN ↗
Code & Tests
People & History
Show 11 more contributorsHide 11 contributors
Previously maintained by Winston Chang (0.2.4 to 1.11.1) and Joe Cheng (0.2.3).
Show 8 of 9 peopleHide 8 people
Pick two releases to compare their code metrics.
- RR 4.6.0 released · 2026-04-24
- RR 4.5.0 released · 2025-04-11
- RR 4.4.0 released · 2024-04-24
- RR 4.3.0 released · 2023-04-21
- RR 4.2.0 released · 2022-04-22
- RR 4.1.0 released · 2021-05-18
- RR 4.0.0 released · 2020-04-24
- RR 3.6.0 released · 2019-04-26
- RR 3.5.0 released · 2018-04-23
- RR 3.4.0 released · 2017-04-21
- RR 3.3.0 released · 2016-05-03
- RR 3.2.0 released · 2015-04-16
- RR 3.1.0 released · 2014-04-10
- 3.0.3Latest2013-10-26 · current release · diff ↗ ·
added 3 exports
dataTableOutput, installExprFunction, renderDataTable - RR 3.0.0 released · 2013-04-03
- 2.15.32013-01-23 · diff ↗ ·
added 42 exports
actionButton, basicPage, dateInput, dateRangeInput, exprToFunction, imageOutput, includeCSS, includeScript, is.reactive, is.reactivevalues, isolate, outputOptions, parseQueryString, plotPNG, reactiveFileReader, reactivePoll, reactiveValues, reactiveValuesToList, renderImage, renderPlot, renderPrint, renderTable, renderText, renderUI, runGitHub, runUrl, showReactLog, stopApp, tagAppendChildren, tagSetChildren and 12 more
Show 63 earlier eventsHide 63 earlier events
- 1.14.0
- 1.13.02026-02-20 · diff ↗
- 1.12.1
- 1.12.02025-12-03 · diff ↗
- 1.11.12025-07-03 · diff ↗
- 1.11.02025-06-24 · diff ↗
- 1.10.02024-12-14 · diff ↗
- 1.9.12024-08-01 · diff ↗
- 1.9.0
- 1.8.1.12024-04-02 · diff ↗
- 1.8.1
- 1.8.02023-11-18 · diff ↗
- 1.7.5.12023-10-14 · diff ↗
- 1.7.52023-08-12 · diff ↗
- 1.7.4.12023-07-06 · diff ↗
- 1.7.42022-12-15 · diff ↗
- 1.7.32022-10-25 · diff ↗
- 1.7.22022-07-19 · diff ↗
- 1.7.12021-10-02 · diff ↗
- 1.7.02021-09-22 · diff ↗ ·
removed 8 exports
extractStackTrace, formatStackTrace, reactivePlot, reactivePrint, reactiveTable, reactiveText, reactiveUI, showReactLogadded 1 export
register_devmode_option - 1.6.02021-01-25 · diff ↗ ·
added 11 exports
bindCache, bindEvent, devmode, getCurrentTheme, get_devmode_option, httpResponse, in_devmode, quoToFunction, reactiveConsole, registerThemeDependency, with_devmode - 1.5.02020-06-23 · diff ↗ ·
added 8 exports
MockShinySession, markdown, moduleServer, runTests, shinyAppTemplate, tabPanelBody, testServer, updateActionLink - 1.4.0.22020-03-13 · diff ↗
- 1.4.0.12020-03-12 · diff ↗
- 1.4.02019-10-10 · diff ↗ ·
removed 6 exports
knit_print.html, knit_print.reactive, knit_print.shiny.appobj, knit_print.shiny.render.function, knit_print.shiny.tag, knit_print.shiny.tag.listadded 5 exports
loadSupport, removeResourcePath, resourcePaths, tagGetAttribute, tagHasAttribute - 1.3.22019-04-22 · diff ↗
- 1.3.12019-04-12 · diff ↗
- 1.3.0
- 1.2.02018-11-02 · diff ↗ ·
added 11 exports
diskCache, getCurrentOutputInfo, is.key_missing, key_missing, memoryCache, renderCachedPlot, sizeGrowthRatio, updateVarSelectInput, updateVarSelectizeInput, varSelectInput, varSelectizeInput - 1.1.0
- 1.0.52017-08-23 · diff ↗
- 1.0.42017-08-14 · diff ↗ ·
added 11 exports
appendTab, hideTab, insertTab, isRunning, onStop, prependTab, removeTab, setSerializer, showTab, snapshotPreprocessInput, snapshotPreprocessOutput - 1.0.32017-04-26 · diff ↗
- 1.0.22017-04-18 · diff ↗
- 1.0.12017-04-01 · diff ↗ ·
added 5 exports
freezeReactiveVal, getQueryString, getUrlHash, reactiveVal, snapshotExclude - 1.0.0
- 0.14.2
- 0.14.12016-10-05 · diff ↗
- 0.142016-09-10 · diff ↗ ·
added 30 exports
bookmarkButton, enableBookmarking, freezeReactiveValue, getShinyOption, insertUI, isTruthy, modalButton, modalDialog, onBookmark, onBookmarked, onFlush, onFlushed, onRestore, onRestored, onSessionEnded, removeModal, removeNotification, removeUI, restoreInput, safeError, setBookmarkExclude, shinyOptions, showBookmarkUrlModal, showModal, showNotification, textAreaInput, updateActionButton, updateQueryString, updateTextAreaInput, urlModal - 0.13.22016-03-28 · diff ↗
- 0.13.12016-02-17 · diff ↗
- 0.13.02016-01-12 · diff ↗ ·
added 26 exports
conditionStackTrace<-, ..stacktraceoff.., ..stacktraceon.., NS, bootstrapLib, browserViewer, callModule, captureStackTraces, conditionStackTrace, dialogViewer, extractStackTrace, fillCol, fillPage, fillRow, formatStackTrace, htmlTemplate, knit_print.reactive, ns.sep, paneViewer, printError, printStackTrace, req, runGadget, shinyAppFile, suppressDependencies, withLogErrors - 0.12.2
- 0.12.12015-06-12 · diff ↗
- 0.12.02015-05-18 · diff ↗ ·
added 6 exports
brushOpts, brushedPoints, clickOpts, dblclickOpts, hoverOpts, nearPoints - 0.11.12015-02-11 · diff ↗
- 0.11
- 0.10.2.22014-12-08 · diff ↗
- 0.10.2.12014-10-01 · diff ↗
- 0.10.22014-09-30 · diff ↗ ·
added 6 exports
Progress, createWebDependency, incProgress, is.shiny.appobj, setProgress, withProgress - 0.10.12014-07-26 · diff ↗
- 0.10.02014-06-14 · diff ↗ ·
added 22 exports
actionLink, as.shiny.appobj, flowLayout, getDefaultReactiveDomain, inputPanel, is.singleton, knit_print.html, knit_print.shiny.appobj, knit_print.shiny.render.function, knit_print.shiny.tag, knit_print.shiny.tag.list, markRenderFunction, maskReactiveContext, need, onReactiveDomainEnded, serverInfo, shinyApp, shinyAppDir, splitLayout, updateSelectizeInput, validate, withReactiveDomain - 0.9.12014-03-19 · diff ↗
- 0.9.02014-03-18 · diff ↗ ·
added 21 exports
absolutePanel, column, fixedPage, fixedPanel, fixedRow, fluidPage, fluidRow, hr, icon, makeReactiveBinding, navbarMenu, navbarPage, navlistPanel, registerInputHandler, removeInputHandler, selectizeInput, sidebarLayout, tagAppendAttributes, titlePanel, verticalLayout, withMathJax - 0.8.02013-10-30 · diff ↗
- 0.7.02013-08-27 · diff ↗ ·
added 11 exports
includeCSS, includeScript, is.reactive, is.reactivevalues, reactiveFileReader, reactivePoll, showReactLog, stopApp, tagAppendChildren, tagSetChildren, validateCssUnit - 0.6.02013-06-05 · diff ↗ ·
added 15 exports
actionButton, basicPage, dateInput, dateRangeInput, updateCheckboxGroupInput, updateCheckboxInput, updateDateInput, updateDateRangeInput, updateNumericInput, updateRadioButtons, updateSelectInput, updateSliderInput, updateTabsetPanel, updateTextInput, withTags - 0.5.0
- 0.4.02013-02-22 · diff ↗ ·
added 7 exports
exprToFunction, outputOptions, renderPlot, renderPrint, renderTable, renderText, renderUI - 0.3.02013-01-24 · diff ↗ ·
removed 37 exports
actionButton, basicPage, dateInput, dateRangeInput, exprToFunction, imageOutput, includeCSS, includeScript, is.reactive, is.reactivevalues, outputOptions, parseQueryString, plotPNG, reactiveFileReader, reactivePoll, renderImage, renderPlot, renderPrint, renderTable, renderText, renderUI, showReactLog, stopApp, tagAppendChildren, tagSetChildren, updateCheckboxGroupInput, updateCheckboxInput, updateDateInput, updateDateRangeInput, updateNumericInput and 7 more - 0.2.42012-12-18 · diff ↗
- 0.2.32012-12-01
- RR 2.15.0 released · 2012-03-30
Package metadata
- First published
- 2012-12-01
- Total releases
- 64 / 14 yrs
- License
- MIT + file LICENSE OSI · relicensed from GPL-3 | file LICENSE in 1.13.0
- Minimum R
- ≥ 3.1.2
- Download size
- 2.6 MB
Cite
Cite this package
Run in R for the authors' preferred citation:
citation("shiny")This package has no citation file, so citation() returns this entry built from DESCRIPTION.
Cite the R Observatory
For a number measured here: a download total, a coverage figure, an archival date.
From data release v2026-10-21, which the citation names so these numbers can be found later. More on citing and the projects behind them.