This function creates a reverse proxy at http://host:port ( by default) that intercepts and records activity between your web browser and the Shiny application at target_app_url.

  host = "",
  port = 8600,
  output_file = "recording.log",
  open_browser = TRUE,
  connect_api_key = NULL



The URL of the deployed application.


The host where the proxy will run. Usually localhost is used.


The port for the reverse proxy. Default is 8600. Change this default if port 8600 is used by another service.


The name of the generated recording file.


Whether to open a browser on the proxy (default=TRUE) or not (FALSE).


An RStudio Connect api key. It may be useful to use Sys.getenv("CONNECT_API_KEY").


Creates a recording file that can be used as input to the shinycannon command-line load generation tool.


By default, after creating the reverse proxy, a web browser is opened automatically. As you interact with the application in the web browser, activity is written to the output_file (recording.log by default).

To shut down the reverse proxy and complete the recording, close the web browser tab or window.

Recordings are used as input to the shinycannon command-line load-generation tool which can be obtained from the shinyloadtest documentation site.

fileInput/DT/HTTP POST support

Shiny's shiny::fileInput() input for uploading files, the DT package, and potentially other packages make HTTP POST requests to the target application. Because POST requests can be large, they are not stored directly in the recording file. Instead, new files adjacent to the recording are created for each HTTP POST request intercepted.

The adjacent files are named after the recording with the pattern <output_file>.post.<N>, where <output_file> is the chosen recording file name and <N> is the number of the request.

If present, these adjacent files must be kept alongside the recording file when the recording is played back with the shinycannon tool.


if (FALSE) {