# redux-devtools-instrument

> Redux DevTools instrumentation

Latest version **1.10.0** (published 2020-09-07) · MIT license · 0 weekly downloads

> **Deprecated.** This package is deprecated.

## Install

```sh
npm install redux-devtools-instrument
pnpm add redux-devtools-instrument
yarn add redux-devtools-instrument
bun add redux-devtools-instrument
```

## Health

**Score 10/100 (F)** — status: deprecated.

Negative: deprecated.

## Facts

| | |
|---|---|
| Version | 1.10.0 |
| Published | 2020-09-07 |
| First published | 2016-04-18 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | CommonJS |
| Dependencies | 2 |
| Unpacked size | 143.7 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 14367 |
| Author | Dan Abramov |
| Maintainers | gaearon, timdorr, jhen0409, zalmoxisus, methuselah96 |
| Keywords | redux, devtools, flux, hot reloading, time travel, live edit |

## Links

- npm: https://www.npmjs.com/package/redux-devtools-instrument
- Repository: https://github.com/reduxjs/redux-devtools
- Homepage: https://github.com/reduxjs/redux-devtools/tree/master/packages/redux-devtools-instrument
- Issues: https://github.com/reduxjs/redux-devtools/issues
- npm.io page: https://npm.io/package/redux-devtools-instrument

## Dependencies (2)

- [lodash](https://npm.io/package/lodash.md) ^4.17.19
- [symbol-observable](https://npm.io/package/symbol-observable.md) ^1.2.0

## Alternatives

- [@reckona/mreact-store](https://npm.io/package/@reckona/mreact-store.md) — 976 weekly downloads
- [regular-state](https://npm.io/package/regular-state.md) — 410 weekly downloads
- [@pacote/flux-actions](https://npm.io/package/@pacote/flux-actions.md) — 65 weekly downloads
- [@pilotlab/lux-debug](https://npm.io/package/@pilotlab/lux-debug.md) — 39 weekly downloads
- [vue-persist-state](https://npm.io/package/vue-persist-state.md) — 19 weekly downloads

## Recent versions

- 1.10.0 (latest) — 2020-09-07
- 1.2.0-beta-1 (beta) — 2016-09-24
- 1.9.7 — 2020-08-14
- 1.9.6 — 2019-01-25
- 1.9.5 — 2019-01-25
- 1.9.4 — 2018-12-18
- 1.9.3 — 2018-11-28
- 1.9.2 — 2018-11-26
- 1.9.1 — 2018-11-14
- 1.9.0 — 2018-07-18
- 1.8.3 — 2018-02-21
- 1.8.2 — 2017-05-07
- 1.8.1 — 2017-05-04
- 1.8.0 — 2017-02-07
- 1.7.1 — 2017-02-05
- … 16 more at https://npm.io/package/redux-devtools-instrument/versions

## README

# Redux DevTools Instrumentation

Redux enhancer used along with [Redux DevTools](https://github.com/reduxjs/redux-devtools) or [Remote Redux DevTools](https://github.com/zalmoxisus/remote-redux-devtools).

### Installation

```
npm install --save-dev redux-devtools-instrument
```

### Usage

Add the store enhancer:

##### `store/configureStore.js`

```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](https://github.com/gaearon/redux-devtools-log-monitor/blob/master/src/reducers.js#L13)).
  - **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

---
_Source: https://npm.io/package/redux-devtools-instrument · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
