---
title: "What's new in Tiptap V3"
description: "Discover what’s new in Tiptap V3. New features, important improvements, and breaking changes clearly explained."
canonical_url: "https://tiptap.dev/docs/resources/whats-new"
---

# What's new in Tiptap V3

Discover what’s new in Tiptap V3. New features, important improvements, and breaking changes clearly explained.

Tiptap V3 introduces significant updates to the core editor. This guide highlights important changes clearly, making your upgrade straightforward. Use it to quickly find everything essential to update your integration.

## Upgrade guide

If you’re upgrading from Tiptap 2.x to 3.x, refer to our [upgrade guide](https://tiptap.dev/docs/guides/upgrade-tiptap-v2.md). It covers breaking changes, important updates, and new features clearly—ensuring your migration process is efficient.

### Breaking Changes

| **Change**                                                         | **Description**                                                                                                                                                                                                                                                   |
| ------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Removed UMD builds**                                             | UMD builds have been removed. We recommend using ESM builds instead. UMD builds are not compatible with the new `@tiptap/extension-*` packages.                                                                                                                   |
| **New `shouldRerenderOnTransaction` option with `false` default**  | The new `shouldRerenderOnTransaction` option is disabled by default to minimize rerendering with React components. This can cause your editor component to not rerender as expected. [Read more](https://tiptap.dev/docs/examples/advanced/react-performance.md). |
| **Migration from `tippy.js` to `floating-ui`**                     | We replaced the outdated `tippy.js` library with the new `floating-ui` library. This change improves the performance and reliability of our menus and tooltips.                                                                                                   |
| **Changes to our Text Style API**                                  | The `@tiptap/extension-text-style` package has seen API updates providing a new `TextStyleKit` extension that encapsulates all possible text styling functionalities in one extension. Default options were also updated.                                         |
| **Commands were changed**                                          | The behavior or names of commands were changed. `clearContent` and `setContent` now emit updates correctly while `setContent` also received a change to its parameters. `insertContent` was changed to prevent unwanted text splitting.                           |
| **NodeView `getPos` now can return `undefined`**                   | `nodeView.getPos()` can now return `undefined` making a check for `undefined` necessary to handle this case properly.                                                                                                                                             |
| **`editor.getCharacterCount()` was removed**                       | The `editor.getCharacterCount()` method was removed. It was marked as deprecated in the previous version and is now removed. You can use `editor.storage.characterCount.characters()` instead while using the `CharacterCount` extension.                         |
| **`considerAnyAsEmpty` option removed from placeholder extension** | The `considerAnyAsEmpty` option was removed from the placeholder extension as it was deprecated already and wasn't respected in the previous version.                                                                                                             |
| **Stricter Typing**                                                | 3.0.0 brings stricter typing to the editor. This change improves the overall type safety of the editor and makes it easier to work with but might require some adjustments in your code. We recommend using TypeScript to benefit from the improved type safety.  |
| **Moved Utility Extensions**                                       | We moved all our utility extensions like `History`, `Placeholder`, `CharacterCount`, `DropCursor`, `GapCursor`, `TrailingNode`, `Focus`, and `Selection` to the new `@tiptap/extensions` package.                                                                 |
| **Renamed Collaboration Cursor**                                   | The `CollaborationCursor` extension was renamed to `CollaborationCaret` as we felt cursors was too general and could clash with potential other cursor types in the future.                                                                                       |
| **Renamed History Extension**                                      | The `History` extension was renamed to `UndoRedo` to better reflect its purpose and avoid confusion with the collaborative History feature. This also includes the `history` option on the `StarterKit`.                                                          |

## New features

- **New `@tiptap/extensions` extension** - The new `@tiptap/extensions` package includes and combines multiple utility extensions. [Read more](https://tiptap.dev/docs/guides/upgrade-tiptap-v2.md#extensions-package).

- **New [MarkView](https://prosemirror.net/docs/ref/#view.MarkView) support** - MarkViews are now supported by Tiptap. This can be useful to render custom HTML for marks. [Read more](https://tiptap.dev/docs/editor/extensions/custom-extensions/mark-views.md).

- **Improved Server-Side Rendering** - The editor can now run on SSR environments without rendering the editor content. [Read more](https://tiptap.dev/docs/guides/upgrade-tiptap-v2.md#server-side-rendering).

- **Deletes can now be tracked as an event** - Editor deletions can now be tracked as an event. [Read more](https://tiptap.dev/docs/editor/api/events.md#list-of-available-events).

- **Nodes and marks have new attribute validation support** - Validating attributes on nodes or marks is now supported.

- **StarterKit updates** - The StarterKit was made more powerful now including more extensions by default. [Read more](https://tiptap.dev/docs/guides/upgrade-tiptap-v2.md#starterkit-updates).

- **TableKit** - The new `TableKit` extension allows you to register all important table extensions in one package. [Read more](https://tiptap.dev/docs/editor/extensions/functionality/table-kit.md).

- **ListKit** - The new `ListKit` extension allows you to register all important list extensions in one package. [Read more](https://tiptap.dev/docs/editor/extensions/functionality/list-kit.md).

- **TextStyleKit** - The new `TextStyleKit` extension registers all important text-style extensions in one package. [Read more](https://tiptap.dev/docs/editor/extensions/functionality/text-style-kit.md).

- **New `rewriteUnknownContent` helper** - This helper function can be imported from the `@tiptap/core`.

- **New `unmount` as an alternative to destroying the editor** - The editor instance now supports an `unmount` method which allows for mounting and unmounting the editor to the DOM. This encourages re-use of editor instances by preserving all the same options between instances. This is different from the `destroy` method, which will unmount, emit the `destroy` event, and remove all event listeners.

- **New `toggleTextStyle` command for text styles** - The `toggleTextStyle` command allows you to toggle text styles on and off. This is useful for toggling text styles like bold or italic.

- **Static Renderer** - The Static Renderer helps render JSON content as HTML, Markdown, or React components without an editor instance. [Read more](https://tiptap.dev/docs/editor/api/utilities/static-renderer.md).

- **JSX Renderer** - With 3.0.0 you will have the ability to use **framework agnostic** JSX for the `renderHTML` function of your extensions. [Read more](https://tiptap.dev/docs/editor/api/utilities/jsx.md).

### Improvements

- **Improved transaction handling** - Transactions are now handled more efficiently and reliably. This change improves the overall performance of the editor.
- **`focusEvent` plugin key is exported** - You can now import the `focusEvent` plugin key if needed from the core package.
- **Improvements on mobile devices** - The 3.0.0 release brings improvements for mobile devices primarily focusing on touch events.
- **Minor IME bugfixes** - The 3.0.0 release includes a few minor bugfixes for IME input handling.
- **TextStyle can now consume style attributes** - The `TextStyle` extension can now consume styles from the style attribute and will skip parsing of other styles if there was an override defined in the style attribute. See [this Github Comment](https://github.com/ueberdosis/tiptap/discussions/5912#discussioncomment-11716337).
- **TableView on `Table` extension is now importable** - The `TableView` class on the `Table` extension is now importable to allow for custom table views that still are resizable.

### Additional changes

- **HTML parsing with `happy-dom-without-node`** - We now use `happy-dom-without-node` to parse HTML as a lightweight alternative to `zeed-dom`.
- **Various smaller bugfixes** - The 3.0.0 release includes various smaller bugfixes and improvements to the overall performance of the editor.

## What's next in Tiptap 3.X?

We're already exploring future features for releases beyond Tiptap 3.0.

- **Content migrations**: Migrations allow you to rewrite your document JSON to align with your current schema, facilitating document updates during schema changes with fully customizable solutions tailored to your needs.
- **Markdown support**: Enhance your editing capabilities by enabling the editor to both accept and output content in markdown, meeting the demands of modern applications and leveraging the strengths of LLMs in markdown generation.
- **Decorations API**: The new Decorations API allows you to influence document presentation without altering its content, providing an intuitive way to add visual enhancements beyond complex ProseMirror internals.
