• Stars
    star
    133
  • Rank 272,600 (Top 6 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created over 8 years ago
  • Updated about 8 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A custom monitor for Redux DevTools to profile a given action in Chrome DevTools

Redux DevTools Profiler Monitor

=================================

A custom monitor for Redux DevTools to profile a given action in Chrome DevTools

Installation

npm install --save redux-devtools-profiler-monitor

Usage

This library comes with 2 pieces, a Redux Middleware and Redux DevTools Monitor.

Middleware

createStore.js
import { createStore, applyMiddleware } from 'redux';
import { profileActionMiddleware } from 'redux-devtools-profiler-monitor';
import rootReducer from './reducers/index';

const store = createStore(
  rootReducer,
  applyMiddleware(profileActionMiddleware)
);

Then, whenever an action is dispatched whose type matches the value of window.profileAction, it will be profiled in Chrome's DevTools. The accompanying Monitor (below) provides a friendly UI to set this value.

Monitor

You can use ProfilerMonitor as the only monitor in your app:

containers/DevTools.js
import React from 'react';
import { createDevTools } from 'redux-devtools';
import { ProfilerMonitor } from 'redux-devtools-profiler-monitor';

export default createDevTools(
  <ProfilerMonitor />
);

Then you can render <DevTools> to any place inside app or even into a separate popup window.

Alternative, you can use it together with DockMonitor to make it dockable.
Consult the DockMonitor README for details of this approach.

Read how to start using Redux DevTools.

Features

Provides a Redux DevTools with an input field where you can type in the name of an action type that you want to be profiled in Chrome DevTools. Whenever that action is dispatched, its handling will automatically be profiled.

The profiling happens in the provided middleware. If the browser does not contain the console.profile function, then the middleware will no-op and pass the action through without attempting to profile. This ensures that the middleware is safe to include in all browsers. It should also be considered performant enough to include in production builds, where profiling can be helpful. It's even usable when not rendering the ProfilerMonitor, which is typical for production builds.

In Redux applications, each dispatched action encompasses computing the next state by running the action through all the reducers an re-rendering each connected component. This is a very valuable area of the application to optimize as this process is synchronous and blocking of all downstream processing.

Tips

Always, ALWAYS, profile with the production build of React.

Example

Profiler Monitor