Shiny R Optimize
Diagnose and fix performance problems in Shiny for R apps, slow startup, sluggish...
Install
npx skills add posit-dev/skills --skill shiny-r-optimize -g -a claude-code -y- Repository
- posit-dev/skills551
- Category
- Business
- Updated
- 7d ago
- License
- MIT
- Context cost
- Mediumabout 3,000 tokens
- Runs scripts
- No, instructions only
What it does
Diagnose and fix performance problems in Shiny for R apps, slow startup, sluggish interactions, long-running blocking operations, and apps that struggle beyond a handful of concurrent users. Use when a Shiny app is slow, hangs, recomputes too much, times out, or needs to support more users; when the user asks to "speed up", "optimize", or "make faster" an existing Shiny app; or when preparing a prototyped app for real-world traffic.
Optimizing Shiny App Performance
Make an existing Shiny for R app faster without changing what it does. The typical user has an app that worked fine for one or two developers and is now too slow or must support more users. Keep all app logic intact; prefer code changes over deployment tuning; resist rewrites.
Order of preference for every fix:
- Eliminate work that isn't needed (don't compute outputs nobody is looking at; don't compute with inputs that aren't ready).
- Reuse work that repeats (shared reactives, caching).
- Accelerate unavoidable work (faster data formats, vectorized code).
- Relocate work that blocks (async / background tasks), last resort; it buys concurrency, not raw speed.
Workflow
1. Understand the complaint
Pin down what "slow" means and write it as a benchmark to beat:
- What feels slow? First page load? Every interaction? One specific action? Only when several people use it at once?
- How many concurrent users must it support? (1, 5, ~20, hundreds?)
- Where does it run? Locally, Posit Connect, Posit Connect Cloud, Shiny Server?
- How big is the data, where does it live, and how often does it change?
2. Scan the source for smells, and fix them now
Read the app code (app.R / server.R / ui.R / modules) and look for the
classic smells. Every smell in this table has a safe, behavior-preserving
fix: apply each fix you find immediately, before measuring. These ten
changes fix the large majority of slow Shiny apps.


