rstudio/shiny/shiny-for-r

Trust tier 2
  • community
LLM review pending
Source check pending

Checking that the SKILL.md file is still in the repository.

Building, styling, testing, debugging, or observing a Shiny for R app - library(shiny), shinyApp(), runApp(). Index skill: read this, then open the linked reference for the task. Covers reactivity (reactive/observe/req/isolate/bindEvent); modules; async promises and ExtendedTask; bslib layouts, navigation, cards, value boxes, and theming (incl. thematic and brand.yml); dynamic UI; plots with click/brush interaction; tables, file upload/download; notifications, modals, progress, validation; bookmarking; custom JS components; testServer testing; debugging; OpenTelemetry; and when to reach for DT, plotly, leaflet, shinychat, or shinytest2. Use when writing or changing any Shiny for R app, especially a dashboard, or when tempted to hand-roll what the framework provides - custom HTML tables, fake tabs, polling loops, blocking reactive work, or print-debugging server state.

Install

npx vskill@latest install rstudio/shiny/shiny-for-r

SKILL.md

Shiny for R

A Shiny app has a ui object (or function), a server(input, output, session) function, and shinyApp(ui, server) to run them together. The reactive graph is the engine: reading a reactive source (input$x, a reactive(), a reactiveVal()) inside a reactive context registers a dependency, so changing that source re-runs everything that read it — you never call outputs or schedule updates yourself.

This skill is an index. Find your task below and read the linked reference file before writing code for that area. Read the one or two references your task actually touches, not all of them.

Not every corner of Shiny has a reference here — plain inputs (selectInput(), actionButton(), ...), deployment, and app performance tuning are not covered. For those, work from your own knowledge of the package and its help pages.

Foundations

TopicUse whenReference
ReactivityA value should recompute or an output update as inputs change; choosing between reactive()/observe()/observeEvent(); req(), isolate(), bindEvent(), timers, pollingreferences/reactivity.md
ModulesA reusable, repeatable UI+server component; avoiding input/output id collisions across copiesreferences/modules.md
Session lifecyclePer-session cleanup (onSessionEnded()), flush hooks, unhandled errors, per-session vs app-level scope, session$userDatareferences/session-lifecycle.md

Async

TopicUse whenReference
AsyncReturning a promises::promise from a render/observer so R keeps serving other sessions during slow I/Oreferences/async.md
Extended tasksRunning slow work in a background process while the session that started it stays fully interactive; task buttonsreferences/extended-tasks.md

Dashboard building

TopicUse whenReference
Dashboard designTurning a dataset or brief into a polished analytical dashboard; information hierarchy, shared filters, responsive layout, empty states, final visual/functional passreferences/dashboard-design.md
Dashboard componentsComposing bslib card(), value_box(), accordion(), tooltip()/popover() instead of hand-rolled div() markupreferences/dashboard-components.md
LayoutsArranging a page with bslib page_sidebar(), layout_columns(), card() instead of nested fluidRow()/column() pyramidsreferences/layouts.md

Navigation & dynamic UI

TopicUse whenReference
NavigationGrouping switchable content into a real tab container/navbar instead of faking tabs with buttons plus conditionalPanel()references/navigation.md
Dynamic UIUI that must change after render — update*Input(), conditionalPanel(), renderUI()/uiOutput(), or insertUI()/removeUI()references/dynamic-ui.md

Outputs

TopicUse whenReference
PlotsPairing renderPlot()/plotOutput() for base/lattice/ggplot2 graphics; click/hover/brush interaction via nearPoints()/brushedPoints()references/plots.md
TablesChoosing renderTable() (static), the deprecated renderDataTable(), or DT/reactable for sortable/searchable interactive tablesreferences/tables.md
FilesfileInput() uploads and downloadHandler()/downloadButton() generated-file downloadsreferences/files.md

Feedback & state

TopicUse whenReference
FeedbackToasts/notifications, modal dialogs, progress bars, and input validation sent from the server, typically inside observeEvent()references/feedback.md
BookmarkingSaving/restoring app state via a shareable URL instead of a hand-built query string or custom persistence layerreferences/bookmarking.md

Theming, assets & extending

TopicUse whenReference
Theming & assetsSetting bslib::bs_theme() Sass variables, thematic for plot theming, brand.yml, or adding custom CSS/JS/image assetsreferences/theming-assets.md
Custom componentsIntegrating a third-party JS widget or bespoke interaction when no built-in input/output covers itreferences/custom-components.md

Testing & observability

TopicUse whenReference
TestingVerifying server-side reactive logic with testServer() without starting a real Shiny process or browserreferences/testing.md
DebuggingDropping into a real R debugger (browser(), error breakpoints) instead of print()-debugging a running reactive graphreferences/debugging.md
OpenTelemetryTracing sessions, flush cycles, and reactive/observer/output executions instead of log-scraping or ad hoc timingreferences/opentelemetry.md
EcosystemDeciding whether a companion package (DT, plotly, leaflet, shinychat, shinytest2, etc.) already solves the problem before hand-rolling itreferences/ecosystem.md

Security

  • Security scanPassed, 93 of 100Pattern checks on the skill's files.
  • Model reviewNot runA model review is scheduled for the next rescan.

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

Repository stars
5,682
Repository forks
1,891
7-day trend score
43

Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/rstudio/shiny/shiny-for-r/badge)](https://verified-skill.com/skills/rstudio/shiny/shiny-for-r)

Something wrong with this skill or its page? Tell us.