---
title: Upgrading to 2.0
---

Quill has been significantly modernized. Leveraging the latest browser-supported APIs, Quill now delivers a more efficient and reliable editing experience.

## Quill

The Quill repository has been rewritten in TypeScript, providing an official TypeScript definition file.

- If you have `@types/quill` installed, uninstall it, as it is no longer needed
- SVG icons are now inlined in the source code, eliminating the need to set up loaders for .svg files in your bundler.

### Options

- `strict` *removed*

    Previously some changes that were small in practice (renames) but would warrant a semver major bump would be hidden under this configuration.
    This ended up being more confusing than helpful as we will no longer make use of this.

- `registry` - added to allow multiple editors with different formats to coexist on the same page. [Learn more](/docs/registries).

- `scrollingContainer` *removed*

    Quill will now automatically detect the scrollable ancestor, eliminating the need to provide this option. This new behavior is more robust and works seamlessly with nested scrollable elements.

## Clipboard

- `convert` - API changed to include both HTML and text and previous functionality is broken into multiple method calls (`convert`, `onCapturePaste`) to allow more surface to hook into.
- `onCapturePaste` - Added

### Configuration

- `matchVisual` *removed* - Previously there was a choice between using visual or semantic interpretation of pasted whitespace; now just the semantic interpretation is used. Visual matching was expensive, requiring the DOM renderer which is no longer available in the new clipboard rewrite.
- `pasteHTML` *removed* - Deprecated alias to `dangerouslyPasteHTML`.

## Keyboard

- Binding `key` is no longer case insensitive. To support bindings like `key: '@'`, modifiers are taken into account so the shift modifier will affect case sensitivity.
- Binding `key` now supports an array of keys to easily bind to multiple shortcuts.
- Native keyboard event object is now also passed into handlers.

## Parchment

- All lists use `<ol>` instead of both `<ul>` and `<ol>` allowing better nesting between the two. Copied content will generate the correct semantic markup for paste into other applications.
- Code block markup now uses `<div>` to better support syntax highlighting.
- Static `register` method added to allow dependent chains of registration.
- Static `formats` method now passes in `scroll`.
- Blot constructor now requires `scroll` to be passed in.
- Attributors are exported as top-level classes.

    Instead of accessing class attributor via `Parchment.Attributor.Class`, you now use it at `Parchment.ClassAttributor`.
    Similarly, `Parchment.Attributor.Style` is now `Parchment.StyleAttributor`, and `Parchment.Attributor.Attribute` is now `Parchment.Attributor`.
- Exports are using full names.

    Instead of `Parchment.Scroll`, you now use `Parchment.ScrollBlot`. The similar change applies to `Parchment.Embed`, `Parchment.Text`, `Parchment.Block`, `Parchment.Inline`, and more.

## Delta

- Support for the deprecated delta format, where embeds had integer values and list attributes had different keys, is now removed

## Browser

- Internet Explorer support is dropped.
