{"id":13426309,"url":"https://github.com/rstudio/reactlog","last_synced_at":"2025-04-07T19:17:02.415Z","repository":{"id":33926429,"uuid":"137799634","full_name":"rstudio/reactlog","owner":"rstudio","description":"Shiny Reactivity Visualizer","archived":false,"fork":false,"pushed_at":"2022-09-26T16:23:27.000Z","size":14585,"stargazers_count":125,"open_issues_count":24,"forks_count":9,"subscribers_count":11,"default_branch":"main","last_synced_at":"2025-03-31T16:16:57.293Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://rstudio.github.io/reactlog","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rstudio.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-06-18T19:54:37.000Z","updated_at":"2025-01-21T21:28:22.000Z","dependencies_parsed_at":"2022-08-07T23:30:47.047Z","dependency_job_id":null,"html_url":"https://github.com/rstudio/reactlog","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rstudio%2Freactlog","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rstudio%2Freactlog/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rstudio%2Freactlog/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rstudio%2Freactlog/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rstudio","download_url":"https://codeload.github.com/rstudio/reactlog/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247713258,"owners_count":20983683,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-31T00:01:31.531Z","updated_at":"2025-04-07T19:17:02.384Z","avatar_url":"https://github.com/rstudio.png","language":"JavaScript","funding_links":[],"categories":["JavaScript","Developer Tools","Tools"],"sub_categories":["Debugging","Packages"],"readme":"# reactlog \u003ca href='https://rstudio.github.io/reactlog/'\u003e\u003cimg src='man/figures/logo.svg' align=\"right\" style=\"height: 139px;\" /\u003e\u003c/a\u003e\n\n\u003c!-- badges: start --\u003e\n[![R build status](https://github.com/rstudio/reactlog/actions/workflows/R-CMD-check.yaml/badge.svg)](https://github.com/rstudio/reactlog/actions)\n[![CRAN version](http://www.r-pkg.org/badges/version/reactlog)](https://cran.r-project.org/package=reactlog)\n[![reactlog downloads per month](http://cranlogs.r-pkg.org/badges/reactlog)](http://www.rpackages.io/package/reactlog)\n[![DOI](https://zenodo.org/badge/137799634.svg)](https://zenodo.org/badge/latestdoi/137799634)\n[![RStudio community](https://img.shields.io/badge/community-reactlog-blue?style=social\u0026logo=rstudio\u0026logoColor=75AADB)](https://community.rstudio.com/tags/c/shiny/8/reactlog)\n\u003c!-- badges: end --\u003e\n\n\u003cbr\u003e\u003c!-- space above image break only --\u003e\n\u003c!-- [![Coverage status](https://codecov.io/gh/rstudio/reactlog/branch/main/graph/badge.svg)](https://codecov.io/github/rstudio/reactlog?branch=main) --\u003e\n\n\n\u003cimg src=\"http://rstudio.github.io/reactlog/readme-images/pythagoras.gif\" style=\"border: 1px solid black; box-shadow: 5px 5px 5px #eee;\" width=\"100%\"\u003e\n\n[Shiny](https://shiny.rstudio.com/) is an R package from RStudio that makes it incredibly easy to build interactive web applications with R.  Behind the scenes, Shiny builds a reactive graph that can quickly become intertwined and difficult to debug. **reactlog** provides a visual insight into that _black box_ of Shiny reactivity.\n\nAfter logging the reactive interactions of a Shiny application, **reactlog** constructs a directed dependency graph of the Shiny's reactive state at any time point in the record. The **reactlog** dependency graph provides users with the ability to visually see if reactive elements are:\n* Not utilized (never retrieved)\n* Over utilized (called independently many times)\n* Interacting with unexpected elements\n* Invalidating all expected dependencies\n* Freezing (and thawing), preventing triggering of future reactivity\n\n\u003c!-- For an introduction and examples, visit the [Shiny Dev Center](https://shiny.rstudio.com/). --\u003e\n\n\n## Major Features\n\nThere are many subtle features hidden throughout **reactlog**. Here is a short list quickly describing what is possible within **reactlog**:\n\n* Display the reactivity dependency graph of your Shiny applications\n* Navigate throughout your reactive history to replay element interactions\n* Highlight reactive family trees\n* Filter on reactive family trees\n* Search for reactive elements\n\nFor a more in-depth explanation of **reactlog**, please visit the [**reactlog** vignette](https://rstudio.github.io/reactlog/articles/reactlog.html).\n\n## Installation\n\nTo install the stable version from CRAN, run the following from an R console:\n\n```r\ninstall.packages(\"reactlog\")\n```\n\nFor the latest development version:\n\n```r\nremotes::install_github(\"rstudio/reactlog\")\n```\n\n## Usage\n\n\n```r\nlibrary(shiny)\nlibrary(reactlog)\n\n# tell shiny to log all reactivity\nreactlog_enable()\n\n# run a shiny app\napp \u003c- system.file(\"examples/01_hello\", package = \"shiny\")\nrunApp(app)\n\n# once app has closed, display reactlog from shiny\nshiny::reactlogShow()\n```\n\nOr while your Shiny app is running, press the key combination `Ctrl+F3` (Mac: `Cmd+F3`) to launch the **reactlog** application.\n\nTo mark a specific execution time point within your Shiny app, press the key combination `Ctrl+Shift+F3` (Mac: `Cmd+Shift+F3`). This will highlight a specific point in time in your reactlog.\n\n\n#### Example\n\nHere is a [demo](https://rstudio.github.io/reactlog/demo/reactlog.html) of the **reactlog** visualization applied to the [`cranwhales`](https://github.com/rstudio/cranwhales) shiny app.\n\n[\n\u003cimg src=\"http://rstudio.github.io/reactlog/readme-images/cranwhales.gif\" style=\"border: 1px solid black; box-shadow: 5px 5px 5px #eee;\" width=\"100%\"\u003e\n](https://rstudio.github.io/reactlog/demo/reactlog.html)\n\nFor more examples and explanation, see the [**reactlog** vignette](https://rstudio.github.io/reactlog/articles/reactlog.html#reactlog).\n\n\n## Community Support\n\nThe best place to get help with Shiny and **reactlog** is [RStudio Community](https://community.rstudio.com/c/shiny/8).\nIf you're having difficulties with **reactlog**, feel free to [ask questions here](https://community.rstudio.com/new-topic?title=\u0026category_id=8\u0026tags=reactlog\u0026body=%0A%0A%0A%20%20--------%0A%20%20%0A%20%20%3Csup%3EReferred%20here%20by%20%60reactlog%60%27s%20README%3C/sup%3E%0A\u0026u=barret).\nFor bug reports, please use the **reactlog** [issue tracker](https://github.com/rstudio/reactlog/issues).\n\n\n## Development\n\n[![node version: 12.x](https://img.shields.io/badge/node-12.x-brightgreen.svg)](https://nodejs.org/en/)\n[![yarn version: 1.x](https://img.shields.io/badge/yarn-1.x-257bac.svg)](https://classic.yarnpkg.com/lang/en/)\n[![JavaScript type: flow](https://img.shields.io/npm/types/flow-typed.svg)](https://github.com/flow-typed/flow-typed)\n[![cytoscape](https://img.shields.io/github/package-json/dependency-version/rstudio/reactlog/cytoscape.svg)](https://js.cytoscape.org/)\n[![@babel/preset-env](https://img.shields.io/github/package-json/dependency-version/rstudio/reactlog/dev/@babel/preset-env.svg)](https://babeljs.io/)\n[![webpack](https://img.shields.io/github/package-json/dependency-version/rstudio/reactlog/dev/webpack.svg)](https://webpack.js.org/)\n[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettier)\n[![linter: eslint](https://img.shields.io/badge/linter-eslint-3524ca.svg)](https://eslint.org/)\n\n\nPlease make sure you have [GitHub Large File Storage](https://git-lfs.github.com/), [Node.js](https://nodejs.org/en/) and [yarn](https://classic.yarnpkg.com/en/docs/install) installed.\n\nInstallation script:\n\n```bash\n# install git lfs hooks\ngit lfs install\n\n# install dependencies and build JavaScript\nyarn install\n\n# build on file change\nyarn watch\n```\n\nBy changing the file `'./inst/reactlog/defaultLog.js'` with the contents of any log file in `'./inst/log-files/'`, different default log files can be loaded.  Once the local JavaScript (`'./inst/reactlog/reactlogAsset/reactlog.js'`) has been built with `yarn build` or `yarn watch`, refresh `'./inst/reactlog/reactlog.html'` to avoid constantly spawning Shiny applications for testing.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frstudio%2Freactlog","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frstudio%2Freactlog","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frstudio%2Freactlog/lists"}