Build native desktop applications for Windows (with future support planned for macOS and Linux) using 'R' and embedded 'webviews'. Provides a robust 'R6'-based event loop, asynchronous background task management via 'mirai' and 'callr', and a native message bridge for seamless 'R'-to-user-interface communication without listening ports or network overhead. Allows 'R' developers to create professional, standalone desktop tools with modern web-based user interfaces while maintaining a pure 'R' backend.
Package R analyses into self-contained native desktop applications with zero network port requirements.
RDesk packages your R analysis into a standalone desktop application for Windows (with future support planned for macOS and Linux). Instead of running an HTTP server and opening a browser tab, RDesk uses a native launcher plus an embedded webview so the app runs offline with local IPC only.
# Install from CRAN
install.packages("RDesk")
# Scaffold an interactive app
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
)
# Windows -> dist/MyApp-1.0.0-setup.exe (or dist/MyApp-1.0.0-windows.zip)
Windows produces a standalone installer or portable zip distribution (with macOS and Linux packaging in active development). No separate R installation or browser server is required on the target machine when using the bundled runtime.
Development version
devtools::install_github("Janakiraman-311/RDesk")
| Feature | Shiny | RInno (archived) | Electron + R | RDesk |
|---|---|---|---|---|
| Network ports required | Yes | Yes | Yes | No |
| Works fully offline | No | Partial | Partial | Yes |
| Native file dialogs and menus | No | No | Via JS | Yes |
| Distribution format | Server URL | Installer | Installer | Bundle or installer |
| Bundle size | Server-side | 350 MB+ | 350-500 MB | ~200 MB |
| Skills required | R | R + Electron | R + Node.js | R only |
mirai and callr with support for progress updates, loading states, and cancellation.build_app() bundles a matching R runtime so the shipped app and its packages stay aligned.rdesk_create_app() generates a working application template with handlers, structure, and theme support.RDesk is built for R developers who need to package a local statistical or data tool for non-R users.
Two apps ship with RDesk demonstrating different complexity levels.
CarsAnalyser - minimal dashboard
app_dir <- system.file("apps/mtcars_dashboard", package = "RDesk")
source(file.path(app_dir, "app.R"))
Data Intelligence Studio - full-featured data profiling tool
app_dir <- system.file("apps/data_studio", package = "RDesk")
source(file.path(app_dir, "app.R"))
Full documentation is available 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 common Shiny patterns to RDesk |
| Async Guide | Background tasks, progress overlays, cancellation |
| Cookbook | Practical desktop-app recipes |
| Why RDesk? | Project background and architecture |
MIT (c) Janakiraman G.