Skip to contents

RDesk hex logo

CRAN status R-CMD-check pkgdown MIT licenseWindows macOS Linux

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, 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.

Quick Start

# 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
# macOS   -> dist/MyApp.app and dist/MyApp-1.0.0.dmg
# Linux   -> dist/MyApp-1.0.0/ and dist/MyApp-1.0.0.tar.gz

Windows can produce an installer, macOS can produce an .app bundle and optional .dmg, and Linux produces a portable bundle plus .tar.gz. 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")

Why 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

Core Features

  • Zero-port IPC - R and the UI communicate through native stdin/stdout pipes and platform webview bindings, without opening network ports.
  • Async by default - Non-blocking background work using mirai and callr with support for progress updates, loading states, and cancellation.
  • Version-safe runtime - build_app() bundles a matching R runtime so the shipped app and its packages stay aligned.
  • Modern web UI - Build the interface with plain HTML, CSS, and JavaScript while keeping the backend in R.
  • Automated scaffolding - rdesk_create_app() generates a working application template with handlers, structure, and theme support.
  • Native packaging - Produce platform-specific bundles and installers without adopting a browser-server deployment model.

Who It’s For

RDesk is built for R developers who need to package a local statistical or data tool for non-R users.

  • Pharma and clinical - distribute review or validation tools for offline execution.
  • Consulting - package analytical models into branded tools without exposing source code.
  • Internal teams - replace complex spreadsheet macros with structured R applications.
  • Restricted environments - ship local tools where listening ports are disallowed or heavily scrutinized.

Example Apps

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"))

Documentation

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

License

MIT (c) Janakiraman G.