Files
shiny/reference/reactlog.html
2025-12-09 21:32:58 +00:00

156 lines
10 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Reactive Log Visualizer — reactlog • shiny</title><!-- jquery --><script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js" integrity="sha512-v2CJ7UaYy4JwqLDIrZUI/4hqeoQieOmAZNXBeQyjo21dadnwR+8ZaIJVT8EE2iyI61OV8e6M8PP2/4hpQINQ/g==" crossorigin="anonymous" referrerpolicy="no-referrer"></script><!-- Bootstrap --><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css" integrity="sha256-bZLfwXAP04zRMK2BjiO8iu9pf4FbLqX6zitd+tIvLhE=" crossorigin="anonymous"><script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js" integrity="sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=" crossorigin="anonymous"></script><!-- bootstrap-toc --><link rel="stylesheet" href="../bootstrap-toc.css"><script src="../bootstrap-toc.js"></script><!-- Font Awesome icons --><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css" integrity="sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=" crossorigin="anonymous"><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css" integrity="sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=" crossorigin="anonymous"><!-- clipboard.js --><script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js" integrity="sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=" crossorigin="anonymous"></script><!-- headroom.js --><script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js" integrity="sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=" crossorigin="anonymous"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js" integrity="sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=" crossorigin="anonymous"></script><!-- pkgdown --><link href="../pkgdown.css" rel="stylesheet"><script src="../pkgdown.js"></script><meta property="og:title" content="Reactive Log Visualizer — reactlog"><meta property="og:description" content="Provides an interactive browser-based tool for visualizing reactive
dependencies and execution in your application."><meta property="og:image" content="/logo.png"><!-- mathjax --><script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js" integrity="sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=" crossorigin="anonymous"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js" integrity="sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=" crossorigin="anonymous"></script><!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]--></head><body data-spy="scroll" data-target="#toc">
<div class="container template-reference-topic">
<header><div class="navbar navbar-default navbar-fixed-top" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<span class="navbar-brand">
<a class="navbar-link" href="../index.html">shiny</a>
<span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="">1.12.1</span>
</span>
</div>
<div id="navbar" class="navbar-collapse collapse">
<ul class="nav navbar-nav"><li>
<a href="../reference/index.html">Reference</a>
</li>
<li>
<a href="../news/index.html">Changelog</a>
</li>
</ul><ul class="nav navbar-nav navbar-right"><li>
<a href="https://github.com/rstudio/shiny/" class="external-link">
<span class="fab fa-github fa-lg"></span>
</a>
</li>
</ul></div><!--/.nav-collapse -->
</div><!--/.container -->
</div><!--/.navbar -->
</header><div class="row">
<div class="col-md-9 contents">
<div class="page-header">
<h1>Reactive Log Visualizer</h1>
<small class="dont-index">Source: <a href="https://github.com/rstudio/shiny/blob/rc-v1.12.1/R/graph.R" class="external-link"><code>R/graph.R</code></a></small>
<div class="hidden name"><code>reactlog.Rd</code></div>
</div>
<div class="ref-description">
<p>Provides an interactive browser-based tool for visualizing reactive
dependencies and execution in your application.</p>
</div>
<div id="ref-usage">
<div class="sourceCode"><pre class="sourceCode r"><code><span><span class="fu">reactlog</span><span class="op">(</span><span class="op">)</span></span>
<span></span>
<span><span class="fu">reactlogShow</span><span class="op">(</span>time <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span>
<span></span>
<span><span class="fu">reactlogReset</span><span class="op">(</span><span class="op">)</span></span>
<span></span>
<span><span class="fu">reactlogAddMark</span><span class="op">(</span>session <span class="op">=</span> <span class="fu"><a href="domains.html">getDefaultReactiveDomain</a></span><span class="op">(</span><span class="op">)</span><span class="op">)</span></span></code></pre></div>
</div>
<div id="arguments">
<h2>Arguments</h2>
<dl><dt id="arg-time">time<a class="anchor" aria-label="anchor" href="#arg-time"></a></dt>
<dd><p>A boolean that specifies whether or not to display the
time that each reactive takes to calculate a result.</p></dd>
<dt id="arg-session">session<a class="anchor" aria-label="anchor" href="#arg-session"></a></dt>
<dd><p>The Shiny session to assign the mark to. Defaults to the
current session.</p></dd>
</dl></div>
<div id="details">
<h2>Details</h2>
<p>To use the reactive log visualizer, start with a fresh R session and
run the command <code><a href="https://rstudio.github.io/reactlog/reference/setReactLog.html" class="external-link">reactlog::reactlog_enable()</a></code>; then launch your
application in the usual way (e.g. using <code><a href="runApp.html">runApp()</a></code>). At
any time you can hit Ctrl+F3 (or for Mac users, Command+F3) in your
web browser to launch the reactive log visualization.</p>
<p>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.</p>
<p>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.</p>
<p>As an alternative to pressing Ctrl/Command+F3for example, if you
are using reactives outside of the context of a Shiny
applicationyou can run the <code>reactlogShow</code> 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 <code>reactlogShow()</code> explicitly.</p>
<p>For security and performance reasons, do not enable
<code>options(shiny.reactlog=TRUE)</code> (or <code><a href="https://rstudio.github.io/reactlog/reference/setReactLog.html" class="external-link">reactlog::reactlog_enable()</a></code>) 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.</p>
</div>
<div id="functions">
<h2>Functions</h2>
<ul><li><p><code>reactlog()</code>: Return a list of reactive information. Can be used in
conjunction with <a href="https://rstudio.github.io/reactlog/reference/reactlog_show.html" class="external-link">reactlog::reactlog_show</a> to later display the reactlog
graph.</p></li>
<li><p><code>reactlogShow()</code>: Display a full reactlog graph for all sessions.</p></li>
<li><p><code>reactlogReset()</code>: Resets the entire reactlog stack. Useful for debugging
and removing all prior reactive history.</p></li>
<li><p><code>reactlogAddMark()</code>: 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.</p>
<p>For example, we can <em>mark</em> the reactlog at the beginning of an
<code>observeEvent</code>'s calculation:</p>
<p></p><div class="sourceCode r"><pre><code><span><span class="fu"><a href="../reference/observeEvent.html">observeEvent</a></span><span class="op">(</span><span class="va">input</span><span class="op">$</span><span class="va">my_event_trigger</span>, <span class="op">{</span></span>
<span> <span class="co"># Add a mark in the reactlog</span></span>
<span> <span class="fu"><a href="../reference/reactlog.html">reactlogAddMark</a></span><span class="op">(</span><span class="op">)</span></span>
<span> <span class="co"># Run your regular event reaction code here...</span></span>
<span> <span class="va">....</span></span>
<span><span class="op">}</span><span class="op">)</span></span></code></pre><p></p></div></li>
</ul></div>
</div>
<div class="col-md-3 hidden-xs hidden-sm" id="pkgdown-sidebar">
<nav id="toc" data-toggle="toc" class="sticky-top"><h2 data-toc-skip>Contents</h2>
</nav></div>
</div>
<footer><div class="copyright">
<p></p><p>Developed by Winston Chang, Joe Cheng, JJ Allaire, Carson Sievert, Barret Schloerke, Garrick Aden-Buie, Yihui Xie, Jeff Allen, Jonathan McPherson, Alan Dipert, Barbara Borges, Posit Software, PBC.</p>
</div>
<div class="pkgdown">
<p></p><p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.2.0.</p>
</div>
</footer></div>
</body></html>