I like the withSpinner function in shinycssloaders (https://www.rdocumentation.org/packages/shinycssloaders) for showing when things that take awhile are calculating.
It won't show % progress (in my case i dont even know how Shiny would calculate that), but implementation is incredibly simple and wont complicate your app's code much (example below)
# in global.R
library(shinycssloaders)
# in ui.R
withSpinner(plotOutput("some_reactive_plot_that_takes_time_to_generate_based on an eventReactive object"))