# Verify RDesk is installed correctly
packageVersion("RDesk")
#> [1] '1.0.7'
# Check that the example app is bundled (if existing)
app_path <- system.file("templates/hello", package = "RDesk")
if (nzchar(app_path)) {
file.exists(app_path)
}
#> [1] TRUEData analysts build powerful tools in R, but sharing them with non-technical users is difficult. Shiny is excellent for web dashboards, but it requires a server and a steady network connection.
RDesk solves this by packaging your R code into a native desktop application. It runs as a standalone bundle/executable with zero network overhead and no server required.
RDesk works out-of-the-box on modern systems (Windows, macOS, and Linux). You only need R and a C++ compiler/toolchain (like Rtools on Windows, Xcode Command Line Tools on macOS, or GCC/clang on Linux) installed.
The fastest way to build an RDesk application is using the built-in scaffolding tool. This generates a functional dashboard template featuring a sidebar, KPI cards, and an asynchronous charting engine.
library(RDesk)
# Create a dashboard template in a new directory
RDesk::rdesk_create_app("MyDashboard")Navigate to the MyDashboard folder and run
app.R to see the results.
The core value of RDesk is the ability to turn your R code into a
standalone .exe that runs on any machine without requiring
a pre-installed R version.
First build note: RDesk copies the active R runtime and already-installed package dependencies into the bundle. Install application dependencies in the development library before calling
build_app().
The resulting .zip file in the dist/ folder
contains exactly what you need to distribute your tool. The end-user
simply unzips and runs MyFirstApp.exe.
If your project uses renv, commit your
renv.lock in the project root. RDesk’s GitHub Actions
workflows will automatically restore from that lockfile before building.
Additionally, build_app() writes a bundle-level
renv.lock into each distributable when renv is
active.
Zero network ports, zero firewall issues. Communication happens over standard input/output using a high-speed JSON protocol.