It is quite common in Shiny applications, and in analytics generally, to have computations or data-fetches that take a long time. Sometimes, it will be necessary for the user to wait for some time before their output is returned. In cases such as this, it is a good practice to do two things: to inform the user that the server is processing the request and has not simply crashed or otherwise failed, and to give the user some idea of how much time has elapsed since they requested the output and how much time they have remaining to wait.
This is achieved very simply in Shiny using the withProgress() function. This function defaults to measuring progress on a scale from 0 to 1 and produces a loading bar at the top of the application with the information from the message and detail arguments of the loading function.
You can see in the following code that the withProgress...