I have some follow up questions that may help you clarify your problem and needs. When you say "the app is slow", can you clarify which part of the app is slow? Is it slow to load or is it slow when you update an input?
Does your app do a lot of manipulation to the data? If you were to run the same code in your R session outside of the Shiny app, would it also take a long time?
A general strategy for speeding up an app with large-ish data sets is to do as much data processing as possible before launching the app or at app launch. For example, if your app summarizes aggregated counts from your data and your inputs control filters on the summarized data, don't load the full data set and don't run the aggregation step in Shiny. Instead, perform the aggregation down to the smallest level possible in an offline R script and then have your Shiny app use the smaller data set.