---
title: History Module
---

The History module is responsible for handling undo and redo for Quill. It can be configured with the following options:

## Configuration

#### delay

- Default: `1000`

Changes occuring within the `delay` number of milliseconds are merged into a single change.

For example, with delay set to `0`, nearly every character is recorded as one change and so undo would undo one character at a time. With delay set to `1000`, undo would undo all changes that occured within the last 1000 milliseconds.

#### maxStack

- Default: `100`

Maximum size of the history's undo/redo stack. Merged changes with the `delay` option counts as a singular change.

#### userOnly

- Default: `false`

By default all changes, whether originating from user input or programmatically through the API, are treated the same and change be undone or redone by the history module. If `userOnly` is set to `true`, only user changes will be undone or redone.

### Example

```javascript
const quill = new Quill('#editor', {
  modules: {
    history: {
      delay: 2000,
      maxStack: 500,
      userOnly: true
    },
  },
  theme: 'snow'
});
```

## API

#### clear

Clears the history stack.

**Methods**

```js
clear()
```

**Examples**

```js
quill.history.clear();
```

#### cutoff #experimental

Normally changes made in short succession (configured by `delay`) are merged as a single change, so that triggering an undo will undo multiple changes. Using `cutoff()` will reset the merger window so that a changes before and after `cutoff()` is called will not be merged.

**Methods**

```js
cutoff()
```

**Examples**

```js
quill.history.cutoff();
```

#### undo

Undo last change.

**Methods**

```js
undo()
```

**Examples**

```js
quill.history.undo();
```

#### redo

If last change was an undo, redo this undo. Otherwise does nothing.

**Methods**

```js
redo()
```

**Examples**

```js
quill.history.redo();
```
