redux-devtools/packages/redux-devtools-instrument
Nathan Bierema bdb9b953ef Publish
- remotedev-redux-devtools-extension@3.0.5
 - d3-state-visualizer@1.6.0
 - d3tooltip@2.1.0
 - map2tree@2.1.0
 - react-base16-styling@0.9.1
 - react-dock@0.5.1
 - react-json-tree@0.16.1
 - @redux-devtools/app@2.1.0
 - @redux-devtools/chart-monitor@2.1.0
 - @redux-devtools/cli@1.0.5
 - @redux-devtools/dock-monitor@2.1.0
 - @redux-devtools/extension@3.2.0
 - @redux-devtools/inspector-monitor-test-tab@0.8.4
 - @redux-devtools/inspector-monitor-trace-tab@0.3.3
 - @redux-devtools/inspector-monitor@2.1.0
 - @redux-devtools/instrument@2.1.0
 - @redux-devtools/log-monitor@3.1.0
 - @redux-devtools/remote@0.7.3
 - @redux-devtools/rtk-query-monitor@2.1.0
 - @redux-devtools/serialize@0.4.1
 - @redux-devtools/slider-monitor@3.1.0
 - @redux-devtools/ui@1.2.0
 - @redux-devtools/utils@1.2.0
 - @redux-devtools/core@3.11.0
 - d3-state-visualizer-tree-example@0.1.4
 - react-dock-demo@0.1.4
 - react-json-tree-example@1.1.6
 - test-demo@0.1.7
 - inspector-demo@0.1.5
 - rtk-query-demo@0.1.6
 - slider-todomvc@0.1.8
 - counter-redux@0.1.7
 - todomvc@0.2.6
2022-01-24 19:26:20 -05:00
..
src Fix Symbol.observable polyfill mismatch (#1003) 2022-01-12 04:56:04 +00:00
test Use types in tscnofig to explicitly define global types (#1045) 2022-01-22 21:51:27 +00:00
.eslintignore Imprrove ability to tree-shake libraries (#1050) 2022-01-24 02:11:46 +00:00
.eslintrc.js Use types in tscnofig to explicitly define global types (#1045) 2022-01-22 21:51:27 +00:00
babel.config.esm.json Imprrove ability to tree-shake libraries (#1050) 2022-01-24 02:11:46 +00:00
babel.config.json Imprrove ability to tree-shake libraries (#1050) 2022-01-24 02:11:46 +00:00
CHANGELOG.md chore(*): run prettier 2021-03-06 10:17:55 -05:00
jest.config.js Use types in tscnofig to explicitly define global types (#1045) 2022-01-22 21:51:27 +00:00
LICENSE.md Merge redux-devtools-instrument to packages 2018-12-02 23:49:12 +02:00
package.json Publish 2022-01-24 19:26:20 -05:00
README.md chore(*): make more packages scoped (#692) 2020-12-21 15:46:28 -05:00
tsconfig.json Imprrove ability to tree-shake libraries (#1050) 2022-01-24 02:11:46 +00:00
tsconfig.test.json Use types in tscnofig to explicitly define global types (#1045) 2022-01-22 21:51:27 +00:00

Redux DevTools Instrumentation

Redux enhancer used along with Redux DevTools or Remote Redux DevTools.

Installation

yarn add @redux-devtools/instrument

Usage

Add the store enhancer:

store/configureStore.js
import { createStore, applyMiddleware, compose } from 'redux';
import thunk from 'redux-thunk';
import devTools from 'remote-redux-devtools';
import reducer from '../reducers';

// Usually you import the reducer from the monitor
// or apply with createDevTools as explained in Redux DevTools
const monitorReducer = (state = {}, action) => state;

export default function configureStore(initialState) {
  const enhancer = compose(
    applyMiddleware(...middlewares),
    // other enhancers and applyMiddleware should be added before the instrumentation
    instrument(monitorReducer, { maxAge: 50 })
  );

  // Note: passing enhancer as last argument requires redux@>=3.1.0
  return createStore(reducer, initialState, enhancer);
}

API

instrument(monitorReducer, [options])

  • arguments
    • monitorReducer function called whenever an action is dispatched (see the example of a monitor reducer).
    • options object
      • maxAge number or function(currentLiftedAction, previousLiftedState) - maximum allowed actions to be stored on the history tree, the oldest actions are removed once maxAge is reached. Can be generated dynamically with a function getting current action as argument.
      • shouldCatchErrors boolean - if specified as true, whenever there's an exception in reducers, the monitors will show the error message, and next actions will not be dispatched.
      • shouldRecordChanges boolean - if specified as false, it will not record the changes till pauseRecording(false) is dispatched. Default is true.
      • pauseActionType string - if specified, whenever pauseRecording(false) lifted action is dispatched and there are actions in the history log, will add this action type. If not specified, will commit when paused.
      • shouldStartLocked boolean - if specified as true, it will not allow any non-monitor actions to be dispatched till lockChanges(false) is dispatched. Default is false.
      • shouldHotReload boolean - if set to false, will not recompute the states on hot reloading (or on replacing the reducers). Default to true.
      • trace boolean or function - if set to true, will include stack trace for every dispatched action. You can use a function (with action object as argument) which should return new Error().stack string, getting the stack outside of reducers. Default to false.
      • traceLimit number - maximum stack trace frames to be stored (in case trace option was provided as true). By default it's 10. If trace option is a function, traceLimit will have no effect, that should be handled there like so: trace: () => new Error().stack.split('\n').slice(0, limit+1).join('\n') (+1 is needed for Chrome where's an extra 1st frame for Error\n).

License

MIT