Easy logging of users activity and session events of your Shiny App
shiny.telemetry R package tracks events occurring on a user session, such as input changes and session duration, and stores them in a local or remote database.
It provides developers with the tools to help understand how users interact with Shiny dashboards and answer questions such as: which tabs/pages are more often visited, which inputs users are changing, what is the average length of a session, etc.
shiny.telemetry package can be installed from GitHub by using the remotes package:
remotes::install_github("Appsilon/shiny.telemetry", dependencies = TRUE)
dependencies = TRUE the suggested packages (required to run some examples) will be installed in addition to mandatory dependencies.
shiny.telemetry allows for a minimal setup with only 3 commands that can track some information about the session:
- When session starts and ends
- The browser version used by the client
- Changes in the inputs (doesn’t track values by default)
The code below runs a minimal example of a Shiny application that uses
shiny.telemetry. The package will keep track of the session information and all changes to the
When inspecting the code above, we can breakdown the 3 lines of code by:
Telemetryobject that is used across the different sessions
use_telemetry(). It is used to track browser version.
- Initialize the session-specific tracking by calling method
The developers and administrators of the dashboard can access the data that is gathered by
shiny.telemetry via a Telemetry object or directly from
DataStorage via the appropriate provider.
# After running the instrumented app shiny.telemetry::Telemetry$new()$data_storage$read_event_data("2020-01-01", "2050-01-01") # Default provider and path for Telemetry$new() shiny.telemetry::DataStorageSQLite$new(db_path = "telemetry.sqlite")$read_event_data("2020-01-01", "2050-01-01")
The package includes an analytics dashboard to view the data. It is located at
inst/examples/app/analytics and it should be modified so that it references the correct
DataStorage provider and configuration.
There are 3 different types of data providers that can range from local filesystem storage to a remote Plumber REST API instance.
- Local file:
- SQLite using
- Logfile using
- SQLite using
- Remote SQL database:
- MariaDB using
- PostgreSQL using
- MS SQL Server using
- MariaDB using
- Plumber REST API using
- In turn, the Plumber data provider will use one of the other classes above as the method of data storage.
The setup for plumber requires a valid Plumber instance running on the network and the communication can be protected. See Plumber deployment documentation for more information.
The package uses the
logger package internally with the
shiny.telemetry namespace. To debug the
shiny.telemetry calls in the dashboard, change the threshold of this namespace to
logger::log_threshold("DEBUG", namespace = "shiny.telemetry")
note: This command can be run before the Shiny call or by adding it to the