A debugging dashboard for re-frame. Comes with free x-ray glasses. (Previously known as re-frame-trace)
Go to file
Daniel Compton 87e5679ebb Persist app-db expansions
Uses the path through the hiccup as the expansion path. This means that
if the hiccup layout changes, the wrong item can be expanded. However
it is still better than the alternative, and can be improved in the
future.

Fixes #105
2017-11-16 15:33:07 +13:00
.idea Add bottom margin to app-db data 2017-11-09 15:17:52 +13:00
docs Persist app-db expansions 2017-11-16 15:33:07 +13:00
resources/day8/re_frame/trace Last of renames to app-db 2017-11-13 13:16:35 +13:00
src Persist app-db expansions 2017-11-16 15:33:07 +13:00
test/day8/re_frame/trace Revert "Switch re-frame-trace to render into Shadow DOM" 2017-10-20 14:05:16 +13:00
.gitignore Add .gitignore 2016-11-06 16:47:17 +13:00
CHANGELOG.md Update changelog 2017-11-13 12:52:40 +13:00
DEVELOPERS.md Use mranderson to bundle an isolated copy of re-frame 2017-11-02 16:29:22 +13:00
LICENSE Update license copyright 2016-11-06 16:50:12 +13:00
README.md Add SVG image 2017-11-08 12:52:32 +13:00
project.clj Use mranderson to bundle an isolated copy of re-frame 2017-11-02 16:29:22 +13:00

README.md

re-frame-trace

A trace panel for re-frame.

Clojars Project

Status: Alpha.

Motivation

re-frame provides a data driven architecture, but we need to be able to inspect it. re-frame-trace takes inspiration from redux-devtools, and provides several ways to visualise the structure and state of your re-frame application.

Installation

If you are using leiningen, modify project.clj in the following ways. When puzzling over the various possible leiningen configurations, it's often helpful to look at a sample project.clj.

Clojars Project

  • Add re-frame-trace as a dev dependency by placing [day8.re-frame/trace "VERSION"] within :profiles :dev :dependencies. For example:

    :profiles
       {:dev
          {:dependencies [[some-other-package  "0.0.0"]
                          [day8.re-frame/trace "0.0.0 (see version above)"]] }}
    
  • Locate the :compiler map under :dev and add:

    • :closure-defines {"re_frame.trace.trace_enabled_QMARK_" true}
    • :preloads [day8.re-frame.trace.preload]

    For example:

    {:builds
       [{:id           "dev"
         :source-paths ["src" "dev"]
         :compiler     {...
                        :closure-defines      {"re_frame.trace.trace_enabled_QMARK_" true}
                        :preloads             [day8.re-frame.trace.preload]}}]}
    

cljs-devtools is not required to use re-frame-trace, but it is highly recommended.

Usage

  • Make sure you have followed all of the installation instructions above.

  • Start up your application.

  • Once it is loaded, focus the document window and press ctrl-h to slide open the trace panel and enable tracing.

  • When the panel is closed, tracing is disabled.

Troubleshooting

  • Try a lein clean
  • Make sure you have followed all the installation steps.

How does it work?

re-frame has instrumentation to collect traces throughout various important points in the lifecycle of a re-frame app. re-frame-trace is a consumer of these traces, and provides visualisations of the traces. These traces have a well-defined structure, and will eventually be standardised, allowing other developers to create their own tooling to work against the traces. Currently, re-frame's tracing and re-frame-trace are in alpha and are subject to change at any time.

By default, re-frame tracing is compiled out, so it won't impose a performance cost in production. The trade-off here is that you need to explicitly enable it in development.

The preloads option (:preloads [day8.re-frame.trace.preload]) has to be set in order to automatically monkeypatch Reagent to add appropriate lifecycle hooks. Yes this is gross, and yes we will try and make a PR to reagent to add proper hooks, once we know exactly what we need. The preload namespace also injects a div containing the devtools panel into the DOM.

Developing/Contributing

If you want to work on re-frame-trace, see DEVELOPERS.md.

Citations

open by Bluetip Design from the Noun Project