reactlog extends Shiny with new features that make it easier to debug and trace reactivity, especially in larger apps.
# install.packages("devtools")
devtools::install_github("glin/reactlog")
traceInvalidation()
options(shiny.reactlog = TRUE)
rxA <- reactive({
input$A
})
observe({
# call it in a reactive context
reactlog::traceInvalidation()
rxA()
})
# or on a reactive expression/observer
reactlog::traceInvalidation(rxA)
listDependencies()
reactive({
# when multiple dependencies change, it might be useful to see them all
# not just the one that invalidated the context
reactlog::listDependencies()
rxA() + input$A + input$B
})
# also works
reactlog::listDependencies(rxA, invalidated = TRUE)
# when called without a reactive context, shows the entire dependency tree
reactlog::listDependencies()
showReactGraph()
# show the graph for the most recent session
reactlog::showReactGraph()
observe({
# show the graph filtered on this observer and its dependencies
reactlog::showReactGraph()
})