
Build native Windows desktop apps with R — zero ports, one installer, no R needed by your users.
RDesk turns your R analysis into a standalone Windows application. No Shiny server. No browser tabs. No IT conversations about ports. Your users get a real .exe that double-clicks like any other desktop tool — and it works entirely offline.
Quick Start
# Install from CRAN
install.packages("RDesk")
# Scaffold a professional dashboard
RDesk::rdesk_create_app("MyApp")
# Run it immediately
source("MyApp/app.R")When you are ready to ship:
RDesk::build_app(
app_dir = "MyApp",
app_name = "MyApp",
build_installer = TRUE
)
# → dist/MyApp-1.0.0-setup.exe (~200 MB, self-contained)Send the .exe to anyone on Windows. They double-click it. Done. No R required.
Development version:
devtools::install_github("Janakiraman-311/RDesk")
Why RDesk?
| Shiny | RInno (archived) | Electron + R | RDesk | |
|---|---|---|---|---|
| Network ports required | ✅ Yes | ✅ Yes | ✅ Yes | ❌ Zero |
| Works fully offline | ❌ No | ⚠️ Partial | ⚠️ Partial | ✅ Yes |
| Native file dialogs & menus | ❌ No | ❌ No | ⚠️ Via JS | ✅ Yes |
| Distribution format | Server URL | Installer | Installer | ZIP or .exe |
| Bundle size | Server-side | 350 MB+ | 350–500 MB | ~200 MB |
| Skills required | R | R + Electron | R + Node.js | R only |
Core Features
- 🔒 Zero-Port IPC — R and the UI communicate via native stdin/stdout pipes and Win32 messages. No TCP stack. No firewall rules. Passes enterprise security audits that Shiny deployments fail.
-
⚡ Async by Default — Three-tier async engine built on
mirai. Pre-warmed daemon pools start tasks in milliseconds, not seconds. Loading overlays and progress bars are one line of code. -
📦 Version-Safe Runtime —
build_app()copies your exact R installation into the bundle, guaranteeing the runtime and yourrenv-locked packages are always the same version. No more ABI crashes. - 🎨 Modern Web UI — Write your interface in plain HTML/CSS/JS. Keep 100% of your logic in R. No React. No Webpack. No build pipeline.
-
🛠 Professional Scaffolding —
rdesk_create_app()generates a full working dashboard — sidebar, charts, async workers, dark mode — that runs immediately. No blank-template frustration. - 🔄 Auto-Update — One function silently checks for updates on launch and installs them. Your distributed users always run the latest version.
Who It’s For
RDesk is built for R developers who need to put a real tool in the hands of people who don’t use R.
- Pharma & clinical — distribute data review or validation tools to investigators without IT involvement
- Consulting — hand a client a branded analysis tool without exposing your model or code
-
Internal teams — replace aging Excel macros with proper statistics, distributed as a familiar
.exe - Anyone who has been told “we can’t open a port for your Shiny app”
Documentation
Full documentation at janakiraman-311.github.io/RDesk
| Guide | What it covers |
|---|---|
| Getting Started | From install.packages() to your first native app |
| Coming from Shiny | Side-by-side mapping of every Shiny pattern to RDesk |
| Async Guide | Background tasks, progress overlays, cancellation |
| Cookbook | Copy-paste recipes for common desktop patterns |
| Why RDesk? | The history of R desktop deployment |
