Provides an interactive browser-based tool for visualizing reactive dependencies and execution in your application.
reactlog()
reactlogShow(time = TRUE)
reactlogReset()
reactlogAddMark(session = getDefaultReactiveDomain())
To use the reactive log visualizer, start with a fresh R session and
run the command reactlog::reactlog_enable()
; then launch your
application in the usual way (e.g. using runApp()
). At
any time you can hit Ctrl+F3 (or for Mac users, Command+F3) in your
web browser to launch the reactive log visualization.
The reactive log visualization only includes reactive activity up until the time the report was loaded. If you want to see more recent activity, refresh the browser.
Note that Shiny does not distinguish between reactive dependencies that "belong" to one Shiny user session versus another, so the visualization will include all reactive activity that has taken place in the process, not just for a particular application or session.
As an alternative to pressing Ctrl/Command+F3–for example, if you
are using reactives outside of the context of a Shiny
application–you can run the reactlogShow
function, which will
generate the reactive log visualization as a static HTML file and
launch it in your default browser. In this case, refreshing your
browser will not load new activity into the report; you will need to
call reactlogShow()
explicitly.
For security and performance reasons, do not enable
options(shiny.reactlog=TRUE)
(or reactlog::reactlog_enable()
) in
production environments. When the option is enabled, it's possible
for any user of your app to see at least some of the source code of
your reactive expressions and observers. In addition, reactlog
should be considered a memory leak as it will constantly grow and
will never reset until the R session is restarted.
reactlog()
: Return a list of reactive information. Can be used in
conjunction with reactlog::reactlog_show to later display the reactlog
graph.
reactlogShow()
: Display a full reactlog graph for all sessions.
reactlogReset()
: Resets the entire reactlog stack. Useful for debugging
and removing all prior reactive history.
reactlogAddMark()
: Adds "mark" entry into the reactlog stack. This is
useful for programmatically adding a marked entry in the reactlog, rather
than using your keyboard's key combination.
For example, we can mark the reactlog at the beginning of an
observeEvent
's calculation:
observeEvent(input$my_event_trigger, {
# Add a mark in the reactlog
reactlogAddMark()
# Run your regular event reaction code here...
....
})