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-03-07 / Murielle Delmotte / package

Customize your expedition: Create a unique documentation for your R Package

Ah, pkgdown… That fantastic tool that turns your R package documentation into a website. But sometimes, it lacks a bit of personality. No worries, pkgdown.yml is here to add customization and make your site shine like never before. In this article, we will explore some secrets of the pkgdown.yml file that will help you personalize your documentation. Ready for the ...

2025-02-03 / Colin Fay / development, javascript, mobile

Rlinguo — Why Did We Build It?

Header image via ChatGPT We recently released something unprecedented: an app that brings R to mobile. Yes, you read that right — R, the statistical programming language, is now in the palm of your hand. Whether you’re an environmental researcher, a student, or a logistics professional, R on mobile is here to revolutionize how you work with data on the ...

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-18 / Colin Fay / development, mobile

Introducing Rlinguo, a native mobile app that runs R

TL;DR Rlinguo is a groundbreaking mobile application that uses R in the backend to handle its business logic. Available for download now: iOs on the AppStore Android on the Google Play Store Yes, you read that right: the future is now, and we can run R on your mobile phone. Once upon a time… I’ve been building web apps with ...

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-10-14 / Yohann Mansiaux / development, package, tips

Beyond Functions: How to Enrich an R Package with Data

As package developers, we often focus on custom functions, their documentation, and unit testing. To provide a more complete user experience, it can be helpful to include data within the package. Here’s everything you need to know! If you’re not familiar with unit testing, we recommend reading our article on the subject: : https://rtask.thinkr.fr/expectations-verified-dive-into-the-world-of-unit-tests-with-expect_/ Short on time? Here’s the gist ...

2024-10-04 / Murielle Delmotte / development, package, tips

Expectations, Verified! Dive into the World of Unit Tests with expect_*()

Unit tests are essential in the development of an R package. They ensure that your functions work as expected while protecting you from regressions when you improve or modify your code. Thanks to the {testthat} package, writing and automating tests in R becomes simple and intuitive. At the core of this approach are the expect_*() functions, which play a central ...

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

2024-08-26 / Colin Fay / golem, package

{golem} 0.5.0 is now available

Header image generated by ChatGPT We are thrilled to announce the release of {golem} version 0.5.0! This update comes packed with new features, enhancements, and bug fixes that will streamline your Shiny app development process. You can download the latest version from your favorite CRAN repository, or by running the following command in R: pak::pak( “thinkr-open/[email protected]” ) What’s New in This Version? ...

gtlabr hex logo inside a rectangle

2024-05-17 / Sébastien Rochette / development, docker, package

gitlabr V2.1.0 – gitlab-ci with ‘pak’ and functions to deal with groups on GitLab

A lot of cleanups, new features, and bug fixes for this new version of ‘gitlabr’. You will find brand-new CI/CD templates and functions to manage GitLab groups from R. Brand new gitlab-ci with ‘pak’, ready to use The template for checking R packages uses {pak} for dependency management. You will no longer have issues with missing system dependencies. You should ...