Provides tools to export 'Shiny' applications written in 'R' or 'Python' as standalone desktop applications using 'Electron'. The applications run as native, cross-platform programs. Depending on the runtime strategy chosen, end users do not need 'R' or 'Python' installed on their machine.
Turn any Shiny app (R or Python) into a standalone desktop application
that runs on macOS, Windows, and Linux. No web server, no browser tab,
no deployment infrastructure. Just an .app, .exe, or AppImage your
users double-click to open.
[!IMPORTANT]
This package is currently in the prototype/experimental stage. It is not yet on CRAN and may have rough edges. Not recommended for production applications at this time.
Install the released version from CRAN:
install.packages("shinyelectron")
Or the development version from GitHub:
# install.packages("pak")
pak::pak("coatless-rpkg/shinyelectron")
library(shinyelectron)
# Check your system
sitrep_shinyelectron()
# Try a bundled demo
export(
appdir = example_app("r"),
destdir = "~/Desktop/my-first-app",
run_after = TRUE
)
That’s the whole workflow: one call converts your app, wraps it in Electron, builds a distributable, and launches it. Takes about a minute for a small app.
Each demo is packaged as a desktop app you can download, install, and
launch. The Download Prebuilt Demos
guide
has a build of every demo, for every runtime strategy, on each platform,
with a one-click installer for yours; or browse the releases
page
directly. The simplest are the shinylive builds: they need no R,
Python, or internet, since everything runs inside the app. On Linux each
download is a portable AppImage you can run straight away.
[!NOTE]
The macOS demos are signed and notarized under our Apple Developer Program membership ($99/year), so they open cleanly. The Windows demos are unsigned, so the first launch shows a Microsoft Defender SmartScreen prompt: choose More info, then Run anyway. If you distribute your own apps, you will need to pay for code signing on each platform to avoid these prompts, a recurring budget line item for organizations. Our development is on macOS and Linux, so if you would like to help fund a Windows certificate for these demos, sponsorship is welcome at github.com/sponsors/coatless.
shinyelectron supports two app types, autodetected from the contents of
your appdir:
r-shiny: detected from app.R or ui.R + server.Rpy-shiny: detected from app.pyBoth types work with five runtime strategies for delivering the app to the end user:
| Strategy | What Ships | First Launch | User Needs | Best For |
|---|---|---|---|---|
shinylive |
Electron + WASM bundle | Instant, offline | Nothing | Simple apps; deps that run in WebR or Pyodide (default) |
bundled |
Electron + R/Python runtime | Instant, offline | Nothing | Offline distribution; predictable runtime |
auto-download |
Electron + downloader | Needs internet | Nothing | Public distribution; smaller download |
system |
Electron only | Finds R/Python on PATH | R or Python pre-installed | Internal tools for users who already have R or Python |
container |
Electron + container config | Needs Docker | Docker or Podman | Complex system deps; reproducibility |
shinylive is the default when runtime_strategy is not set. See the
Runtime Strategies
guide
for the full decision matrix.
[!NOTE]
Linux note for
r-shiny: thebundledandauto-downloadstrategies rely on the portable-r project, which currently publishes builds for macOS and Windows only. On Linux, useshinylive,system(the user has R installed), orcontainer(Docker or Podman). Python apps work with all strategies on Linux via python-build-standalone.
These are required on the build machine (where you run export()).
What end users need depends on the runtime strategy: nothing for
shinylive, bundled, or auto-download; R or Python pre-installed
for system; Docker or Podman for container.
install_nodejs() to install locally
without admin rightsPlatform build tools:
| Platform | Requirement |
|---|---|
| macOS | Xcode Command Line Tools |
| Windows | Visual Studio Build Tools |
| Linux | build-essential (gcc, make) |
[!TIP]
Run
sitrep_shinyelectron()to verify your system is ready before your first export. It checks everything above and tells you what’s missing.
_shinyelectron.yml referenceTurning Shiny apps into desktop apps is a problem many people have attacked over the years. shinyelectron stands on the shoulders of prior packaging attempts, community tutorials, and the broader WebR / Pyodide / Electron ecosystems. The list below credits the specific projects whose approaches directly informed this one; we’re grateful to the much larger community of contributors experimenting in this space.
electrify() function; automates Windows builds.electron-quick-start
repository and including portable R versions.bundled and auto-download strategies.AGPL (>= 3)
electricShine (R
package)RInno (R package)Photon (RStudio Add-in)COVAIL
electron-quick-startDesktopDeployR
(framework)