npm / @tiptap/core
@tiptap/core
What changed in @tiptap/core 2 to 3, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-19.
3 breaking19 new APIs and options1 performance3 behavior and defaults6 fixes and other
See which of these apply to your code, ranked, in your agent:
npx @unstale/cli init@tiptap/core 323 changes
New APIs and options 15
New helpers check whether a value is a specific ProseMirror type.
Extensions can declare decorations directly through a hook, avoiding a hand-written ProseMirror plugin and plugin-state mapping.
With update set to 'changedRanges', rescans only blocks that actually changed instead of rebuilding decorations across the whole document.
Adds inline decorations for styling a range of text.
Adds node decorations for putting attributes on a block’s DOM element.
Adds widget decorations that render a custom element at a single position.
Adds a helper that returns the block-level sibling before the cursor’s textblock, or null at the first child of the block parent.
Widgets accept the ProseMirror ignoreSelection option.
Adds a renderer for React components in widget decorations that keeps them inside the existing app context.
Widgets accept the ProseMirror relaxedSide option.
Lets decoration implementations skip transactions that do not affect the data they depend on.
Widgets accept the ProseMirror side option.
Widgets accept the ProseMirror stopEvent option.
With update set to 'manual', decorations driven by external data can be refreshed through an editor command.
Adds a renderer for Vue components in widget decorations that keeps them inside the existing app context.
Behavior and default changes 2
Reusing a widget key keeps the component instance mounted while the document changes around it, preserving local state.
ListKeymap registers a Tab shortcut that moves a top-level textblock at the start of the paragraph into the previous list’s last item.
Fixes and other changes 6
Nested sibling elements now render properly by spreading children arrays into DOMOutputSpec.
editor.chain and editor.can can now be accessed during editor initialization.
Mixed JSX children are kept as separate siblings in DOM output.
Fixes failures when prosemirror-model is loaded more than once.
Fixes failures when prosemirror-model is loaded more than once.
Fixes failures when prosemirror-model is loaded more than once.
@tiptap/core 29 changes
Breaking changes 3
The command now emits updates by default.
The command no longer splits text nodes at the beginning.
The signature is now (content, options), and the command emits updates by default.
New APIs and options 4
Mark.create can define a mark view to render custom views for marks within the editor.
New delete event tracking is available.
Setting element to null opts into creating an editor on the server without rendering.
Support for validating node and mark attributes is added.
Performance 1
Transaction handling has performance improvements.
Behavior and default changes 1
The NodeViewRendererProps function can now return undefined, so callers should handle that case.