2026-07-10 / Colin Fay / golem, shiny

{golem} 1.0.0 is here

After years of powering Shiny applications in production, {golem} — our opinionated framework for building production-grade Shiny apps as R packages — has finally reached a symbolic milestone: version 1.0.0. This is more than a version bump. It marks a mature, stable API, and it’s the right moment to clean up a few legacy behaviors along the way. Here’s what’s ...

2026-03-10 / Colin Fay / shiny

Sharing data across shiny modules, an update

Some people have recently been vocal about misuses of the “stratégie du petit r”, a mechanism for sharing data across {shiny} modules that was detailed both in the Engineering Production-Grade Shiny Apps book and in an older post written in 2019 on this blog. And yes, if you’re wondering, I did feel old when I realized this blog post is ...

talk about tests

2025-06-12 / Arthur Bréant / development, golem, shiny

From lab to real life: How your Shiny application can survive its users

From prototype to production, make sure nothing breaks… You’ve created a fantastic mockup and your client is delighted. You’re ready to move to production with your application. But one question haunts you: how can you ensure that your application will remain stable and functional through modifications and evolutions? The answer comes down to one word: testing. Three weeks ago, part ...

2025-06-03 / Vincent Guyader / docker, development, shiny

Containerizing Shiny Apps with {shiny2docker}: A Step-by-Step Guide

Deploying a Shiny application to different servers or sharing it with others can be challenging due to differences in R package versions and system requirements. Containerization offers a solution: by packaging your Shiny app and its environment into a Docker container, you ensure it runs consistently anywhere Docker is available. However, not every Shiny developer is familiar with writing Dockerfiles ...

Shiny Security

2025-05-21 / Arthur Bréant / database, development, javascript, security, shiny, sql

Security blind spots in Shiny: why your app is more vulnerable than you think

Buckle up, we’re talking about security… While developing the Signature.py application, ThinkR recently faced a security issue – in Python – that deserves our full attention. Versioned on Github, the Signature.py code is analyzed by Dependabot. This is a robot that automatically scans projects for obsolete or vulnerable dependencies and can potentially suggest corrective measures. Dependabot alerted us to a ...

2025-01-07 / Colin Fay / development, object-oriented, shiny

Setting values in R6 classes, and testing with shiny::MockShinySession

Context Recently, we worked on testing a {shiny} app that relies on values stored within the session$request object. This object is an environment that captures the details of the HTTP exchange between R and the browser. Without diving too deeply into the technicalities (as much as I’d love to 😅), it’s important to understand that session$request contains information provided by ...

2024-12-09 / Colin Fay / development, shiny

Parallel and Asynchronous Programming in Shiny with future, promise, future_promise, and ExtendedTask

Illustration via ChatGPT. There are three hard things in computer science. One is making ChatGPT write “Invalidation” correctly on an image. ​ There’s a saying that goes: “There are only two hard things in computer science: cache invalidation and naming things.” Well, I’d argue there are actually three: 2. Cache Invalidation 1. Naming things 3. Asynchronous Computing   Yes, that’s ...

2024-11-22 / Arthur Bréant / development, shiny

Signature.py: Award-Winning Application at the 2024 Shiny Contest

🏆 We are excited to announce that {signature.py} is the grand winner of the 2024 Shiny Contest in the category ‘Best Shiny Application with Python’! This year, Posit relaunched the Shiny Contest, a competition dedicated to the development of Shiny applications. Participants are asked to create a personal or professional application that addresses a specific problem. The applications are then ...

2024-09-03 / Yohann Mansiaux / golem, javascript, shiny

Boost your shiny app with sparkling data visualizations: a deep dive into Chart.js JavaScript library

Let’s continue our exploration of integrating JavaScript code into a {shiny} application! We will show how to move beyond the classic graphs produced in base R or with {ggplot2} to explore the interactive dataviz production libraries of JavaScript, particularly the Chart.js library. If you missed our first article on integrating JavaScript libraries into a {shiny} application I invite you to ...

2023-06-05 / Vincent Guyader / shiny

Mastering file download in shiny

But why does downloadHandler now return an empty file!? DownloadHandler context When we start working with {shiny}, we often reach a point where it is necessary to offer the user the option to download a document generated by the application. This document can be a PDF report, a PNG or JPEG image, or anything else. The appropriate function for this ...