Join us at rstudio::conf(2022) to sharpen your R skills. | July 25-28th in D.C.
Learn More
rstudio::conf(2022) | July 25-28th in D.C. 7/25 - 7/28 in D.C.
The premier IDE for R
RStudio anywhere using a web browser
Put Shiny applications online
Shiny, R Markdown, Tidyverse and more
Next level training for you and your team
Do, share, teach and learn data science
An easy way to access R packages
Let us host your Shiny applications
A single home for R & Python Data Science Teams
Scale, develop, and collaborate across R & Python
Easily share your insights
Control and distribute packages
RStudio
RStudio Server
Shiny Server
R Packages
RStudio Academy
RStudio Cloud
RStudio Public Package Manager
shinyapps.io
RStudio Team
RStudio Workbench
RStudio Connect
RStudio Package Manager
rstudio::conf 2018
Scaling Shiny apps with async programming
February 26, 2018
One persistent challenge with developing Shiny apps for live deployment, has been the R language runtime's single-threaded nature. Because of this, a given Shiny app process can only do one thing at a time: if it is fitting a model for one client, it cannot simultaneously serve up a CSV download for another client. Asynchronous programming offers a way to offload certain classes of long-running operations from the main R thread, such that Shiny apps can remain responsive. The next major release of Shiny will include deep support for asynchronous programming via promises, inspired by the JavaScript abstraction of the same name, but with significant enhancements to integrate seamlessly with Shiny's reactive constructs and to allow app authors to write code that looks mostly like idiomatic R. Programming with these promises has its own learning curve, but the payoff can be huge if your app has a significant bottleneck.
promises
Joe Cheng is the Chief Technology Officer at RStudio and was the original creator of the Shiny web framework, and continues to work on packages at the intersection of R and the web.