Join the Shiny Community every month at Shiny Gatherings

R Community X-Session Recap: Enterprise Shiny Apps From Concept to Production

Thank you to the participants of the latest RStudio Community X-Session: Enterprise Shiny Apps From Concept to Production. The R community X-Session webinar with the global Shiny experts at Appsilon attracted 700+ attendees. We’re always excited to share our experience developing world-class Shiny Apps with the R community.

Need support services for your applications? Appsilon is a proud RStudio Full Service Certified Partner

With so many participants we couldn’t answer everyone within the Q&A panel. Follow-up blogs for each presentation will cover the Q&A’s and address those left unanswered. Do you have another question for us? Join the conversation and leave a post below.


Do you need solutions for your Shiny application fast? Appsilon builds the world’s most advanced enterprise R Shiny applications, with a specialization in enterprise Shiny dashboards. Fortune 500 companies trust Appsilon to build custom Shiny apps, scale PoCs, improve Shiny app performance, and enhance dashboard UI.


X-Session Presentations

The presentations selected aim to bring value for developers from all skill levels. There’s something for everyone, whether you’re looking to enhance your Shiny applications or build your dev skill set. Follow the Appsilon blog for video recordings and slides from the presentations.

Shepherding Your Shiny App from Proof of Concept to Production

Marcin Dubel, Software Engineer, Grand Prize Winner 2021 Shiny Contest

Marcin’s presentation is an overview of what the joint RStudio and Appsilon R Community X-Session is all about. It’s an excellent launching point for developers of all skill levels. Marcin provides a general, noncomprehensive take on building Shiny apps from A to Z. 


One advantage of Shiny applications is that a proof of concept can be created quickly and easily. It’s a great way for subject matter experts to present their ideas to stakeholders before moving on to production. But making the app production-ready might require help from experienced software developers. You can make more headway by focusing on two areas: user experience and future maintenance. This way, you’ll be sure that the app is scalable, performant, bug-free, extendable, and enjoyable. Close collaboration between engineers and experts paves the way to many successful projects in data science and is Appsilon’s tried-and-true path to production-ready solutions.

The very first step should always be building a convenient and (importantly) reproducible workflow, so start by setting up the development environment and organizing the folder structure [renv + docker]. Once completed, engineers should limit the codebase by cleaning the code ( i.e., removing redundant comments, extracting the constants and inline styles [ymls + styler]). 

Now the real fun begins. Follow the steps below to make the most of it:

  1. Extract the business logic into separate functions, modules, and classes [packages/R6 + plumber]. Restrict reactivity to a minimum.
  2. Check the logic [data.validator + drake].
  3. Add tests [testthat + cypress/shinytest].
  4. Organize your /www and move actions to the browser [shiny + css/js].

5.Finally, style the app [sass/bslib + shiny.fluent].

And, voila! A world-class Shiny app is ready to onboard users hungry for data-driven insights

Improve Your Code – Best Practices for Durable Code

Anna Skrzydło, Project Leader

Anna breaks down how individuals and teams can improve coding practices to build better code. This presentation is recommended for jr devs and team leaders. But a senior developer can find utility here too.


Shiny applications often start as small projects and grow as they get noticed. This is when the problems usually begin. It quickly turns out that implementing one small change takes two days, and adding a new requirement leads to rebuilding the whole application. Assuming, of course, that further development is done by the same team, any new developer joining the team first needs a one-month onboarding…

If that sounds familiar, follow along to learn more about:

  1. modules (Shiny modules, wahani/modules, R6 classes)
  2. tests (unit tests, but also other types of tests)
  3. strategies (code structure, automation)

Investing more into the topics listed above can help make your code easier to develop and maintain. 

Each of the three topics has two parts so that everyone can find something useful:

  • Quickstart – perfect for beginners. It aims at giving you the basic concept so that you can begin using it immediately.
  • Further steps – for those who are already familiar with the concept and use it frequently. It guides you through advanced steps, so you can to get even more out of your coding practices.

Scaling/Infrastructure – Why is My Shiny App Slow?

Pedro Silva, R/Shiny Developer at Appsilon, Grand Prize Winner 2020 Shiny Contest

Performance is an inevitable topic for all successful applications. Here Pedro discusses Appsilon’s approach to performance on an infrastructure level. This presentation is geared more towards developers with a higher skill level.


For a Data Scientist, Shiny can be an amazing tool for creating fast and powerful prototypes and dashboards. But what to do when your application becomes TOO popular and more and more people want to use it? 

As the number of users grows, keeping up with the demand of a Shiny application can be tricky, and there is only so much you can do to improve performance at the code level. 

This presentation gives an overview of our custom approach to improving Shiny dashboard performance on an infrastructure level. It also includes tips for scaling Shiny dashboards to hundreds of concurrent users, while keeping your budget under control.

UI/UX in Shiny Apps and Live Coding Session

Kamil Żyła, Full Stack Engineer at Appsilon

An ever-important aspect of an App’s success is UI/UX. Kamil walks through the importance of a good UI and Appsilon’s methods for ensuring quality UX. This presentation is ideal for devs of all levels of experience.


In this talk, I present the functionality and ideas behind a new open-source package we have developed called shiny.fluent.

UI plays a huge role in the success of Shiny projects. shiny.fluent enables you to build Shiny apps in a novel way, using Microsoft’s Fluent UI as the UI foundation. It gives your app a beautiful, professional look and a rich set of components while keeping the speed of development that Shiny is famous for.

Fluent UI is based on the Javascript library React, so it’s challenging to make it work with Shiny. We have put the parts responsible for making this possible into a separate package called shiny.react. This package enables you to port other React-based components and UI libraries so that they work in Shiny. 

During the talk, I demonstrate how to use shiny.fluent to build your own Shiny apps and explain how we solved the main challenges in integrating React and Shiny.

Stay Tuned for the X-Session Presentation Materials

The upcoming blog posts will include summaries and key takeaways from each X-Session presentation. The posts will contain slides, video recordings, and replies to questions submitted for the Q&A. If you have more questions or comments, we encourage you to post them below.

Subscribe to our newsletter for tutorials, exclusive articles, and updates. Be the first to hear about Appsilon events like the RStudio X-Session. Catch early-bird registration and other exclusive deals with the Appsilon newsletter.

R Community, We Need Your Help!

Appsilon Tech Team Members regularly contribute to open-source packages. This is part of our commitment to positively impact the world through technology. Consider dropping a star on your favorite shiny packages at our Github to let us know we’re on the right track.

Do you have any comments or questions? Swing by our feedback threads, like the discussion at our new shiny.fluent package. We love to hear from the R community. If you spot an issue or room for improvement, don’t hesitate to send a pull request.