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

By:
Appsilon Team
August 17, 2021

<p id="anchor-1">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 <b>700+</b> attendees. We’re always excited to share our experience developing world-class Shiny Apps with the R community.</p> <blockquote><strong>Need support services for your applications? Appsilon is a proud <a href="https://appsilon.com/appsilon-data-science-is-now-an-rstudio-full-service-certified-partner/" target="_blank" rel="noopener noreferrer">RStudio Full Service Certified Partner</a>. </strong></blockquote> <div class="" data-block="true" data-editor="20r4h" data-offset-key="8uiri-0-0"> <div class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr" data-offset-key="8uiri-0-0">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. </div> &nbsp; <div data-offset-key="8uiri-0-0"></div> <div class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr" data-offset-key="8uiri-0-0">Do you need solutions for your Shiny application fast? Appsilon builds <b>the world’s most advanced enterprise</b><a href="https://appsilon.com/shiny" target="_blank" rel="noopener noreferrer"> <b>R Shiny</b></a><b> applications</b>, with a specialization in<a href="https://appsilon.com/why-you-should-use-r-shiny-for-enterprise-application-development/" target="_blank" rel="noopener noreferrer"> enterprise Shiny dashboards</a>. Fortune 500 companies trust Appsilon to build custom Shiny apps, scale PoCs, improve Shiny app performance, and enhance dashboard UI.</div> &nbsp; <ul><li><a href="#anchor-2" target="_blank" rel="noopener noreferrer">R Community X-Session Presentations</a></li><li><a href="#anchor-3" target="_blank" rel="noopener noreferrer">Shepherding Your Shiny App from Proof of Concept to Production</a></li><li><a href="#anchor-4" target="_blank" rel="noopener noreferrer">Improve Your Code - Best Practices for Durable Code</a></li><li><a href="#anchor-5" target="_blank" rel="noopener noreferrer">Scaling/Infrastructure - Why is My Shiny App Slow?</a></li><li><a href="#anchor-6" target="_blank" rel="noopener noreferrer">UI/UX in Shiny Apps and Live Coding Session</a></li><li><a href="#anchor-7" target="_blank" rel="noopener noreferrer">Stay Tuned For X-Session Presentation Materials</a></li></ul> <h2 id="anchor-2">X-Session Presentations</h2> 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<a href="https://appsilon.com/blog/"> the Appsilon blog</a> for video recordings and slides from the presentations. <img class="aligncenter wp-image-7715 size-full" src="https://webflow-prod-assets.s3.amazonaws.com/6525256482c9e9a06c7a9d3c%2F65b02032ebdf0e3658804265_Shiny-X-Session-Followup.webp" alt="X-Session 2021 speakers and presentations" width="1200" height="800" /> <h3 id="anchor-5">Shepherding Your Shiny App from Proof of Concept to Production</h3> <a href="https://appsilon.com/author/marcin/" target="_blank" rel="noopener noreferrer"><b>Marcin Dubel</b></a><b>, Software Engineer, </b><a href="https://appsilon.com/shiny-environmental-video-game-wins-grand-prize-at-rstudio-shiny-contest/" target="_blank" rel="noopener noreferrer"><b>Grand Prize Winner 2021 Shiny Contest</b></a> 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.  Abstract: 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 <b>setting up the development environment</b> and <b>organizing the folder structure </b>[renv + docker]. Once completed, engineers should limit the codebase by <b>cleaning the code ( </b>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: <ol><li><b>Extract the business logic</b> into separate functions, modules, and classes [packages/R6 + plumber]. Restrict reactivity to a minimum.</li><li><b>Check the logic </b>[data.validator + drake].</li><li><b>Add tests </b>[testthat + cypress/shinytest].</li><li> Organize your /www and <b>move actions to the browser </b>[shiny + css/js].</li></ol> 5.Finally, <b>style the app </b>[sass/bslib + shiny.fluent]. And, voila! A world-class Shiny app is ready to onboard users hungry for data-driven insights <h3 id="anchor-5">Improve Your Code - Best Practices for Durable Code</h3> <b>Anna Skrzydło, Project Leader</b> 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. Abstract: 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: <ol><li style="font-weight: 400;" aria-level="3"><b>modules</b> (Shiny modules, wahani/modules, R6 classes)</li><li style="font-weight: 400;" aria-level="3"><b>tests</b> (unit tests, but also other types of tests)</li><li style="font-weight: 400;" aria-level="3"><b>strategies</b> (code structure, automation)</li></ol> 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: <ul><li style="font-weight: 400;" aria-level="3">Quickstart – perfect for beginners. It aims at giving you the basic concept so that you can begin using it immediately.</li><li style="font-weight: 400;" aria-level="3">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.</li></ul> <h3 id="anchor-5">Scaling/Infrastructure - Why is My Shiny App Slow?</h3> <a href="https://appsilon.com/author/pedro/" target="_blank" rel="noopener noreferrer"><b>Pedro Silva</b></a><b>, R/Shiny Developer at Appsilon, </b><a href="https://appsilon.com/shiny-videogame-video-tutorial/" target="_blank" rel="noopener noreferrer"><b>Grand Prize Winner 2020 Shiny Contest</b></a> 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. Abstract: 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. <h3 id="anchor-5">UI/UX in Shiny Apps and Live Coding Session</h3> <b>Kamil Żyła, Full Stack Engineer at Appsilon</b> 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. Abstract: 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. <h2 id="anchor-7">Stay Tuned for the X-Session Presentation Materials</h2> 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. <h2>R Community, We Need Your Help!</h2> <div class="" data-block="true" data-editor="20r4h" data-offset-key="81ld2-0-0"> <div class="public-DraftStyleDefault-block public-DraftStyleDefault-ltr" data-offset-key="81ld2-0-0"> 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<a href="https://shiny.tools/" target="_blank" rel="noopener noreferrer"> shiny packages</a> at our <a href="https://github.com/Appsilon" target="_blank" rel="noopener noreferrer">Github</a> to let us know we’re on the right track. Do you have any comments or questions? Swing by our feedback threads, like the <a href="https://github.com/Appsilon/shiny.fluent/discussions/24" target="_blank" rel="noopener noreferrer">discussion</a> at our new <a href="https://github.com/Appsilon/shiny.fluent" target="_blank" rel="noopener noreferrer">shiny.fluent package.</a> 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. </div> </div> <a href="https://appsilon.com/shiny/" target="_blank" rel="noopener noreferrer"><img class="aligncenter size-full wp-image-7584" src="https://webflow-prod-assets.s3.amazonaws.com/6525256482c9e9a06c7a9d3c%2F65b020286d8f975c0820526a_World-ClassEnterpriseShinyDashboards_city_Appsilonlogo_wht_15.webp" alt="world class enterprise Shiny dashboards" width="1914" height="880" /></a> </div>

Have questions or insights?

Engage with experts, share ideas and take your data journey to the next level!
Explore Possibilities

Share Your Data Goals with Us

From advanced analytics to platform development and pharma consulting, we craft solutions tailored to your needs.

Talk to our Experts
shiny dashboards
open source
community
rstudio
x-session