Power BI vs R Shiny: Two Popular Excel Alternatives Compared
<h2><span data-preserver-spaces="true">tl;dr </span><span data-preserver-spaces="true">Power BI vs R Shiny </span></h2> <span data-preserver-spaces="true">Choosing the appropriate dashboarding/reporting/BI tool has never been harder. There are plenty of genuinely great options such as </span><a href="https://appsilon.com/why-you-should-use-r-shiny-for-enterprise-application-development/" target="_blank" rel="noopener noreferrer"><span data-preserver-spaces="true">R Shiny</span></a><span data-preserver-spaces="true">, Power BI, and Tableau. Today we'll compare two widely used tools at Fortune 500 companies; Power BI vs R Shiny. </span> <ul><li><span data-preserver-spaces="true"><strong>Power BI</strong> - a <strong>collection of software services, apps, and connectors</strong> that work together to turn unrelated sources into coherent, visually immersive, and interactive insights (<em>source: </em></span><em><a class="editor-rtfLink" href="https://docs.microsoft.com/en-us/power-bi/fundamentals/power-bi-overview" target="_blank" rel="noopener noreferrer">Microsoft</a></em><span data-preserver-spaces="true">)</span></li><li><span data-preserver-spaces="true"><strong>R Shiny</strong> - a <strong>web framework written in R</strong>, widely used to make dashboards and interactive web applications</span></li></ul> <blockquote><span data-preserver-spaces="true">More of a Tableau fan? Learn <a href="https://appsilon.com/tableau-vs-r-shiny/">how Tableau compares to R Shiny</a>?</span></blockquote> <span data-preserver-spaces="true">One thing to keep in mind: R Shiny is not a reporting/dashboarding tool. It's actually a full web framework. </span> <span data-preserver-spaces="true">As most people use it to make dashboards, and many of our customers compare R Shiny with Power BI when they invest in analytical solutions, we can consider this comparison fair. </span> <span data-preserver-spaces="true">We'll start with a <a href="#basic-overview">basic overview</a> of Power BI and then compare both tools in various areas, such as:</span> <ul><li><a href="#connectivity">Connectivity</a></li><li><a href="#chart-types">Chart Types</a></li><li><a href="#ease-of-use-1">Ease of Use: Simple Charts</a></li><li><a href="#ease-of-use-2">Ease of Use: Simple Dashboards</a></li><li><a href="#user-input">User Input and Interactivity</a></li><li><a href="#visual-styling">Visual styling</a></li><li><a href="#conclusion">Conclusion</a></li></ul> <span data-preserver-spaces="true">At</span> <a class="editor-rtfLink" href="https://appsilon.com/shiny" target="_blank" rel="noopener noreferrer"><span data-preserver-spaces="true">Appsilon</span></a><span data-preserver-spaces="true">, we are global leaders in R Shiny, and we've developed some of the world's most</span> <a class="editor-rtfLink" href="https://demo.appsilon.com/" target="_blank" rel="noopener noreferrer"><span data-preserver-spaces="true">advanced R Shiny dashboards</span></a><span data-preserver-spaces="true">, so we have a natural bias toward using Shiny. However, many members of our team have plenty of experience using Power BI in professional settings. We will do our best to be impartial in this article to help you decide whether Power BI or R shiny is genuinely best for your particular needs.</span> <h2 id="basic-overview"><span data-preserver-spaces="true">Power BI Overview</span></h2> <span data-preserver-spaces="true">As mentioned previously, Power BI is used to represent interactive insights from various data sources visually. It is a perfect tool for reporting, which is a read-only operation and is relatively easy to build and maintain. Power BI is also one of the easiest tools to get started with, as only a couple of crash courses should get you up to speed in no time. We're not saying R is difficult to learn, but the drag and drop GUI interface is considered to be easier to learn than R, at least for business folks.</span> <h3>Power BI Pros</h3> <span data-preserver-spaces="true">But here's one of the most important selling points - </span><strong><span data-preserver-spaces="true">Power BI just looks good out of the box</span></strong><span data-preserver-spaces="true">. You don't have to be an expert to produce great-looking visualizations with Power BI. Shiny requires much more manual labor to produce great-looking dashboards. Manual work isn't necessarily bad, as there's no limit to what you can do if you're willing to put the effort in, but simple drag and drop tools are more than enough most of the time.</span> <blockquote>Searching for good-looking Shiny dashboard examples? Check out <a href="http://demo.appsilon.com" target="_blank" rel="noopener noreferrer">Appsilon's Shiny Demo Gallery</a>.</blockquote> <h3>Power BI Cons</h3> <span data-preserver-spaces="true">For every pro, there's a con, and PowerBI is no exception. <strong>One of the most significant disadvantages of Power BI is that it is </strong></span><strong>read-only</strong>. <span data-preserver-spaces="true">As a user, you cannot use charts/tables to make decisions and save them in a database directly. <strong>Also, Power BI doesn't have an accessible source code.</strong> You can only edit fields in WYSIWYG mode, which makes Power BI easy to start but difficult to maintain. Having no source code makes it nearly impossible to have proper version control, automatically test logic, or collaborate on large projects.</span> <h3>Power BI Options</h3> <span data-preserver-spaces="true">Power BI comes in a few different flavors, listed below:</span> <ul><li><em><span data-preserver-spaces="true">Power BI Desktop </span></em><span data-preserver-spaces="true">- an application you can download and install on your computer. Available only</span><strong><span data-preserver-spaces="true"> for Windows</span></strong><span data-preserver-spaces="true">. It has powerful data analysis capabilities and can connect to many data sources. It is used to perform analysis, create visualizations, and create reports.</span></li><li><em><span data-preserver-spaces="true">Power BI Service (Pro) </span></em><span data-preserver-spaces="true">- web application. It is used to create visualizations and reports. The biggest selling point is dashboards -and they are easy to make. Also, it's easier to share results thanks to the collaboration mode.</span></li><li><em><span data-preserver-spaces="true">Power BI Mobile </span></em><span data-preserver-spaces="true">- mobile application for both Android and iOS. It is used only to access your data from anywhere, not to perform analysis.</span></li></ul> <span data-preserver-spaces="true">Most of our attention today will focus on the Power BI Desktop variant.</span> <h2 id="connectivity"><span data-preserver-spaces="true">Connectivity in Power BI vs R Shiny</span></h2> <span data-preserver-spaces="true">Power BI comes with many built-in connection types categorized into </span><em><span data-preserver-spaces="true">Files</span></em><span data-preserver-spaces="true">, </span><em><span data-preserver-spaces="true">Databases</span></em><span data-preserver-spaces="true">, </span><em><span data-preserver-spaces="true">Power Platform</span></em><span data-preserver-spaces="true">, </span><em><span data-preserver-spaces="true">Azure</span></em><span data-preserver-spaces="true">, and </span><em><span data-preserver-spaces="true">Online services</span></em><span data-preserver-spaces="true">, and is, without any doubt, more versatile than our last contestant - Tableau. As of late 2020, you find these connection options:</span> <img class="aligncenter size-full wp-image-5793" src="https://webflow-prod-assets.s3.amazonaws.com/6525256482c9e9a06c7a9d3c%2F65b021c532866bfaae10e783_001.gif" alt="PowerBI connection options" width="581" height="562" /> <span data-preserver-spaces="true">Put simply, Power BI doesn't come short when it comes to connectivity. On the other side of the equation, R Shiny uses R as the programming language of choice, so Shiny can connect to any source that R can. </span> <span data-preserver-spaces="true">A simple Google search will yield either a premade library or an example of API calls for any data source type. R Shiny can sometimes have an edge for domain-specific sources. Still, we've found multiple examples of Power BI handling domain-specific data sources, such as <a href="https://www.bimservices.it/power-bi-integration-with-bim/" target="_blank" rel="noopener noreferrer">CAD files</a>. </span> <p style="text-align: center;"><strong><span data-preserver-spaces="true">Winner (Connectivity): Tie</span></strong></p> <h2 id="chart-types"><span data-preserver-spaces="true">Chart Types in Power BI vs R Shiny</span></h2> <h3>Power BI Charts</h3> <span data-preserver-spaces="true">Power BI provides basic visualization options - bar, line, area, scatter, and pie charts, with a couple of fancier types such as maps, treemaps, funnels, and ribbon charts. Refer to the image below for a full list:</span> <img class="aligncenter size-full wp-image-5794" src="https://webflow-prod-assets.s3.amazonaws.com/6525256482c9e9a06c7a9d3c%2F65b021c6a9d828bc5e4d22cc_002-2.webp" alt="PowerBI chart options" width="321" height="144" /> <span data-preserver-spaces="true">Still, it might be more than enough for most use cases, as more sophisticated statistical plots don't appear too often in production dashboards. Also, you might have noticed these "R" and "Py" icons. This means you can use R and Python charts in Power BI, with just one caveat - the source code of these charts is not under version control.</span> <blockquote>Curious about <strong>R Shiny dashboards</strong>? Get started with an <a href="https://appsilon.com/dashboards-in-rshiny/" target="_blank" rel="noopener">introduction to dashboards in R Shiny</a>.</blockquote> <h3>R Shiny Charts</h3> <span data-preserver-spaces="true">In R Shiny, you can use any visualization library that's available in R, such as <code class="language-r">ggplot2</code> and <code class="language-r">plotly</code>. Here's an overview of the types of visualizations you can do with both:</span> <img class="size-full wp-image-5795" src="https://webflow-prod-assets.s3.amazonaws.com/6525256482c9e9a06c7a9d3c%2F65b0219392a26c843b649b5e_003.gif" alt="GGplot2 visualization options" width="1166" height="578" /> <em>GGplot2 options; Source: https://www.r-graph-gallery.com</em> <img class="size-full wp-image-5796" src="https://webflow-prod-assets.s3.amazonaws.com/6525256482c9e9a06c7a9d3c%2F65b021c9630b90ac6a8271a5_004.gif" alt="Plotly visualization options" width="1058" height="576" /> <em>Plotly options; Source: https://plotly.com/r/</em> <span data-preserver-spaces="true">Declaring a winner in this department is a no-brainer. </span> <span data-preserver-spaces="true">Sure, Shiny can do a lot, but Power BI can do all of that and much more. Power BI can handle its own charts and Python-generated ones.</span> <p style="text-align: center;"><strong><span data-preserver-spaces="true">Winner (Chart Types): Power BI</span></strong></p> <h2 id="ease-of-use-1"><span data-preserver-spaces="true">Ease of Use: Simple Charts in Power BI vs R Shiny</span></h2> <span data-preserver-spaces="true">We'll now get our hands dirty with recreating the same visualization in both Power BI and Shiny. For demonstration purposes, we'll use the Gapminder dataset, so make sure to download it if you're following along. The goal is to create a simple line chart, comparing average life expectancy over time per continent.</span> <h3>Simple Chart with Power BI</h3> <span data-preserver-spaces="true">Let's start with Power BI. We've imported the dataset and created the visualization with the following steps:</span> <img class="aligncenter size-full wp-image-5797" src="https://webflow-prod-assets.s3.amazonaws.com/6525256482c9e9a06c7a9d3c%2F65b021caf75d40a9af7276d3_005.gif" alt="Simple chart in PowerBI" width="1545" height="815" /> <span data-preserver-spaces="true">Power BI was designed to be easy to use for people from all backgrounds, making this simple chart a no-brainer to implement.</span> <h3>Simple Chart with R Shiny</h3> <span data-preserver-spaces="true">Replicating the same in R Shiny is quite a different story, as we need to write actual code. The dataset is available in R through the <code class="language-r">gapminder</code> package, so there's no need to download and import the provided CSV. Shinyintroduces some boilerplate code - an apparent downside for this simple chart but negligible for larger, real-world projects.</span> <span data-preserver-spaces="true">Here's the code:</span> <pre><code class="language-r">library(gapminder) library(ggplot2) library(dplyr) library(shiny) <br>ui <- fluidPage( titlePanel("Gapminder explorer", windowTitle = NULL), plotOutput("line") ) <br>server <- function(input, output) { output$line <- renderPlot({ data <- gapminder %>% group_by(year, continent) %>% summarise(avgLifeExp = mean(lifeExp)) <br> ggplot(data, aes(x = year, y = avgLifeExp, color = continent)) + geom_line(size = 1.5) + ggtitle("Average life expectrancy per continent through time") + labs(x = "Year", y = "Average life expectancy") + theme_light() + theme( plot.margin = unit(c(2, 1, 1, 1), "cm"), plot.title = element_text(vjust = 13), legend.position = c(0.25, 1.07), legend.direction = "horizontal" ) }) } <br>shinyApp(ui = ui, server = server)</code></pre> <span data-preserver-spaces="true">And here are the results:</span> <img class="aligncenter size-full wp-image-5822" src="https://webflow-prod-assets.s3.amazonaws.com/6525256482c9e9a06c7a9d3c%2F65b021cba2bcff34651636f4_Screenshot-2020-10-26-at-07.30.48.webp" alt="R Shiny simple line chart" width="768" height="461" /> <span data-preserver-spaces="true">As was the case with Tableau, there's no point in using R Shiny to produce single-chart and non-interactive dashboards. </span> <span data-preserver-spaces="true">This is one of the areas where Power BI dominates, as it's easy and intuitive to use. Also, charts in R require a bit of customization to look decent and interpretable, which comes out of the box with Power BI. But then again, you could just as well use Excel or Google Sheets for free!</span> <p style="text-align: center;"><strong><span data-preserver-spaces="true">Winner (Simple Charts): Power BI</span></strong></p> <h2 id="ease-of-use-2"><span data-preserver-spaces="true">Ease of Use: Simple Dashboards in Power BI vs Shiny</span></h2> <span data-preserver-spaces="true">Making a simple dashboard in Power BI was easy - a couple of clicks here and there, a couple of filters, and we're ready to go. The goal was to display three charts:</span> <ul><li><span data-preserver-spaces="true">Average life expectancy through time - as a line chart</span></li><li><span data-preserver-spaces="true">Total population per continent - only in the most recent year (2007), represented as a bar chart</span></li><li><span data-preserver-spaces="true">Life expectancy vs. GDP per capita - simple scatter plot, colored by continent</span></li></ul> <span data-preserver-spaces="true">The entire dashboard can then be filtered by continent - by selecting a single one or multiple. Here's what we've managed to create in Power BI:</span> <img class="aligncenter wp-image-5799 size-full" src="https://webflow-prod-assets.s3.amazonaws.com/6525256482c9e9a06c7a9d3c%2F65b021cefeb7b3e305d8422b_007.gif" alt="Simple PowerBI dashboard vs R Shiny dashboard (next image)" width="1720" height="785" /> <span data-preserver-spaces="true">To implement roughly the same dashboard in R Shiny, we need to write some R code. Once again, R is a relatively easy language to learn, so we don't see it as a problem for more tech-savvy users.</span> <span data-preserver-spaces="true">The following code recreates the dashboard we had in Power BI:</span> <pre><code class="language-r">library(shiny) library(gapminder) library(dplyr) library(ggplot2) <br>ui <- fluidPage( titlePanel("Gapminder explorer", windowTitle = NULL), sidebarPanel( width = 3, tags$h4("Filter"), selectInput( inputId = "continentSelect", label = "Continents", choices = c("Africa", "Americas", "Asia", "Europe", "Oceania"), selected = c("Africa", "Americas", "Asia", "Europe", "Oceania"), multiple = TRUE ) ), mainPanel( width = 9, fluidRow( column(7, tags$div( tags$h3("Average life expectancy through time"), plotOutput("line") )), column(5, tags$div( tags$h3("Total population per continent"), plotOutput("bar") )) ), fluidRow( column(12, tags$div( tags$h3("Life expectancy vs. GDP per capita"), plotOutput("scatter") )) ) ) ) <br>server <- function(input, output) { output$line <- renderPlot({ dataLifeExp <- gapminder %>% filter(continent %in% input$continentSelect) %>% group_by(year, continent) %>% summarise(avgLifeExp = mean(lifeExp)) <br> ggplot(dataLifeExp, aes(x = year, y = avgLifeExp, color = continent)) + geom_line(size = 1.5) + labs(x = "Year", y = "Average life expectancy") + theme( plot.margin = unit(c(2, 0, 0, 0), "cm"), legend.position = c(0.25, 1.05), legend.direction = "horizontal" ) }) <br> output$bar <- renderPlot({ popPerContinent <- gapminder %>% filter(continent %in% input$continentSelect) %>% mutate(maxYear = max(year)) %>% filter(year == maxYear) %>% select(continent, pop) %>% group_by(continent) %>% summarise(total = sum(pop)) <br> ggplot(popPerContinent, aes(x = reorder(continent, -total), y = total)) + geom_bar(stat = "identity", fill = "#519bff") + labs(x = "Continent", y = "Total population") + geom_text(aes(label = formattable::comma(total, digits = 0)), vjust = -0.3, size = 5) + theme( axis.text.y = element_blank(), axis.ticks.y = element_blank() ) }) <br> output$scatter <- renderPlot({ lifeExpWithGdp <- gapminder %>% filter(continent %in% input$continentSelect) %>% select(continent, gdpPercap, lifeExp) <br> ggplot(lifeExpWithGdp, aes(x = lifeExp, y = gdpPercap, color = continent)) + geom_point(alpha = 0.7) + labs(x = "Life expectancy", y = "GDP per capita") + theme( plot.margin = unit(c(2, 0, 0, 0), "cm"), legend.position = c(0.15, 1.05), legend.direction = "horizontal" ) }) } <br>shinyApp(ui = ui, server = server) </code></pre> <span data-preserver-spaces="true">And here's what the dashboard looks like:</span> <img class="aligncenter size-full wp-image-5800" src="https://webflow-prod-assets.s3.amazonaws.com/6525256482c9e9a06c7a9d3c%2F65b021cea597077171c04f24_008.gif" alt="Simple Shiny dashboard" width="1694" height="1010" /> <span data-preserver-spaces="true">We'll work on visual appearance later, so don't worry too much about that. It's hard to announce a clear winner here, but R Shiny's dashboard feels more solid to work in. As we saw, you can make a simple dashboard much faster with Power BI. For this reason, we'll declare Power BI the winner for simple dashboards, but only for ease of use. R Shiny is more versatile if you require a sophisticated dashboard. </span> <p style="text-align: center;"><strong><span data-preserver-spaces="true">Winner (Simple Dashboards): Power BI by a nose</span></strong></p> <h2 id="user-input"><span data-preserver-spaces="true">User Input and Interactivity</span></h2> <span data-preserver-spaces="true">As mentioned in the overview section, Power BI is read-only. Sure, you can click on the various filters to include/exclude some data from the chart, but that's pretty much all you can do. We think inputs are essential in creating interactive dashboards, so a full web framework like Shiny annihilates its opponent in this department.</span> <span data-preserver-spaces="true">Shiny has a wide array of inputs - from text fields and buttons to dropdowns and modals. Here's everything Shiny provides:</span> <img class="aligncenter size-full wp-image-5801" src="https://webflow-prod-assets.s3.amazonaws.com/6525256482c9e9a06c7a9d3c%2F65b021d043bb044492d442be_009.gif" alt="Shiny inputs" width="908" height="532" /> <span data-preserver-spaces="true">With all of these options, if arranged right, there's no task too difficult for Shiny to solve. If you still aren't sold on the importance of interactivity, here are a couple of points that will make you reconsider:</span> <ul><li><span data-preserver-spaces="true">The </span><em><span data-preserver-spaces="true">file input </span></em><span data-preserver-spaces="true">component allows us to upload a custom dataset and perform exploration in the browser</span></li><li><span data-preserver-spaces="true">The </span><em><span data-preserver-spaces="true">text input </span></em><span data-preserver-spaces="true">and </span><em><span data-preserver-spaces="true">password input </span></em><span data-preserver-spaces="true">fields allow us to build complete web forms - think authentication</span></li><li><span data-preserver-spaces="true">The </span><em><span data-preserver-spaces="true">var select input </span></em><span data-preserver-spaces="true">allows us to quickly select column(s) of interest from a dataset</span></li></ul> <p style="text-align: center;"><strong><span data-preserver-spaces="true">Winner (User Input and Interactivity): R Shiny</span></strong></p> <h2 id="visual-styling"><span data-preserver-spaces="true">Visual Styling</span></h2> <span data-preserver-spaces="true">Tweaking the looks and feels of visuals in drag and drop tools like Power BI or even Tableau was never their strong point. These tools are designed to look good by default. Still, not everyone agrees on what classifies as <em>good</em></span><span data-preserver-spaces="true">, so it's nice to have options.</span> <span data-preserver-spaces="true">We've found that you can tweak a decent amount of things in Power BI. Here's a rough overview:</span> <img class="aligncenter wp-image-5802 size-full" src="https://webflow-prod-assets.s3.amazonaws.com/6525256482c9e9a06c7a9d3c%2F65b021d06cd8f7584c83636a_010.gif" alt="PowerBI styling vs R Shiny (next image)" width="1880" height="974" /> <span data-preserver-spaces="true">The story is quite different with R Shiny. You can embed custom CSS styles by creating a<code class="language-r">www</code> folder right where your Shiny app is. The CSS files are then stored inside the mentioned folder.</span> <blockquote><span data-preserver-spaces="true">Learn More:</span> <a class="editor-rtfLink" href="https://appsilon.com/howto-css-and-shiny/" target="_blank" rel="noopener noreferrer"><span data-preserver-spaces="true">How to Use CSS to Style Your R Shiny Dashboards</span></a></blockquote> <span data-preserver-spaces="true">To connect the two, you have to put <code class="language-r">theme = main.css</code> inside the <code class="language-r">fluidPage</code> in the Shiny app. That's all. In just a couple of minutes with CSS, we've managed to transform our dashboard quite a bit:</span> <img class="aligncenter wp-image-5803 size-full" src="https://webflow-prod-assets.s3.amazonaws.com/6525256482c9e9a06c7a9d3c%2F65b021d1e37581fc34c88049_011.webp" alt="Final R Shiny dashboard " width="1662" height="1098" /> <span data-preserver-spaces="true">The winner of this battle is obvious, once again. PowerBI looks good out of the box, sure, but there's not much you can do to make it look perfect. R Shiny is extremely versatile when it comes to visual styling (in the hands of the right developer).</span> <p style="text-align: center;"><strong><span data-preserver-spaces="true">Winner (Visual Styling): R Shiny</span></strong></p> <h2 id="conclusion"><span data-preserver-spaces="true">Conclusion: Powerful Business Intelligence Tools</span></h2> <h3>Power BI vs R Shiny Score</h3> <span data-preserver-spaces="true">The final results are in:</span> <ul><li><span data-preserver-spaces="true">PowerBI - 3 points</span></li><li><span data-preserver-spaces="true">R Shiny - 2 points</span></li><li><span data-preserver-spaces="true">Tie - 1 point</span></li></ul> <span data-preserver-spaces="true">By our count, PowerBI took the lead by a single point for most general use cases. Of course, choosing the appropriate business intelligence tool isn't as simple as counting to 5. Further clarifications are required like specifics for your team or project.</span> <h3>Recap: Comparing Business Intelligence Tools</h3> <span data-preserver-spaces="true">Power BI is great when you need something relatively simple and aren't worried too much about the looks and overall feel of the dashboard. For anything more complex, R Shiny overthrows PowerBI. PowerBI just can't compare with the customizability that Shiny offers, especially if you need to create an enterprise application.</span> <blockquote><span data-preserver-spaces="true">Learn More: </span><a class="editor-rtfLink" href="https://appsilon.com/why-you-should-use-r-shiny-for-enterprise-application-development/" target="_blank" rel="noopener noreferrer"><span data-preserver-spaces="true">Why You Should Use R Shiny for Enterprise Application Development</span></a></blockquote> <h2>Better Business Analytics Tools</h2> <span data-preserver-spaces="true">If you need to create powerful, customizable, and interactive dashboards that look great and respond to user input, Shiny is a clear winner. It requires a bit of coding knowledge even for simple dashboards, but R isn't a very complicated language. You can quickly get up to speed in a couple of weeks </span><a class="editor-rtfLink" href="https://appsilon.com/how-i-built-an-interactive-shiny-dashboard-in-2-days-without-any-experience-in-r/" target="_blank" rel="noopener noreferrer"><span data-preserver-spaces="true">or even a couple of days</span></a><span data-preserver-spaces="true">, depending on your prior knowledge of programming. </span> <blockquote>Discover the power of R Shiny for quick proof of concepts. You can <a href="https://appsilon.com/r-shiny-dashboard-templates/" target="_blank" rel="noopener">develop a Shiny dashboard in 10 minutes or less</a>.</blockquote> If you want to make<strong><span data-preserver-spaces="true"> scalable enterprise Shiny dashboards</span></strong>, then reach out to <a class="editor-rtfLink" href="https://appsilon.com/shiny" target="_blank" rel="noopener noreferrer"><strong><span data-preserver-spaces="true">Appsilon</span></strong></a>. <span data-preserver-spaces="true">We continually push the limits of what's possible with Shiny. We build <a href="http://shiny.tools" target="_blank" rel="noopener">open-source R packages for Shiny</a> users. </span> <span data-preserver-spaces="true">As <strong>Shiny experts</strong>, we'd be happy to equip you and your company with better business intelligence solutions.</span> <h2><span data-preserver-spaces="true">Learn More</span></h2><ul><li><a class="editor-rtfLink" href="https://appsilon.com/tableau-vs-r-shiny/" target="_blank" rel="noopener noreferrer"><span data-preserver-spaces="true">Tableau vs. R Shiny: Which Excel Alternative Is Right For You?</span></a></li><li><a class="editor-rtfLink" href="https://appsilon.com/switch-from-excel-to-r-shiny/" target="_blank" rel="noopener noreferrer"><span data-preserver-spaces="true">How to Switch from Excel to R Shiny: First Steps</span></a></li><li><a class="editor-rtfLink" href="https://appsilon.com/r-shiny-faster-updateinput-css-javascript/" target="_blank" rel="noopener noreferrer"><span data-preserver-spaces="true">Make R Shiny Dashboards Faster with updateInput, CSS, and JavaScript</span></a></li></ul> <p style="text-align: center;"><a href="https://appsilon.com/careers/" target="_blank" rel="noopener noreferrer"><img class="aligncenter wp-image-5830 size-full" src="https://webflow-prod-assets.s3.amazonaws.com/6525256482c9e9a06c7a9d3c%2F65b021b284ab67fae7ea6e24_Consultant_wanted_300x125v2.webp" alt="Appsilon Hiring" width="625" height="260" /></a><strong>Appsilon is hiring! See our <a href="https://appsilon.com/careers/" target="_blank" rel="noopener noreferrer">Careers</a> page for new openings.</strong></p>