image extension for tiptap
Last release today
26 Aug 2026
Ships fairly regularly
a new release about every 2 weeks
Nearly every release is documented
notes for 57 of the last 60 stable releases
1 version withdrawn
withdrawn after publishing
6 years old
343 releases · first in 2020
Release timeline
343 releases since 2020Releases
- 3.10.130 Oct 2025
Release notes
Open source →v3.10.1
@tiptap/core
Patch Changes
- Use correct
ResizableNodeViewclass name
- Use correct
- 3.10.030 Oct 2025
Release notes
Open source →Releases
v3.10.0
@tiptap/core
Minor Changes
-
Add a new ResizableNodeview NodeView to core that wraps elements (images, videos, iframes) with configurable resize handles. It provides live onResize/onCommit callbacks, min/max constraints, aspect-ratio support, and styling hooks (class names + data attributes) to improve UX when resizing media inside the editor.
-
the addNodeView function can now return
nullto dynamically disable rendering of a node viewWhile this should not directly cause any issues, it's noteworthy as it still could affect some behavior in some edge cases.
@tiptap/extension-image
Minor Changes
- Added a new
resizeoption that allows images to be resized. The option adds resize handlers to images allowing users to manually resize images via drag and drop or touch
Additional notes
Open source →@tiptap/core
Minor Changes
-
Add a new ResizableNodeview NodeView to core that wraps elements (images, videos, iframes) with configurable resize handles. It provides live onResize/onCommit callbacks, min/max constraints, aspect-ratio support, and styling hooks (class names + data attributes) to improve UX when resizing media inside the editor.
-
the addNodeView function can now return
nullto dynamically disable rendering of a node viewWhile this should not directly cause any issues, it's noteworthy as it still could affect some behavior in some edge cases.
@tiptap/extension-image
Minor Changes
- Added a new
resizeoption that allows images to be resized. The option adds resize handlers to images allowing users to manually resize images via drag and drop or touch
-
- 3.9.129 Oct 2025
Release notes
Open source →Releases
v3.9.1
@tiptap/extension-table
Patch Changes
- Add a
renderWrapperoption to the Table extension so consumers can customize whether the table wrapper for the resizable node view should be rendered in non-editable mode as well.
Additional notes
Open source →@tiptap/extension-table
Patch Changes
- Add a
renderWrapperoption to the Table extension so consumers can customize whether the table wrapper for the resizable node view should be rendered in non-editable mode as well.
- Add a
- 3.9.028 Oct 2025
Release notes
Open source →Releases
v3.9.0
@tiptap/vue-3
Patch Changes
- Fix attribute forwarding for BubbleMenu and FloatingMenu Vue 3 components to allow setting z-index and other HTML attributes
@tiptap/extension-hard-break
Patch Changes
-
Ensure that markdown hard breaks (two spaces followed by a newline) are parsed so they render as line breaks (
<br>) in the editor when usingcontentType: 'markdown'.Fixes #7107
@tiptap/extension-unique-id
Minor Changes
- Add
updateDocumentoption to disable document updates caused by the Unique ID extension.
@tiptap/core
Patch Changes
- Only remove injected CSS on unmount if no other editors are in the document (fixes #6836)
@tiptap/extension-drag-handle
Patch Changes
-
Replace DOM traversal with browser's native elementsFromPoint for better performance.
- Use elementsFromPoint instead of querySelectorAll
- Add clampToContent helper for coordinate boundary validation
- Add findClosestTopLevelBlock helper for efficient block lookup
- Future-proof for root-level mousemove listeners
@tiptap/react
Patch Changes
- Prevent Bubble Menu plugin from re-loading every time the BubbleMenu component re-renders. Reverts a regression introduced in v3.6.3, in PR #7028.
Additional notes
Open source →@tiptap/vue-3
Patch Changes
- Fix attribute forwarding for BubbleMenu and FloatingMenu Vue 3 components to allow setting z-index and other HTML attributes
@tiptap/extension-hard-break
Patch Changes
-
Ensure that markdown hard breaks (two spaces followed by a newline) are parsed so they render as line breaks (
<br>) in the editor when usingcontentType: 'markdown'.Fixes #7107
@tiptap/extension-unique-id
Minor Changes
- Add
updateDocumentoption to disable document updates caused by the Unique ID extension.
@tiptap/core
Patch Changes
- Only remove injected CSS on unmount if no other editors are in the document (fixes #6836)
@tiptap/extension-drag-handle
Patch Changes
-
Replace DOM traversal with browser's native elementsFromPoint for better performance.
- Use elementsFromPoint instead of querySelectorAll
- Add clampToContent helper for coordinate boundary validation
- Add findClosestTopLevelBlock helper for efficient block lookup
- Future-proof for root-level mousemove listeners
@tiptap/react
Patch Changes
- Prevent Bubble Menu plugin from re-loading every time the BubbleMenu component re-renders. Reverts a regression introduced in v3.6.3, in PR #7028.
- 3.8.024 Oct 2025
Release notes
Open source →Releases
v3.8.0
@tiptap/[email protected]
Minor Changes
- 23e516e: Add
updateDocumentoption to disable document updates caused by the Unique ID extension.
@tiptap/[email protected]
Patch Changes
- f3770af: Prevent Bubble Menu plugin from re-loading every time the BubbleMenu component re-renders. Reverts a regression introduced in v3.6.3, in PR #7028.
Additional notes
Open source →@tiptap/extension-unique-id
Minor Changes
- Add
updateDocumentoption to disable document updates caused by the Unique ID extension.
@tiptap/react
Patch Changes
- Prevent Bubble Menu plugin from re-loading every time the BubbleMenu component re-renders. Reverts a regression introduced in v3.6.3, in PR #7028.
- 23e516e: Add
- 3.7.216 Oct 2025
Release notes
Open source →Additional notes
Open source → - 3.7.115 Oct 2025
Release notes
Open source →Releases
v3.7.1
@tiptap/markdown
Patch Changes
- Editors will not throw an error anymore when
contentis an empty string andcontentTypeismarkdown - Remove invalid server configuration from package.json
Additional notes
Open source →@tiptap/markdown
Patch Changes
- Editors will not throw an error anymore when
contentis an empty string andcontentTypeismarkdown - Remove invalid server configuration from package.json
- Editors will not throw an error anymore when
- 3.7.014 Oct 2025
Release notes
Open source →Releases
v3.7.0
@tiptap/core
Minor Changes
-
All commands and their corresponding TypeScript types are now exported from
@tiptap/coreso they can be imported and referenced directly by consumers. This makes it easier to build typed helpers, extensions, and tests that depend on the command signatures.Why:
- Previously some command option types were only available as internal types or scattered across files, which made it awkward for downstream users to import and reuse them.
import { commands } from '@tiptap/core'Notes:
- This is a non-breaking, additive change. It improves ergonomics for TypeScript consumers.
- If you rely on previously private/internal types, prefer the exported types from
@tiptap/coregoing forward.
-
Add comprehensive bidirectional markdown support to Tiptap through a new
@tiptap/markdownpackage and Markdown utilities in@tiptap/core.New Package:
@tiptap/markdown- A new official extension that provides full Markdown parsing and serialization capabilities using MarkedJS as the underlying Markdown parser.Core Features:
Extension API
MarkdownExtension: Main extension that adds Markdown support to your editorMarkdownManager: Core engine for parsing and serializing Markdown- Parse Markdown strings to Tiptap JSON:
editor.markdown.parse(markdown) - Serialize Tiptap JSON to Markdown:
editor.markdown.serialize(json) - Access to underlying marked.js instance:
editor.markdown.instance
- Parse Markdown strings to Tiptap JSON:
Editor Methods
editor.getMarkdown(): Serialize current editor content to Markdown stringeditor.markdown: Access to MarkdownManager instance for advanced operations
Editor Options:
contentType: Control the type of content that is inserted into the editor. Can bejson,htmlormarkdown- defaults tojsonand will automatically detect invalid content types (like JSON when it is actually Markdown).new Editor({ content: '# Hello World', contentType: 'markdown' })
Command Options: All content commands now support an
contentTypeoption:setContent(markdown, { contentType: 'markdown' }): Replace editor content with markdowninsertContent(markdown, { contentType: 'markdown' }): Insert markdown at cursor positioninsertContentAt(position, markdown, { contentType: 'markdown' }): Insert Markdown at specific position
For more, check the documentation.
Patch Changes
- The extension manager now provides a new property
baseExtensionsthat contains an unflattened array of extensions
@tiptap/markdown
Minor Changes
-
Add comprehensive bidirectional markdown support to Tiptap through a new
@tiptap/markdownpackage and Markdown utilities in@tiptap/core.New Package:
@tiptap/markdown- A new official extension that provides full Markdown parsing and serialization capabilities using MarkedJS as the underlying Markdown parser.Core Features:
Extension API
MarkdownExtension: Main extension that adds Markdown support to your editorMarkdownManager: Core engine for parsing and serializing Markdown- Parse Markdown strings to Tiptap JSON:
editor.markdown.parse(markdown) - Serialize Tiptap JSON to Markdown:
editor.markdown.serialize(json) - Access to underlying marked.js instance:
editor.markdown.instance
- Parse Markdown strings to Tiptap JSON:
Editor Methods
editor.getMarkdown(): Serialize current editor content to Markdown stringeditor.markdown: Access to MarkdownManager instance for advanced operations
Editor Options:
contentType: Control the type of content that is inserted into the editor. Can bejson,htmlormarkdown- defaults tojsonand will automatically detect invalid content types (like JSON when it is actually Markdown).new Editor({ content: '# Hello World', contentType: 'markdown' })
Command Options: All content commands now support an
contentTypeoption:setContent(markdown, { contentType: 'markdown' }): Replace editor content with markdowninsertContent(markdown, { contentType: 'markdown' }): Insert markdown at cursor positioninsertContentAt(position, markdown, { contentType: 'markdown' }): Insert Markdown at specific position
For more, check the documentation.
@tiptap/extension-link
Patch Changes
- Paste Handlers and onPaste plugin now respect shouldAutoLink/validate options
@tiptap/extensions
Patch Changes
-
Make the
TrailingNodeextension'snodeoption optional and derive the default node type from the editor schema when available.Previously the extension used a hard-coded
'paragraph'default and thenodeoption was required in the TypeScript definitions. This change:- makes
nodeoptional in the options type, - prefers the editor schema's top node default type when resolving the trailing node, and
- falls back to the configured option or
'paragraph'as a last resort.
This fixes cases where projects use a different top-level default node and prevents the extension from inserting an incorrect trailing node type.
- makes
Additional notes
Open source →@tiptap/core
Minor Changes
-
All commands and their corresponding TypeScript types are now exported from
@tiptap/coreso they can be imported and referenced directly by consumers. This makes it easier to build typed helpers, extensions, and tests that depend on the command signatures.Why:
- Previously some command option types were only available as internal types or scattered across files, which made it awkward for downstream users to import and reuse them.
import { commands } from '@tiptap/core'Notes:
- This is a non-breaking, additive change. It improves ergonomics for TypeScript consumers.
- If you rely on previously private/internal types, prefer the exported types from
@tiptap/coregoing forward.
-
Add comprehensive bidirectional markdown support to Tiptap through a new
@tiptap/markdownpackage and Markdown utilities in@tiptap/core.New Package:
@tiptap/markdown- A new official extension that provides full Markdown parsing and serialization capabilities using MarkedJS as the underlying Markdown parser.Core Features:
Extension API
MarkdownExtension: Main extension that adds Markdown support to your editorMarkdownManager: Core engine for parsing and serializing Markdown- Parse Markdown strings to Tiptap JSON:
editor.markdown.parse(markdown) - Serialize Tiptap JSON to Markdown:
editor.markdown.serialize(json) - Access to underlying marked.js instance:
editor.markdown.instance
- Parse Markdown strings to Tiptap JSON:
Editor Methods
editor.getMarkdown(): Serialize current editor content to Markdown stringeditor.markdown: Access to MarkdownManager instance for advanced operations
Editor Options:
contentType: Control the type of content that is inserted into the editor. Can bejson,htmlormarkdown- defaults tojsonand will automatically detect invalid content types (like JSON when it is actually Markdown).new Editor({ content: '# Hello World', contentType: 'markdown', })
Command Options: All content commands now support an
contentTypeoption:setContent(markdown, { contentType: 'markdown' }): Replace editor content with markdowninsertContent(markdown, { contentType: 'markdown' }): Insert markdown at cursor positioninsertContentAt(position, markdown, { contentType: 'markdown' }): Insert Markdown at specific position
For more, check the documentation.
Patch Changes
- The extension manager now provides a new property
baseExtensionsthat contains an unflattened array of extensions
@tiptap/markdown
Minor Changes
-
Add comprehensive bidirectional markdown support to Tiptap through a new
@tiptap/markdownpackage and Markdown utilities in@tiptap/core.New Package:
@tiptap/markdown- A new official extension that provides full Markdown parsing and serialization capabilities using MarkedJS as the underlying Markdown parser.Core Features:
Extension API
MarkdownExtension: Main extension that adds Markdown support to your editorMarkdownManager: Core engine for parsing and serializing Markdown- Parse Markdown strings to Tiptap JSON:
editor.markdown.parse(markdown) - Serialize Tiptap JSON to Markdown:
editor.markdown.serialize(json) - Access to underlying marked.js instance:
editor.markdown.instance
- Parse Markdown strings to Tiptap JSON:
Editor Methods
editor.getMarkdown(): Serialize current editor content to Markdown stringeditor.markdown: Access to MarkdownManager instance for advanced operations
Editor Options:
contentType: Control the type of content that is inserted into the editor. Can bejson,htmlormarkdown- defaults tojsonand will automatically detect invalid content types (like JSON when it is actually Markdown).new Editor({ content: '# Hello World', contentType: 'markdown', })
Command Options: All content commands now support an
contentTypeoption:setContent(markdown, { contentType: 'markdown' }): Replace editor content with markdowninsertContent(markdown, { contentType: 'markdown' }): Insert markdown at cursor positioninsertContentAt(position, markdown, { contentType: 'markdown' }): Insert Markdown at specific position
For more, check the documentation.
@tiptap/extension-link
Patch Changes
- Paste Handlers and onPaste plugin now respect shouldAutoLink/validate options
@tiptap/extensions
Patch Changes
-
Make the
TrailingNodeextension'snodeoption optional and derive the default node type from the editor schema when available.Previously the extension used a hard-coded
'paragraph'default and thenodeoption was required in the TypeScript definitions. This change:- makes
nodeoptional in the options type, - prefers the editor schema's top node default type when resolving the trailing node, and
- falls back to the configured option or
'paragraph'as a last resort.
This fixes cases where projects use a different top-level default node and prevents the extension from inserting an incorrect trailing node type.
- makes
-
- 3.6.714 Oct 2025
Release notes
Open source →Releases
v3.6.7
@tiptap/html
Patch Changes
-
Fix CVE-2025-61927 by bumping happy-dom to 20.0.0
Bumps the transitive/dev dependency happy-dom from ^18.0.1 → ^20.0.0 in @tiptap/html to address CVE-2025-61927. This is a dependency/security-only change and does not modify any public APIs.
Why:
- happy-dom released a security fix for CVE-2025-61927; updating prevents the vulnerability being pulled into consumers that depend on @tiptap/html.
Additional notes
Open source →@tiptap/html
Patch Changes
-
Fix CVE-2025-61927 by bumping happy-dom to 20.0.0
Bumps the transitive/dev dependency happy-dom from ^18.0.1 → ^20.0.0 in @tiptap/html to address CVE-2025-61927. This is a dependency/security-only change and does not modify any public APIs.
Why:
- happy-dom released a security fix for CVE-2025-61927; updating prevents the vulnerability being pulled into consumers that depend on @tiptap/html.
-
- 3.6.69 Oct 2025
Release notes
Open source →Releases
v3.6.6
@tiptap/extension-floating-menu
Patch Changes
- Fixed a problem where the position of a menu is not updated on creation when shouldShow is true
@tiptap/extension-bubble-menu
Patch Changes
- Fixed a problem where the position of a menu is not updated on creation when shouldShow is true
@tiptap/vue-3
Patch Changes
- Fixed a bug that caused conditionally rendered bubble menus not to be attached to the DOM correctly
Additional notes
Open source →@tiptap/extension-floating-menu
Patch Changes
- Fixed a problem where the position of a menu is not updated on creation when shouldShow is true
@tiptap/extension-bubble-menu
Patch Changes
- Fixed a problem where the position of a menu is not updated on creation when shouldShow is true
@tiptap/vue-3
Patch Changes
- Fixed a bug that caused conditionally rendered bubble menus not to be attached to the DOM correctly
- 3.6.53 Oct 2025
Release notes
Open source →Releases
v3.6.5
@tiptap/extension-horizontal-rule
Patch Changes
- Added nextNodeType option to horizontal-rule extension, allowing users to specify which node type should be inserted after a horizontal rule
@tiptap/core
Patch Changes
- Editors can now emit
transactionandupdateevents before being mounted. This means smoother state handling and instant feedback from editors, even when they're not in the DOM.
Additional notes
Open source →@tiptap/extension-horizontal-rule
Patch Changes
- Added nextNodeType option to horizontal-rule extension, allowing users to specify which node type should be inserted after a horizontal rule
@tiptap/html
Patch Changes
- Fix: Clean up happy-dom window instance fixing a memory leak caused by unclosed happy-dom windows
@tiptap/core
Patch Changes
- Editors can now emit
transactionandupdateevents before being mounted. This means smoother state handling and instant feedback from editors, even when they're not in the DOM.
- 3.6.43 Oct 2025
Release notes
Open source →Releases
v3.6.4
@tiptap/html
Patch Changes
- Fix: Clean up happy-dom window instance fixing a memory leak caused by unclosed happy-dom windows
Additional notes
Open source →@tiptap/html
Patch Changes
- Fix: Clean up happy-dom window instance fixing a memory leak caused by unclosed happy-dom windows
- 3.6.32 Oct 2025
Release notes
Open source →Releases
v3.6.3
@tiptap/react
Patch Changes
- Updated the React
FloatingMenuplugin hook dependencies to match theBubbleMenubehavior. The FloatingMenu will now respond to changes inappendTo,pluginKey,shouldShow, andoptions. - Resolved an issue where the React BubbleMenu did not update when FloatingUI option props changed after initial mount. The BubbleMenu now correctly responds to updated option props.
- Improved the BubbleMenu's usability by ensuring the
appendToprop passed to the React BubbleMenu component is now correctly forwarded to the underlying bubble menu plugin. This fix allows developers to customize where the BubbleMenu is attached in the DOM, helping resolve issues with positioning and portal setups in React apps.
@tiptap/extensions
Patch Changes
- The Selection extension now uses the correct SelectionOptions type, providing accurate typings for its options.
@tiptap/extension-code-block
Patch Changes
- Configuration options for the CodeBlock extension now support
nullandundefinedvalues. This makes custom setups more flexible and avoids unnecessary type errors when omitting optional overrides. All existing default values and fallback logic remain in place - no breaking changes for existing code.
@tiptap/core
Patch Changes
- Refined the
JSONContent.attrsdefinition to exactly mirror the structure returned byeditor.getJSON(). This ensures strict type safety and consistency between the editor output and the expected type, eliminating errors caused by mismatched attribute signatures.
@tiptap/extension-table-of-contents
Patch Changes
- Improve typings by inferring the storage type for the Table of Contents extension
@tiptap/extension-floating-menu
Patch Changes
- You can now pass a callback to the
appendTooption in the floating and bubble menu extensions. The callback must return an element synchronously, so menus can be appended to elements that are created dynamically.
@tiptap/extension-bubble-menu
Patch Changes
- You can now pass a callback to the
appendTooption in the floating and bubble menu extensions. The callback must return an element synchronously, so menus can be appended to elements that are created dynamically.
Additional notes
Open source →@tiptap/react
Patch Changes
- Updated the React
FloatingMenuplugin hook dependencies to match theBubbleMenubehavior. The FloatingMenu will now respond to changes inappendTo,pluginKey,shouldShow, andoptions. - Resolved an issue where the React BubbleMenu did not update when FloatingUI option props changed after initial mount. The BubbleMenu now correctly responds to updated option props.
- Improved the BubbleMenu's usability by ensuring the
appendToprop passed to the React BubbleMenu component is now correctly forwarded to the underlying bubble menu plugin. This fix allows developers to customize where the BubbleMenu is attached in the DOM, helping resolve issues with positioning and portal setups in React apps.
@tiptap/extensions
Patch Changes
- The Selection extension now uses the correct SelectionOptions type, providing accurate typings for its options.
@tiptap/extension-code-block
Patch Changes
- Configuration options for the CodeBlock extension now support
nullandundefinedvalues. This makes custom setups more flexible and avoids unnecessary type errors when omitting optional overrides. All existing default values and fallback logic remain in place - no breaking changes for existing code.
@tiptap/core
Patch Changes
- Refined the
JSONContent.attrsdefinition to exactly mirror the structure returned byeditor.getJSON(). This ensures strict type safety and consistency between the editor output and the expected type, eliminating errors caused by mismatched attribute signatures.
@tiptap/extension-table-of-contents
Patch Changes
- Improve typings by inferring the storage type for the Table of Contents extension
@tiptap/extension-floating-menu
Patch Changes
- You can now pass a callback to the
appendTooption in the floating and bubble menu extensions. The callback must return an element synchronously, so menus can be appended to elements that are created dynamically.
@tiptap/extension-bubble-menu
Patch Changes
- You can now pass a callback to the
appendTooption in the floating and bubble menu extensions. The callback must return an element synchronously, so menus can be appended to elements that are created dynamically.
- Updated the React
- 3.6.229 Sept 2025
Release notes
Open source →Releases
v3.6.2
@tiptap/extension-bubble-menu
Patch Changes
- Fix a bug where the bubble menu could throw an error if the editor was destroyed while the plugin was cleaning up.
Additional notes
Open source →@tiptap/extension-bubble-menu
Patch Changes
- Fix a bug where the bubble menu could throw an error if the editor was destroyed while the plugin was cleaning up.
- 3.6.125 Sept 2025
Release notes
Open source →Releases
v3.6.1
@tiptap/react
Patch Changes
- Hotfix: Fix a crash in the React package that could occur during mounting/unmounting when the editor wasn't fully initialized. This prevents a runtime error and improves stability.
Additional notes
Open source →@tiptap/react
Patch Changes
- Hotfix: Fix a crash in the React package that could occur during mounting/unmounting when the editor wasn't fully initialized. This prevents a runtime error and improves stability.
- 3.6.025 Sept 2025
Release notes
Open source →Releases
v3.6.0
@tiptap/core
Patch Changes
-
Improve typing and docs for
EditorOptions.elementto reflect all supported mounting modes and align behavior across adapters.elementnow accepts:Element: the editor is appended inside the given element.{ mount: HTMLElement }: the editor is mounted directly tomount(no extra wrapper).(editorEl: HTMLElement) => void: a function that receives the editor element so you can place it anywhere in the DOM.null: no automatic mounting.
@tiptap/extension-table
Patch Changes
-
Parse cell
colwidthfrom nearest<colgroup>when missing on the cellWhen importing HTML, table column widths are often declared on a surrounding
<colgroup>rather than on each<td>. Previously,tableCellonly read thecolwidthattribute from the cell itself and would lose width information in that case. The implementation now falls back to reading the corresponding<col>'swidthfrom the table's<colgroup>using the cell's index.This is a non-breaking bugfix that preserves layout information when HTML uses
<colgroup>. Consider adding a small demo or unit test to assert colwidth is preserved for cells when only the<colgroup>contains width attributes. -
Fixes table wrapper replacement and lost selections when
resizable: true.TableView.ignoreMutation now ignores attribute/childList/characterData mutations that occur inside the table wrapper but outside the editable
contentDOM, preventing wrapper re-creation during resize interactions so selections (e.g.mergeCells()) are preserved.No API or breaking changes.
@tiptap/extension-bubble-menu
Patch Changes
-
Remove recently added
updateBubbleMenuPositionmethod because it would not work in the React and Vue versions of the BubbleMenu, only in the vanilla extension. And that would confuse developers.Write the
transactionHandlermethod as an arrow function because arrow functions have nothis, so thethisremains the instance of theBubbleMenuViewclass.
@tiptap/extension-unique-id
Minor Changes
-
Create a utility to add unique IDs to a document in the server
The utility is called
generateUniqueIdsand is exported from the@tiptap/extension-unique-idpackage.It has the same functionality as the
UniqueIDextension, but without the need to create anEditorinstance. This lets you add unique IDs to the document in the server.It takes the following parameters:
doc: The Tiptap JSON document to add unique IDs to.extensions: The extensions to use. Must include theUniqueIDextension.
It returns the updated Tiptap JSON document, with the unique IDs added to the nodes.
@tiptap/vue-3
Minor Changes
- Pass
attrsthrough Vue 3 menus
Additional notes
Open source →@tiptap/core
Patch Changes
-
Improve typing and docs for
EditorOptions.elementto reflect all supported mounting modes and align behavior across adapters.elementnow accepts:Element: the editor is appended inside the given element.{ mount: HTMLElement }: the editor is mounted directly tomount(no extra wrapper).(editorEl: HTMLElement) => void: a function that receives the editor element so you can place it anywhere in the DOM.null: no automatic mounting.
@tiptap/extension-table
Patch Changes
-
Parse cell
colwidthfrom nearest<colgroup>when missing on the cellWhen importing HTML, table column widths are often declared on a surrounding
<colgroup>rather than on each<td>. Previously,tableCellonly read thecolwidthattribute from the cell itself and would lose width information in that case. The implementation now falls back to reading the corresponding<col>'swidthfrom the table's<colgroup>using the cell's index.This is a non-breaking bugfix that preserves layout information when HTML uses
<colgroup>. Consider adding a small demo or unit test to assert colwidth is preserved for cells when only the<colgroup>contains width attributes. -
Fixes table wrapper replacement and lost selections when
resizable: true.TableView.ignoreMutation now ignores attribute/childList/characterData mutations that occur inside the table wrapper but outside the editable
contentDOM, preventing wrapper re-creation during resize interactions so selections (e.g.mergeCells()) are preserved.No API or breaking changes.
@tiptap/extension-bubble-menu
Patch Changes
-
Remove recently added
updateBubbleMenuPositionmethod because it would not work in the React and Vue versions of the BubbleMenu, only in the vanilla extension. And that would confuse developers.Write the
transactionHandlermethod as an arrow function because arrow functions have nothis, so thethisremains the instance of theBubbleMenuViewclass.
@tiptap/extension-unique-id
Minor Changes
-
Create a utility to add unique IDs to a document in the server
The utility is called
generateUniqueIdsand is exported from the@tiptap/extension-unique-idpackage.It has the same functionality as the
UniqueIDextension, but without the need to create anEditorinstance. This lets you add unique IDs to the document in the server.It takes the following parameters:
doc: The Tiptap JSON document to add unique IDs to.extensions: The extensions to use. Must include theUniqueIDextension.
It returns the updated Tiptap JSON document, with the unique IDs added to the nodes.
@tiptap/vue-3
Minor Changes
- Pass
attrsthrough Vue 3 menus
-
- 3.5.325 Sept 2025
Release notes
Open source →Releases
v3.5.3
@tiptap/extension-text-style
Patch Changes
-
Merge nested span styles only for immediate child spans and guard style values.
- Replace non-standard/fragile selector approach and avoid re-processing nested
<span>elements. - Read parent style once, merge with child style only when present, and remove empty
styleattributes. - Improves parsing performance and robustness in browsers, Node/JSDOM and tests.
This change fixes a bug that could cause exponential work when parsing deeply nested
<span>elements - in extreme cases that could make the tab unresponsive or crash the renderer. It is a bugfix / performance improvement with no public API changes. - Replace non-standard/fragile selector approach and avoid re-processing nested
Additional notes
Open source →@tiptap/extension-text-style
Patch Changes
-
Merge nested span styles only for immediate child spans and guard style values.
- Replace non-standard/fragile selector approach and avoid re-processing nested
<span>elements. - Read parent style once, merge with child style only when present, and remove empty
styleattributes. - Improves parsing performance and robustness in browsers, Node/JSDOM and tests.
This change fixes a bug that could cause exponential work when parsing deeply nested
<span>elements - in extreme cases that could make the tab unresponsive or crash the renderer. It is a bugfix / performance improvement with no public API changes. - Replace non-standard/fragile selector approach and avoid re-processing nested
-
- 3.5.224 Sept 2025
Release notes
Open source →Releases
v3.5.2
@tiptap/react
Patch Changes
- Tiptap will now correctly insert a React MarkViews' content into the correct element within
MarkViewContentcomponent
Additional notes
Open source →@tiptap/react
Patch Changes
- Tiptap will now correctly insert a React MarkViews' content into the correct element within
MarkViewContentcomponent
- Tiptap will now correctly insert a React MarkViews' content into the correct element within
- 3.5.123 Sept 2025
Release notes
Open source →@tiptap/extension-floating-menu
Patch Changes
- Add
appendTosupport toFloatingMenuand pass it through in React/Vue 2/Vue 3 for bothBubbleMenuandFloatingMenuto allow fixing clipping/z-index issues.
@tiptap/react
Patch Changes
- Add
appendTosupport toFloatingMenuand pass it through in React/Vue 2/Vue 3 for bothBubbleMenuandFloatingMenuto allow fixing clipping/z-index issues.
@tiptap/vue-2
Patch Changes
- Add
appendTosupport toFloatingMenuand pass it through in React/Vue 2/Vue 3 for bothBubbleMenuandFloatingMenuto allow fixing clipping/z-index issues.
@tiptap/vue-3
Patch Changes
- Add
appendTosupport toFloatingMenuand pass it through in React/Vue 2/Vue 3 for bothBubbleMenuandFloatingMenuto allow fixing clipping/z-index issues.
Additional notes
Open source →@tiptap/extension-floating-menu
Patch Changes
- Add
appendTosupport toFloatingMenuand pass it through in React/Vue 2/Vue 3 for bothBubbleMenuandFloatingMenuto allow fixing clipping/z-index issues.
@tiptap/react
Patch Changes
- Add
appendTosupport toFloatingMenuand pass it through in React/Vue 2/Vue 3 for bothBubbleMenuandFloatingMenuto allow fixing clipping/z-index issues.
@tiptap/vue-2
Patch Changes
- Add
appendTosupport toFloatingMenuand pass it through in React/Vue 2/Vue 3 for bothBubbleMenuandFloatingMenuto allow fixing clipping/z-index issues.
@tiptap/vue-3
Patch Changes
- Add
appendTosupport toFloatingMenuand pass it through in React/Vue 2/Vue 3 for bothBubbleMenuandFloatingMenuto allow fixing clipping/z-index issues.
2.4.0 (2024-05-14)
Bug Fixes
- core: configure should use the parent of the current instance, to avoid duplication (#5147) (4db463c)
- fix ts error for BubbleMenu and FloatingMenu in @tiptap/react (#5126) (baff4af)
Features
- Add
- 3.5.023 Sept 2025
Release notes
Open source →Releases
@tiptap/[email protected]
Minor Changes
- 8fa5955: Add
updateBubbleMenuPositioncommand to update position of bubble menu. This command lets developers programmatically update the position of the bubble menu in response to certain events (for example, when the bubble menu is resized).
@tiptap/[email protected]
Minor Changes
- daa51c4: Add
getReferencedVirtualElementoption to the drag handle extension to customize the position of the drag handle.
Patch Changes
- 3eb5360: Fixed
findElementNextToCoordsreturning incorrect nodes when the position is at a node boundary. The function now correctly identifies leaf nodes (like images, horizontal rules) by checking$pos.nodeAfterbefore falling back to the parent node lookup.
@tiptap/[email protected]
Patch Changes
- d56c9dd: Fix Vue2 menus visibility bug.
- 8fa5955: Add
- 3.4.622 Sept 2025
Release notes
Open source →Releases
@tiptap/[email protected]
Patch Changes
-
968016f: Added support for the
undoableoption in InputRules (matching ProseMirror’s implementation).- When
false, the change will not be tracked as undoable. - Default remains
truefor backward compatibility.
This brings Tiptap’s InputRules behavior in line with ProseMirror and gives developers finer control over undo functionality.
- When
-
- 3.4.522 Sept 2025
Release notes
Open source →Releases
@tiptap/[email protected]
Patch Changes
- 0226d42: Fix an issue where injected CSS was not mounted correctly when the editor instance was mounted. The fix ensures CSS injected by the editor is attached to the document when the editor mounts, preventing missing styles in some mount/unmount scenarios.
- 37af83b: refactor: replace
map(...).flat()withflatMapfor simpler, more efficient array flattening - f598ac7: Fix bug in
insertContentAtcommand where extra content would get deleted when the selection was at the beginning of the document and a node was inserted
@tiptap/[email protected]
Patch Changes
- 13fb996: refactor: replace
map(...).flat()withflatMapfor simpler, more efficient array flattening
@tiptap/[email protected]
Patch Changes
- 82121b8: refactor: replace
map(...).flat()withflatMapfor simpler, more efficient array flattening
@tiptap/[email protected]
Patch Changes
-
f472c5b: Use a named import for Suggestion from
@tiptap/suggestionto avoid bundler ESM/CJS interop wrapping (__toESM) that caused Jest/CJS consumers to receive a module object instead of the callable plugin factory.This is a non-breaking internal fix. It keeps runtime module shape stable for CommonJS (Jest) and prevents the TypeError thrown when the extension attempted to call a non-function.
@tiptap/[email protected]
Patch Changes
- bfcd958: refactor: replace
map(...).flat()withflatMapfor simpler, more efficient array flattening
- 3.4.417 Sept 2025
Release notes
Open source →Releases
@tiptap/[email protected]
Patch Changes
- 00cf1d7: Fix bug in
insertContentAtcommand where extra content would get deleted when the selection was at the beginning of the document and a node was inserted
- 00cf1d7: Fix bug in
- 3.4.315 Sept 2025
Release notes
Open source →Releases
@tiptap/[email protected]
Patch Changes
- 1ea8906: When the editor view is created, it now will also include
nodeViewsandmarkViewsproperties instead of setting them afterward. This avoids serialization of the editor state to HTML which will be replaced by node views anyway.
@tiptap/[email protected]
Patch Changes
-
915ed65: Add custom positioning support to the BubbleMenu.
This change adds an opt-in API that allows consumers to fully control how the BubbleMenu is positioned. Instead of relying solely on the internal placement logic, you can now provide a function (for example
getPosition) that receives the relevant context (editor instance and menu DOM element) and returns the desired coordinates or positioning style.
@tiptap/[email protected]
Patch Changes
-
915ed65: Add custom positioning support to the BubbleMenu.
This change adds an opt-in API that allows consumers to fully control how the BubbleMenu is positioned. Instead of relying solely on the internal placement logic, you can now provide a function (for example
getPosition) that receives the relevant context (editor instance and menu DOM element) and returns the desired coordinates or positioning style.
@tiptap/[email protected]
Patch Changes
-
915ed65: Add custom positioning support to the BubbleMenu.
This change adds an opt-in API that allows consumers to fully control how the BubbleMenu is positioned. Instead of relying solely on the internal placement logic, you can now provide a function (for example
getPosition) that receives the relevant context (editor instance and menu DOM element) and returns the desired coordinates or positioning style.
@tiptap/[email protected]
Patch Changes
-
915ed65: Add custom positioning support to the BubbleMenu.
This change adds an opt-in API that allows consumers to fully control how the BubbleMenu is positioned. Instead of relying solely on the internal placement logic, you can now provide a function (for example
getPosition) that receives the relevant context (editor instance and menu DOM element) and returns the desired coordinates or positioning style.
- 1ea8906: When the editor view is created, it now will also include
- 3.4.29 Sept 2025
Release notes
Open source →Releases
@tiptap/[email protected]
Patch Changes
-
24445c4: Listen to a custom scroll target when positioning the BubbleMenu and ensure the scroll listener is cleaned up on destroy.
The BubbleMenu now accepts an optional
scrollTargetoption which will be used instead ofwindowwhen listening for scroll events that affect the menu positioning. The plugin also removes the scroll listener during cleanup.No user-facing API changes other than the new optional
scrollTargetsetting.
-
- 3.4.14 Sept 2025
Release notes
Open source →Releases
@tiptap/[email protected]
Patch Changes
-
46fa8b8: Prefer the raw inline
styleattribute when parsingcolorandbackground-colorso the original format (hex, rgba/hsla, etc.) is preserved instead of falling back to the computedelement.style.*value (which often resolves torgb(...)).This fixes mismatches where consumers (for example, demo toolbars and color pickers) expected the original hex values when initializing the editor from HTML.
- The
colorandbackground-colorparsers now look for astyleattribute first and extract the declared value. If no raw style is present, they still fall back toelement.style.color/element.style.backgroundColor.
MIGRATION NOTES
- This is a patch-level change. It corrects parsing behavior and is the least-disruptive fix for the issue.
- If your code relied on the parser returning computed
rgb(...)strings, you may see different string values (for example#958DF1instead ofrgb(149, 141, 241)) when HTML contained hex values. - If you need a stable, normalized format for comparisons, normalize the
attribute (for example with a color utility like
tinycolor2) before comparing or use the editor APIs in a way that doesn't depend on the exact string representation. - @tiptap/[email protected]
- The
@tiptap/[email protected]
Patch Changes
- 4dd8d58: fix: @types/react version mismatch
@tiptap/[email protected]
Patch Changes
-
59fb86f: Previously,
clientRectwas only obtained throughdecorationNode. IfdecorationNodecould not be obtained,clientRectwas set tonull, which caused the suggestion not to render in some IME scenarios (notably Chinese IME).This change adds a fallback method to compute
clientRectfrom the editor's cursor position whendecorationNodeis not available. It generates a DOMRect based on the cursor coordinates so the suggestion can render even when the decoration node is missing.
-
- 3.4.04 Sept 2025
Release notes
Open source →Releases
@tiptap/[email protected]
Minor Changes
- ad51daa: Add
mountandunmountevents to theEditorinstance for tracking mounts and unmounts
Patch Changes
-
895c73f: Fix
can().toggleMark()returning incorrect result when cursor is inside nodes that disallow marksFixed an issue where
can().toggleMark('bold')incorrectly returnedtruewhen the cursor was positioned inside a code block (with no selection), even though marks are not allowed in code blocks. The method now correctly returnsfalsein this scenario by checking if the parent node allows the mark type when the selection is a cursor.
@tiptap/[email protected]
Patch Changes
- ef909f1: Updated
DropcursorOptions.colortypes to use types defined inprosemirror-dropcursor
@tiptap/[email protected]
Patch Changes
-
11c8085: Added indentation support for code blocks via
Tab. Is deactivated by default.New Extension Options:
enableTabIndentation: boolean- controls if tab completion should be enabledtabSize: number- controls how many spaces are inserted for a tab
@tiptap/[email protected]
Patch Changes
-
11c8085: Added indentation support for code blocks via
Tab. Is deactivated by default.New Extension Options:
enableTabIndentation: boolean- controls if tab completion should be enabledtabSize: number- controls how many spaces are inserted for a tab
@tiptap/[email protected]
Patch Changes
- d3773c7: Fixed an issue where the input method editor (IME) failed to handle Chinese text correctly when entering the first word. Users can now input multiple words as expected.
@tiptap/[email protected]
Patch Changes
- 2cb08d3: Use factory function for object default value as required by vue 2.
- 2cb08d3: Fixed a bug that would cause Vue 2 to throw errors in console because Vue 2 expects factory functions for prop defaults
@tiptap/[email protected]
Patch Changes
-
3733bb9: Allow consumers to handle the Escape key via
render().onKeyDownbefore the suggestion plugin auto-exits.Previously the suggestion plugin intercepted Escape internally and immediately called
onExit, preventingrender().onKeyDownfrom receiving the event and stopping propagation. Nowrender().onKeyDownis invoked first for Escape; if it returnstruethe plugin assumes the consumer handled the event (so they can callevent.preventDefault()/event.stopPropagation()and optionally callexitSuggestion(view)themselves). If it returnsfalse(or is absent), the plugin will continue to callonExitand close the suggestion as before.This change enables scenarios where the editor is inside a modal/drawer and the consumer needs to prevent the outer UI from reacting to Escape while still controlling the suggestion's lifecycle.
-
90cbed5: Remove the global document
mousedownhandler that closed suggestion popups when clicking outside.Previously the suggestion plugin listened for document
mousedownevents and closed suggestion UIs when the user clicked outside the editor or suggestion portal. That behavior has been removed to avoid framework-specific coupling (for example reliance on.react-renderer) and related compatibility issues.Now suggestions are closed via other signals:
- pressing Escape (unchanged)
- selection/cursor changes
- renderer.onExit (renderers can call this)
- programmatic calls to
exitSuggestion(view)
- ad51daa: Add
- 3.3.12 Sept 2025
Release notes
Open source →Releases
@tiptap/[email protected]
Patch Changes
- 9e02c12: Prevent incorrect insertion of code marks when a space immediately follows backticks.
@tiptap/[email protected]
Patch Changes
- 02eae08: Fixed outdated warning message to reference
@tiptap/extension-undo-redoinstead of@tiptap/extension-history.
@tiptap/[email protected]
Patch Changes
-
8eff69a: Improve drag handle node lookup by scanning element bounding rects inside the editor instead of performing per-pixel
elementsFromPointloops, and throttle mouse handling to a single update per animation frame to reduce CPU usage and improve stability.This should make drag handle positioning and node detection significantly faster and more robust.
@tiptap/[email protected]
Patch Changes
-
03bf0ea: Preserve prefixes when replacing emoji shortcodes to avoid unintended conversions.
Previously, shortcodes such as
:x:could be converted into emoji nodes even when part of a larger string (e.g., in URLs or other text). The paste handler now preserves prefixes, which helps prevent unwanted conversions in such cases, but does not specifically target URLs.
Patch Changes
- 96a34a0: Fix collaboration extension selection to use the extension with a provider instead of the first registered extension
- 3.3.023 Aug 2025
Release notes
Open source →Releases
@tiptap/[email protected]
Minor Changes
-
5423726: Make input rules and paste rules respect extension
priorityby registering them per-extension instead of aggregating them into a single global plugin.Why
Previously all
addInputRules()andaddPasteRules()were gathered into one global plugin which ran before the other plugins. That caused conflicts where some extensions (for example mention/suggestion with#) could not preempt the built-in heading input rule.What changed
- Input and paste rules are now created and registered at the position of the
owning extension. This makes their execution order follow the extension
sorting/
prioritymechanism. - Behavior is more predictable: extensions with higher
prioritycan now take precedence over lower priority extensions' input/paste rules.
Migration & compatibility
- This is a behavioral change. If you relied on the old global ordering (input
rules always running before other plugins), you may observe different
outcomes. In most cases this is desirable and fixes conflicts (like the
#mention vs. heading shortcut), but be aware of the change. - If you need to force the previous behavior for a specific rule, you can:
- Register the rule as a ProseMirror plugin via
addProseMirrorPlugins()on the extension and place it where you want it to run. - Adjust the extension
priorityvalue so the extension sits earlier or later in the ordering.
- Register the rule as a ProseMirror plugin via
If you have any questions or see regressions after upgrading, please open an issue with a small repro and we'll help triage.
- Input and paste rules are now created and registered at the position of the
owning extension. This makes their execution order follow the extension
sorting/
Patch Changes
-
5423726: Fix paste rule handling for node views and defensively guard empty ranges.
This patch ensures paste rules can correctly inspect node content when node-specific size metadata (
nodeSize) is present, falling back tonode.content.sizewhen needed. It also skips empty or invalid node ranges before callingtextBetween, preventing runtime errors originating from internal Fragment/Node traversals (for example: "Cannot read properties of undefined (reading 'nodeSize')").
@tiptap/[email protected]
Patch Changes
-
5423726: Change the
generateIDoption to accept a context object:{ node, pos }.This lets ID generators access both the ProseMirror
nodeand itsposwithin the document when creating IDs, enabling logic that depends on node content, type, or position.The change is backwards-compatible: existing
generateIDfunctions that ignore the new context will continue to work. Example usage:editor.use(UniqueID, { generateID: ({ node, pos }) => `${node.type.name}-${pos}-${uuidv4()}`, })
@tiptap/[email protected]
Patch Changes
-
5423726: Ensure
ReactRenderer.destroy()removes the renderer DOM element when present.- When consumers append a
ReactRenderer's.elementto the DOM (for example many demos append it todocument.body), previously callingdestroy()removed the portal renderer but left the DOM node in place which could lead to accumulating.react-rendererelements. destroy()now also removes the element from its parent node if present, preventing leaked DOM nodes / React roots.
- When consumers append a
@tiptap/[email protected]
Patch Changes
-
5423726: Add a safe API to exit suggestions and remove decorations.
- Dispatching a metadata-only transaction with
{ exit: true }will now reliably deactivate the suggestion plugin and remove inline decorations. - Pressing Escape now triggers renderer.onExit and dispatches the exit meta, so suggestions close immediately without needing document edits.
- Clicking outside the editor will also close active suggestions.
- Exported
exitSuggestion(view, pluginKey?)helper to programmatically close suggestions safely.
- Dispatching a metadata-only transaction with
-
- 3.2.222 Aug 2025
Release notes
Open source →Releases
@tiptap/[email protected]
Patch Changes
-
1cab7ff: Change the
generateIDoption to accept a context object:{ node, pos }.This lets ID generators access both the ProseMirror
nodeand itsposwithin the document when creating IDs, enabling logic that depends on node content, type, or position.
-
- 3.2.121 Aug 2025
Release notes
Open source →Releases
@tiptap/[email protected]
Patch Changes
- 6a2873f: Ensure drag previews for node views work correctly in Safari by attaching
an offscreen clone of the node to the DOM while calling
setDragImage, and by preserving the original element's pixelwidth/heightso the preview matches the original. This prevents Safari from immediately cancelling the drag when a detached element is used as the drag image.
- 6a2873f: Ensure drag previews for node views work correctly in Safari by attaching
an offscreen clone of the node to the DOM while calling
- 3.2.014 Aug 2025
Nothing published for this version
- 3.1.010 Aug 2025
Release notes
Open source →Releases
@tiptap/[email protected]
Minor Changes
- 978c548: Expose
onDragStartandonDragEndcallbacks to improve custom drag behavior. This allows better UI control compared to relying oneditor.view.dragging, especially when using absolute-positioned drag handles.
@tiptap/[email protected]
Minor Changes
- 978c548: Expose
onDragStartandonDragEndcallbacks to improve custom drag behavior. This allows better UI control compared to relying oneditor.view.dragging, especially when using absolute-positioned drag handles.
@tiptap/[email protected]
Patch Changes
- 2718eea: Fixed bubble menus having invalid positions on node selections
@tiptap/[email protected]
Patch Changes
- 43747ce: Fixed a problem where the emoji extension would interfer with editor's in composing mode (for example in IME conversion)
@tiptap/[email protected]
Patch Changes
- c868252: Fixed an issue with the mathematics regex using modern negative lookups causing crashes in older Safari versions.
@tiptap/[email protected]
Patch Changes
- c0d33fd: Fixed a bug causing invalid number of columns being created while converting tables to Markdown
- 0943a52: Fixed an issue preventing overriding the default options of the static renderer's
renderToMarkdownfunction.
- 978c548: Expose
- 3.0.91 Aug 2025
Release notes
Open source →Releases
@tiptap/[email protected]
Patch Changes
- 072b110: Fixed the Vue 3 Drag Handle so it only appears when the user starts interacting with the text editor.
@tiptap/[email protected]
Patch Changes
- 22fcc31: Update TaskItem aria-label when node changes
@tiptap/[email protected]
Patch Changes
- 22d6050: fix renderToMarkdown rendering a link href's as undefined
- 3.0.81 Aug 2025
Release notes
Open source →Releases
@tiptap/[email protected]
Patch Changes
- 990084c: Bump linkifyjs version to latest to address the recently discovered prototype pollution vulnerability
- @tiptap/[email protected]
- @tiptap/[email protected]
- 990084c: Bump linkifyjs version to latest to address the recently discovered prototype pollution vulnerability
- 3.0.716 Jul 2025
Release notes
Open source →Releases
@tiptap/[email protected]
Patch Changes
- 6b42853: Fix: Fix a problem with the inline option and virtual elements missing getClientRects
@tiptap/[email protected]
Patch Changes
- 6b42853: Fix: Fix a problem with the inline option and virtual elements missing getClientRects
- 3.0.615 Jul 2025
Release notes
Open source →Releases
@tiptap/[email protected]
Patch Changes
- 2e71d05: Fix: broken types for function chaining when calling extend
- 3.0.515 Jul 2025
Release notes
Open source →Releases
@tiptap/[email protected]
Patch Changes
- f8a4e3e: Refactor: Make shouldShow optional on bubbleMenu and floatingMenu options
@tiptap/[email protected]
Patch Changes
- f8a4e3e: Refactor: Make shouldShow optional on bubbleMenu and floatingMenu options
- 3.0.415 Jul 2025
Release notes
Open source →Releases
@tiptap/[email protected]
Patch Changes
- 7ed03fa: Fix: Add correct overload for extension extend types
- 3.0.315 Jul 2025
Release notes
Open source →Releases
@tiptap/[email protected]
Patch Changes
- 75cabde: Fix: Avoid the JSX Runtime to globally overwrite React's Element types when
/** @jsxImportSource @tiptap/core */is not used
@tiptap/[email protected]
Patch Changes
- 75cabde: Chore: Removed type overwrites for renderHTML
@tiptap/[email protected]
Patch Changes
- 75cabde: Chore: Removed type overwrites for renderHTML
- 75cabde: Fix: Avoid the JSX Runtime to globally overwrite React's Element types when
- 3.0.215 Jul 2025
Release notes
Open source →Releases
@tiptap/[email protected]
Patch Changes
- 601b1f6: Fix: Correctly pass through the bubble menu floating options
- 601b1f6: Improvement: Added better JSDocs for the options object
@tiptap/[email protected]
Patch Changes
- 601b1f6: Improvement: Added better JSDocs for the options object
- 3.0.2-beta.015 Jul 2025pre-release
Nothing published for this version
- 3.0.112 Jul 2025
Release notes
Open source →Tiptap 3.0.0 Stable
This is the stable release for 3.0.0. Since we accidentially released our 3.0.0 last year and had to deprecate it, we're moving forward with 3.0.1 as our initial release for this major cycle.
Since our auto-generated changelog was to big for Github to handle we have to write this manually. Yikes!
@tiptap/core
Major Changes
- Switched to tsup for bundling — UMD builds are no longer supported. If you rely on UMD, you'll need to re-bundle manually.
- Stronger typings for getPos — Now returns
number | undefinedto reflect runtime reality. - Stricter typing for extension configs — Node, Mark, and Extension configs no longer allow arbitrary keys unless you extend their TypeScript interfaces.
- editor.storage is now per-editor instance and strongly typed — No more weird cross-editor bugs.
- clearContent and setContent now emit updates by default — More predictable reactivity.
- insertContent avoids empty paragraphs when inserting at the start of a node.
New Features & Improvements
editor.unmount()— New lifecycle method to detach the editor without destroying it (great for preserving state).- MarkViews — You can now build custom views for marks (similar to NodeViews), including full support for React and Vue 3 components.
- delete event — Detect and react to deleted content from the editor.
- Attribute validation — Use ProseMirror’s validate function on attributes for more reliable schemas.
- SSR mode for editor — You can now use the editor instance on the server without a DOM.
- Only works with certain APIs; DOM-dependent stuff like focus() and getHTML() won't work on the server.
- You can now create extensions using functions, not just plain objects — more flexibility for complex setups.
Fixes & Enhancements
canInsertNodeutility — Check programmatically if a node is allowed at a certain position.- Drag preview fixes — Proper image previews when dragging.
- MarkViews can now update attributes live (updateAttributes added).
- Improved performance — Transactions that don’t change state no longer trigger updates or events.
- Better validation when inserting or accessing positions in the document.
- Various bugfixes, including:
- Multiple plugin unregistration
- Image overwrite when placing one after another
- Cut command RangeException fix
- Content deletion protection for non-editable source editors
@tiptap/react
Major Changes
- Switched to tsup for bundling — UMD builds are no longer supported. If you rely on UMD, you'll need to re-bundle manually.
- Replaced Tippy.js with Floating UI — Affects all menu-related extensions (
FloatingMenu,BubbleMenu,Mention,Suggestion, etc.).- This is a breaking change and requires a manual migration.
tippyOptionshas been removed and replaced with a newoptionsprop.- You must install
@floating-ui/dom@^1.6.0as a peer dependency. - Refer to the docs for updated usage:
New Features & Improvements
- MarkViews — You can now build custom views for marks (similar to NodeViews), including full support for React and Vue 3 components.
- Error thrown in development mode if
immediatelyRenderis missing in SSR mode — Helps catch SSR issues early. - Added support for React 19
refbehavior — Improves compatibility with upcoming React features. - Reintroduced
flushSync— Ensures updates between React and ProseMirror stay in sync.
Fixes & Enhancements
- BubbleMenu positioning fixes — BubbleMenu now correctly tracks table cell selections.
- Ref cleanup — Fixed memory leaks and behavior issues by properly cleaning up
refprops and event listeners. - Allow custom tags for
MarkViewContentviaasprop. - Fixed DOM attachment issues in
NodeViewandMarkView. - Improved MarkView support for live attribute updates (
updateAttributesnow supported). - Various bugfixes, including:
- Global resize handler not unregistered on destroy
- Invalid ref props passed to unsupported components
- Table-related selection bugs
- Rendering issues in SSR mode
@tiptap/vue-3
Major Changes
- Switched to tsup for bundling — UMD builds are no longer supported. If you rely on UMD, you'll need to re-bundle manually.
- Replaced Tippy.js with Floating UI — Affects all menu-related extensions (
FloatingMenu,BubbleMenu,Mention,Suggestion, etc.).- This is a breaking change and requires a manual migration.
tippyOptionshas been removed and replaced with a newoptionsprop.- You must install
@floating-ui/dom@^1.6.0as a peer dependency. - Refer to the docs for updated usage:
New Features & Improvements
- MarkViews — You can now build custom views for marks (similar to NodeViews), including full support for Vue 3 and React components.
- Added support for
updateAttributesin MarkView components — Enables live updates to mark attributes. - Added support for
onShow,onUpdate,onHide, andonDestroyprops in menu components.
Fixes & Enhancements
- BubbleMenu now correctly tracks table cell selections.
- Global resize handler for BubbleMenu is now properly unregistered on destroy.
- Fixed incorrect behavior of
refand event options in menus. - Various dependency updates and syncing with latest core and stable features.
@tiptap/vue-2
Major Changes
- Switched to tsup for bundling — UMD builds are no longer supported. If you rely on UMD, you'll need to re-bundle manually.
- Replaced Tippy.js with Floating UI — Affects all menu-related extensions (
FloatingMenu,BubbleMenu,Mention,Suggestion, etc.).- This is a breaking change and requires a manual migration.
tippyOptionshas been removed and replaced with a newoptionsprop.- You must install
@floating-ui/dom@^1.6.0as a peer dependency. - Refer to the docs for updated usage:
VueNodeViewRenderernow returnsnullforcontentDOMif the node is not a leaf and noNodeViewContentis rendered — Prevents unintended content projection issues.
Fixes & Enhancements
- BubbleMenu now correctly tracks table cell selections.
- Global resize handler for BubbleMenu is now properly unregistered on destroy.
- Fixed incorrect behavior of
refand event options in menus. - Added support for
onShow,onUpdate,onHide, andonDestroyprops in menu components. - Various dependency updates and syncing with latest core and stable features.
@tiptap/extensions
Major Changes
-
Added the new
@tiptap/extensionsmeta package — This package bundles multiple commonly used utility extensions into a single entry point:CharacterCountDropCursorGapCursorUndoRedoPlaceholderTrailingNodeFocusSelection
You can now import them like this:
import { Placeholder, UndoRedo, Focus } from '@tiptap/extensions'Migration examples:
- import Placeholder from '@tiptap/extension-placeholder' + import { Placeholder } from '@tiptap/extensions' - import History from '@tiptap/extension-history' + import { UndoRedo } from '@tiptap/extensions'This change simplifies extension management and encourages lighter bundle sizes by centralizing core utility extensions in one place.
-
Removed selection decorations during drag mode — Prevents visual artifacts when dragging content.
New Features & Improvements
- Skipped rendering node and selection decorations in non-editable editors — Improves performance and avoids unwanted visuals in read-only modes.
Fixes & Enhancements
- Internal updates for better monorepo version pinning and stability.
- Synced with the latest changes and fixes from core and related packages.
Other changes
Since listing all changes here manually would be again to big for Github's editor we would like you to take a look into the package's
CHANGELOG.mdwhere you can find ALL changes made on each version including all pre-releases prior to the official stable release.Also take a look at our upgrade guide where you can find out what changed on all meta packages, how to upgrade to V3, etc.
- The StarterKit extension now includes more extensions by deafult
- The Table, Details and List extensions now include all their sub-packages. The Table and List extensions also export new Kit extensions to quickly register all of them in one go.
What now?
We'll continue working on this release, quickly hotfix the bugs encountered by the community and make 3.0.0 even better. We'll also look into new features like Markdown Support, Migrations and the Decoration API for our upcoming minor releases.
4.0.0 will not be far away - if we do breaking changes in the following weeks you'll see it in the coming weeks/months.
Contribute
Feel free to contribute to Tiptap in form of reporting issues, answering questions, helping with the CI, with tests or taking on Issues on your own. We're super happy for every contribution you make 💕.
- 3.0.014 Jul 2024withdrawn: There are no breaking changes in this packages, we meant to release 2.5.0
Nothing published for this version
- 3.0.0-next.831 Mar 2025pre-release
Release notes
Open source →Releases
@tiptap/[email protected]
Patch Changes
- @tiptap/[email protected]
@tiptap/[email protected]
Patch Changes
- 1e91f9b: Fix prosemirror history build
@tiptap/[email protected]
Patch Changes
- Updated dependencies [1e91f9b]
- @tiptap/[email protected]
- @tiptap/[email protected]
- @tiptap/[email protected]
- @tiptap/[email protected]
- @tiptap/[email protected]
- @tiptap/[email protected]
- @tiptap/[email protected]
- @tiptap/[email protected]
- @tiptap/[email protected]
- @tiptap/[email protected]
- @tiptap/[email protected]
- @tiptap/[email protected]
- @tiptap/[email protected]
- @tiptap/[email protected]
- @tiptap/[email protected]
- @tiptap/[email protected]
- @tiptap/[email protected]
- @tiptap/[email protected]
- @tiptap/[email protected]
- @tiptap/[email protected]
- @tiptap/[email protected]
- @tiptap/[email protected]
- @tiptap/[email protected]
- @tiptap/[email protected]
- Fix broken prosemirror-module build missing history package by @bdbch in https://github.com/ueberdosis/tiptap/pull/6221
- Publish a new pre-release version (next) by @github-actions in https://github.com/ueberdosis/tiptap/pull/6222
Full Changelog: https://github.com/ueberdosis/tiptap/compare/v3.0.0-next.7...v3.0.0-next.8
- 3.0.0-next.728 Mar 2025pre-release
Release notes
Open source →What's Changed
- upgrade prosemirror-tables to 1.6.3 by @bdbch in https://github.com/ueberdosis/tiptap/pull/6073
- Publish a new stable version by @github-actions in https://github.com/ueberdosis/tiptap/pull/6075
- Remove redundant optional chaining in starter kit extension by @arnaugomez in https://github.com/ueberdosis/tiptap/pull/6090
- upgrade prosemirror-tables to 1.6.4 (fixes #6074) by @mr1name in https://github.com/ueberdosis/tiptap/pull/6088
- Fix/enforce-type-imports-so-that-bundler-ignores-types by @arnaugomez in https://github.com/ueberdosis/tiptap/pull/6132
- Rename History extension to UndoRedo by @bdbch in https://github.com/ueberdosis/tiptap/pull/6172
- Rename CollaborationCursor extension to CollaborationCaret by @bdbch in https://github.com/ueberdosis/tiptap/pull/6173
- fix: use null in ordered list's default type value by @embiem in https://github.com/ueberdosis/tiptap/pull/6213
- refactor: export focusEvents plugin key by @jomifepe in https://github.com/ueberdosis/tiptap/pull/6204
- starter kit: add missing dependency by @mimecuvalo in https://github.com/ueberdosis/tiptap/pull/6189
- build(deps): bump cypress-io/github-action from 6.7.8 to 6.7.16 by @dependabot in https://github.com/ueberdosis/tiptap/pull/6183
- build(deps-dev): bump vite from 5.4.11 to 5.4.15 by @dependabot in https://github.com/ueberdosis/tiptap/pull/6208
- build(deps): bump actions/cache from 4.2.0 to 4.2.3 by @dependabot in https://github.com/ueberdosis/tiptap/pull/6201
- build(deps): bump actions/upload-artifact from 4.5.0 to 4.6.2 by @dependabot in https://github.com/ueberdosis/tiptap/pull/6200
- build(deps-dev): bump esbuild from 0.21.5 to 0.25.0 by @dependabot in https://github.com/ueberdosis/tiptap/pull/6095
- Add option to set rel on youtube embed link by @teamclouday in https://github.com/ueberdosis/tiptap/pull/6083
- fix(core): add even more strict types for Nodes, Marks, and Extensions by @nperez0111 in https://github.com/ueberdosis/tiptap/pull/6182
- feat(youtube): enhance embed URL generation to support video lists by @Simon-He95 in https://github.com/ueberdosis/tiptap/pull/6096
- Publish a new stable version by @github-actions in https://github.com/ueberdosis/tiptap/pull/6217
- Publish a new pre-release version (next) by @github-actions in https://github.com/ueberdosis/tiptap/pull/6156
New Contributors
- @mr1name made their first contribution in https://github.com/ueberdosis/tiptap/pull/6088
- @embiem made their first contribution in https://github.com/ueberdosis/tiptap/pull/6213
- @jomifepe made their first contribution in https://github.com/ueberdosis/tiptap/pull/6204
- @mimecuvalo made their first contribution in https://github.com/ueberdosis/tiptap/pull/6189
- @teamclouday made their first contribution in https://github.com/ueberdosis/tiptap/pull/6083
Full Changelog: https://github.com/ueberdosis/tiptap/compare/v3.0.0-next.6...v3.0.0-next.7
Releases
@tiptap/[email protected]
Major Changes
- d8a3d93: Pointed old
extension-historyextension as a fallback extension to the new@tiptap/extensionspackage where the old history extension is now exported from asUndoRedoto clarify what kind of history this extension is implementing.
Patch Changes
- 89bd9c7: Enforce type imports so that the bundler ignores TypeScript type imports when generating the index.js file of the dist directory
@tiptap/[email protected]
Major Changes
- 25ec82e: Renamed
@tiptap/extension-collaboration-cursorto@tiptap/extension-collaboration-caretto clarify what kind of cursor this extension is implementing.
Patch Changes
- 89bd9c7: Enforce type imports so that the bundler ignores TypeScript type imports when generating the index.js file of the dist directory
@tiptap/[email protected]
Minor Changes
- 8de8e13: The editor instance now supports an
unmountmethod 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 thedestroymethod, which will unmount, emit thedestroyevent, and remove all event listeners.
Patch Changes
- 89bd9c7: Enforce type imports so that the bundler ignores TypeScript type imports when generating the index.js file of the dist directory
@tiptap/[email protected]
Patch Changes
- 89bd9c7: Enforce type imports so that the bundler ignores TypeScript type imports when generating the index.js file of the dist directory
@tiptap/[email protected]
Patch Changes
- 89bd9c7: Enforce type imports so that the bundler ignores TypeScript type imports when generating the index.js file of the dist directory
@tiptap/[email protected]
Patch Changes
- 89bd9c7: Enforce type imports so that the bundler ignores TypeScript type imports when generating the index.js file of the dist directory
- Updated dependencies [89bd9c7]
- @tiptap/[email protected]
@tiptap/[email protected]
Patch Changes
- 89bd9c7: Enforce type imports so that the bundler ignores TypeScript type imports when generating the index.js file of the dist directory
@tiptap/[email protected]
Patch Changes
- 89bd9c7: Enforce type imports so that the bundler ignores TypeScript type imports when generating the index.js file of the dist directory
@tiptap/[email protected]
Patch Changes
- 89bd9c7: Enforce type imports so that the bundler ignores TypeScript type imports when generating the index.js file of the dist directory
@tiptap/[email protected]
Patch Changes
- 89bd9c7: Enforce type imports so that the bundler ignores TypeScript type imports when generating the index.js file of the dist directory
@tiptap/[email protected]
Patch Changes
- 89bd9c7: Enforce type imports so that the bundler ignores TypeScript type imports when generating the index.js file of the dist directory
@tiptap/[email protected]
Patch Changes
- 89bd9c7: Enforce type imports so that the bundler ignores TypeScript type imports when generating the index.js file of the dist directory
@tiptap/[email protected]
Patch Changes
- 89bd9c7: Enforce type imports so that the bundler ignores TypeScript type imports when generating the index.js file of the dist directory
@tiptap/[email protected]
Patch Changes
- 89bd9c7: Enforce type imports so that the bundler ignores TypeScript type imports when generating the index.js file of the dist directory
@tiptap/[email protected]
Patch Changes
- 89bd9c7: Enforce type imports so that the bundler ignores TypeScript type imports when generating the index.js file of the dist directory
@tiptap/[email protected]
Patch Changes
- 89bd9c7: Enforce type imports so that the bundler ignores TypeScript type imports when generating the index.js file of the dist directory
@tiptap/[email protected]
Patch Changes
- 89bd9c7: Enforce type imports so that the bundler ignores TypeScript type imports when generating the index.js file of the dist directory
@tiptap/[email protected]
Patch Changes
- 89bd9c7: Enforce type imports so that the bundler ignores TypeScript type imports when generating the index.js file of the dist directory
@tiptap/[email protected]
Patch Changes
- 89bd9c7: Enforce type imports so that the bundler ignores TypeScript type imports when generating the index.js file of the dist directory
@tiptap/[email protected]
Patch Changes
- 89bd9c7: Enforce type imports so that the bundler ignores TypeScript type imports when generating the index.js file of the dist directory
@tiptap/[email protected]
Patch Changes
- 89bd9c7: Enforce type imports so that the bundler ignores TypeScript type imports when generating the index.js file of the dist directory
@tiptap/[email protected]
Patch Changes
- 89bd9c7: Enforce type imports so that the bundler ignores TypeScript type imports when generating the index.js file of the dist directory
@tiptap/[email protected]
Patch Changes
- 89bd9c7: Enforce type imports so that the bundler ignores TypeScript type imports when generating the index.js file of the dist directory
@tiptap/[email protected]
Patch Changes
- 89bd9c7: Enforce type imports so that the bundler ignores TypeScript type imports when generating the index.js file of the dist directory
@tiptap/[email protected]
Patch Changes
- 89bd9c7: Enforce type imports so that the bundler ignores TypeScript type imports when generating the index.js file of the dist directory
@tiptap/[email protected]
Patch Changes
- 89bd9c7: Enforce type imports so that the bundler ignores TypeScript type imports when generating the index.js file of the dist directory
@tiptap/[email protected]
Patch Changes
- 89bd9c7: Enforce type imports so that the bundler ignores TypeScript type imports when generating the index.js file of the dist directory
@tiptap/[email protected]
Patch Changes
- 89bd9c7: Enforce type imports so that the bundler ignores TypeScript type imports when generating the index.js file of the dist directory
@tiptap/[email protected]
Patch Changes
- 89bd9c7: Enforce type imports so that the bundler ignores TypeScript type imports when generating the index.js file of the dist directory
@tiptap/[email protected]
Patch Changes
- 89bd9c7: Enforce type imports so that the bundler ignores TypeScript type imports when generating the index.js file of the dist directory
@tiptap/[email protected]
Patch Changes
- 89bd9c7: Enforce type imports so that the bundler ignores TypeScript type imports when generating the index.js file of the dist directory
@tiptap/[email protected]
Patch Changes
- 89bd9c7: Enforce type imports so that the bundler ignores TypeScript type imports when generating the index.js file of the dist directory
@tiptap/[email protected]
Patch Changes
- 89bd9c7: Enforce type imports so that the bundler ignores TypeScript type imports when generating the index.js file of the dist directory
@tiptap/[email protected]
Patch Changes
- 89bd9c7: Enforce type imports so that the bundler ignores TypeScript type imports when generating the index.js file of the dist directory
@tiptap/[email protected]
Patch Changes
- 89bd9c7: Enforce type imports so that the bundler ignores TypeScript type imports when generating the index.js file of the dist directory
@tiptap/[email protected]
Patch Changes
- 89bd9c7: Enforce type imports so that the bundler ignores TypeScript type imports when generating the index.js file of the dist directory
@tiptap/[email protected]
Patch Changes
- 89bd9c7: Enforce type imports so that the bundler ignores TypeScript type imports when generating the index.js file of the dist directory
@tiptap/[email protected]
Patch Changes
- 89bd9c7: Enforce type imports so that the bundler ignores TypeScript type imports when generating the index.js file of the dist directory
@tiptap/[email protected]
Patch Changes
- 89bd9c7: Enforce type imports so that the bundler ignores TypeScript type imports when generating the index.js file of the dist directory
@tiptap/[email protected]
Patch Changes
- 89bd9c7: Enforce type imports so that the bundler ignores TypeScript type imports when generating the index.js file of the dist directory
@tiptap/[email protected]
Patch Changes
- 89bd9c7: Enforce type imports so that the bundler ignores TypeScript type imports when generating the index.js file of the dist directory
@tiptap/[email protected]
Patch Changes
- 89bd9c7: Enforce type imports so that the bundler ignores TypeScript type imports when generating the index.js file of the dist directory
@tiptap/[email protected]
Patch Changes
- 89bd9c7: Enforce type imports so that the bundler ignores TypeScript type imports when generating the index.js file of the dist directory
@tiptap/[email protected]
Patch Changes
- 89bd9c7: Enforce type imports so that the bundler ignores TypeScript type imports when generating the index.js file of the dist directory
@tiptap/[email protected]
Patch Changes
- 89bd9c7: Enforce type imports so that the bundler ignores TypeScript type imports when generating the index.js file of the dist directory
@tiptap/[email protected]
Patch Changes
- 89bd9c7: Enforce type imports so that the bundler ignores TypeScript type imports when generating the index.js file of the dist directory
@tiptap/[email protected]
Patch Changes
- 89bd9c7: Enforce type imports so that the bundler ignores TypeScript type imports when generating the index.js file of the dist directory
@tiptap/[email protected]
Patch Changes
- 89bd9c7: Enforce type imports so that the bundler ignores TypeScript type imports when generating the index.js file of the dist directory
@tiptap/[email protected]
Patch Changes
- 89bd9c7: Enforce type imports so that the bundler ignores TypeScript type imports when generating the index.js file of the dist directory
@tiptap/[email protected]
Patch Changes
- 89bd9c7: Enforce type imports so that the bundler ignores TypeScript type imports when generating the index.js file of the dist directory
@tiptap/[email protected]
Patch Changes
- 89bd9c7: Enforce type imports so that the bundler ignores TypeScript type imports when generating the index.js file of the dist directory
@tiptap/[email protected]
Patch Changes
- 89bd9c7: Enforce type imports so that the bundler ignores TypeScript type imports when generating the index.js file of the dist directory
@tiptap/[email protected]
Patch Changes
- 89bd9c7: Enforce type imports so that the bundler ignores TypeScript type imports when generating the index.js file of the dist directory
- Updated dependencies [8de8e13]
- Updated dependencies [89bd9c7]
- @tiptap/[email protected]
- @tiptap/[email protected]
- @tiptap/[email protected]
- @tiptap/[email protected]
- @tiptap/[email protected]
- @tiptap/[email protected]
- @tiptap/[email protected]
- @tiptap/[email protected]
- @tiptap/[email protected]
- @tiptap/[email protected]
- @tiptap/[email protected]
- @tiptap/[email protected]
- @tiptap/[email protected]
- @tiptap/[email protected]
- @tiptap/[email protected]
- @tiptap/[email protected]
- @tiptap/[email protected]
- @tiptap/[email protected]
- @tiptap/[email protected]
- @tiptap/[email protected]
- @tiptap/[email protected]
- @tiptap/[email protected]
- @tiptap/[email protected]
- @tiptap/[email protected]
@tiptap/[email protected]
Patch Changes
- 89bd9c7: Enforce type imports so that the bundler ignores TypeScript type imports when generating the index.js file of the dist directory
@tiptap/[email protected]
Patch Changes
- 89bd9c7: Enforce type imports so that the bundler ignores TypeScript type imports when generating the index.js file of the dist directory
@tiptap/[email protected]
Patch Changes
- 89bd9c7: Enforce type imports so that the bundler ignores TypeScript type imports when generating the index.js file of the dist directory
@tiptap/[email protected]
Patch Changes
- 89bd9c7: Enforce type imports so that the bundler ignores TypeScript type imports when generating the index.js file of the dist directory
[email protected]
Patch Changes
- 89bd9c7: Enforce type imports so that the bundler ignores TypeScript type imports when generating the index.js file of the dist directory
[email protected]
Patch Changes
- 89bd9c7: Enforce type imports so that the bundler ignores TypeScript type imports when generating the index.js file of the dist directory
- 3.0.0-next.630 Jan 2025pre-release
Release notes
Open source →What's Changed
- Modify the TextAlign extension documentation so that the default value of the defaultAlignment option matches the code by @arnaugomez in https://github.com/ueberdosis/tiptap/pull/6061
- feat: add a codemod for transforming imports by @nperez0111 in https://github.com/ueberdosis/tiptap/pull/6067
- fix(extension-link): update regex to allow numbers in URI by @timoisik in https://github.com/ueberdosis/tiptap/pull/6068
- Publish a new stable version by @github-actions in https://github.com/ueberdosis/tiptap/pull/6070
- Publish a new pre-release version (next) by @github-actions in https://github.com/ueberdosis/tiptap/pull/6071
New Contributors
- @arnaugomez made their first contribution in https://github.com/ueberdosis/tiptap/pull/6061
- @timoisik made their first contribution in https://github.com/ueberdosis/tiptap/pull/6068
Full Changelog: https://github.com/ueberdosis/tiptap/compare/v3.0.0-next.5...v3.0.0-next.6
- 3.0.0-next.528 Jan 2025pre-release
Release notes
Open source →What's Changed
- Merge develop by @nperez0111 in https://github.com/ueberdosis/tiptap/pull/5873
- Publish a new stable version by @github-actions in https://github.com/ueberdosis/tiptap/pull/5874
- replaced youtube regex with regex found on https://regexr.com/3dj5t, … by @janthurau in https://github.com/ueberdosis/tiptap/pull/4645
- fix(extension-code): support safari versions 16.4 and older by @lino-levan in https://github.com/ueberdosis/tiptap/pull/5916
- Fix/remove empty text style extension by @alexvcasillas in https://github.com/ueberdosis/tiptap/pull/5909
- Fixed Link extension's commands not respecting XSS prevention via unallowed protocols by @bdbch in https://github.com/ueberdosis/tiptap/pull/5945
- Publish a new stable version by @github-actions in https://github.com/ueberdosis/tiptap/pull/5947
- build(deps): bump actions/upload-artifact from 4.4.3 to 4.5.0 by @dependabot in https://github.com/ueberdosis/tiptap/pull/5958
- build(deps): bump nanoid from 3.3.7 to 3.3.8 by @dependabot in https://github.com/ueberdosis/tiptap/pull/5935
- build(deps): bump cypress-io/github-action from 6.7.7 to 6.7.8 by @dependabot in https://github.com/ueberdosis/tiptap/pull/5938
- build(deps): bump actions/cache from 4.1.2 to 4.2.0 by @dependabot in https://github.com/ueberdosis/tiptap/pull/5922
- fix: update linkifyjs to support object-replacement characters by @nperez0111 in https://github.com/ueberdosis/tiptap/pull/5968
- fix(task-item): fix updating checked status by @nicksellen in https://github.com/ueberdosis/tiptap/pull/5953
- feat(core): add
rewriteUnknownContentutility for cleaning JSON by @nperez0111 in https://github.com/ueberdosis/tiptap/pull/5915 - Publish a new pre-release version by @github-actions in https://github.com/ueberdosis/tiptap/pull/5836
- [ISSUE-5815] Add font size extension by @kart-c in https://github.com/ueberdosis/tiptap/pull/5894
- perf(core): if a transaction is a no-op do not attempt to re-apply it #4535 by @nperez0111 in https://github.com/ueberdosis/tiptap/pull/5449
- Update LICENSE.md, fix copyright license year by @JasonnnW3000 in https://github.com/ueberdosis/tiptap/pull/5975
- feat: make text-style non-consuming by @nperez0111 in https://github.com/ueberdosis/tiptap/pull/5979
- fix: handleSelectionUpdate callback is triggered before the renderer is initialized. by @rushillshah in https://github.com/ueberdosis/tiptap/pull/5982
- feat(extension-utils): add a new package, extension-utils by @nperez0111 in https://github.com/ueberdosis/tiptap/pull/5970
- feat(table): make all table packages be in one package, add a new TableKit extension to configure them by @nperez0111 in https://github.com/ueberdosis/tiptap/pull/5469
- build: migrate to pnpm by @nperez0111 in https://github.com/ueberdosis/tiptap/pull/5978
- build: move cypress cache by @nperez0111 in https://github.com/ueberdosis/tiptap/pull/5989
- feat(static-renderer): add
@tiptap/static-rendererto enable static rendering of content by @nperez0111 in https://github.com/ueberdosis/tiptap/pull/5528 - feat(text-style): merge all packages into text-style by @nperez0111 in https://github.com/ueberdosis/tiptap/pull/6001
- refactor(table): re-export the sub-paths, reuse them in old pkgs by @nperez0111 in https://github.com/ueberdosis/tiptap/pull/6002
- feat(html): switch from
zeed-domtohappy-dom-without-nodeby @nperez0111 in https://github.com/ueberdosis/tiptap/pull/5984 - feat: migrate
@tiptap/extension-utils->@tiptap/extensionsby @nperez0111 in https://github.com/ueberdosis/tiptap/pull/6003 - fix: add missing node view props to props type object by @GYHHAHA in https://github.com/ueberdosis/tiptap/pull/6006
- Support
validateoptions in node and mark attribute definitions. by @bobthecow in https://github.com/ueberdosis/tiptap/pull/5991 - fix(extension-link): Fix the issue where a link cannot be pasted when… by @guanriyue in https://github.com/ueberdosis/tiptap/pull/6010
- fix(core): convert class attribute to string by @AndreyChelnokov in https://github.com/ueberdosis/tiptap/pull/6011
- Publish a new pre-release version (next) by @github-actions in https://github.com/ueberdosis/tiptap/pull/5969
- Publish a new pre-release version by @github-actions in https://github.com/ueberdosis/tiptap/pull/5983
- Publish a new pre-release version by @github-actions in https://github.com/ueberdosis/tiptap/pull/6013
- docs: add a custom shortcuts example by @nperez0111 in https://github.com/ueberdosis/tiptap/pull/5981
- test: add tests specifically for React static rendering by @nperez0111 in https://github.com/ueberdosis/tiptap/pull/6029
- perf(react): do some light diffing to not reset options on every render #6024 by @nperez0111 in https://github.com/ueberdosis/tiptap/pull/6031
- fix: Text Formatting Effects Reset After Input Confirmation with Japanese IME on Mobile Browsers (Safari & Chrome) by @agata in https://github.com/ueberdosis/tiptap/pull/6033
- feat(jsx): add
@tiptap/jsxfor more convenient rendering of Tiptap content by @nperez0111 in https://github.com/ueberdosis/tiptap/pull/5558 - feat(on-delete): add a new extension
OnDeletewhich can detect node deletions by @nperez0111 in https://github.com/ueberdosis/tiptap/pull/6022 - feat(core): add support for markviews by @nperez0111 in https://github.com/ueberdosis/tiptap/pull/5759
- fix(core): fix focus issue introduced in v2.11.0 by @cpgruber in https://github.com/ueberdosis/tiptap/pull/6043
- Publish a new pre-release version by @github-actions in https://github.com/ueberdosis/tiptap/pull/6035
- build: move to latest cypress by @nperez0111 in https://github.com/ueberdosis/tiptap/pull/6041
- refactor: extract bubble-menu & floating-menu to own export by @nperez0111 in https://github.com/ueberdosis/tiptap/pull/5993
- refactor(core): update setContent command signature for better defaults by @nperez0111 in https://github.com/ueberdosis/tiptap/pull/6051
- feat(core): introduce new mounting system for SSR by @nperez0111 in https://github.com/ueberdosis/tiptap/pull/6050
- feat(core): the delete event can now detect mark deletions too by @nperez0111 in https://github.com/ueberdosis/tiptap/pull/6047
- feat: update changesets and move more extensions into
@tiptap/extensionsby @nperez0111 in https://github.com/ueberdosis/tiptap/pull/6056 - feat(list): add new
extension-listpackage which packages all the list packages into a single package by @nperez0111 in https://github.com/ueberdosis/tiptap/pull/6048 - feat: move the character-count extension into
@tiptap/extensionsby @nperez0111 in https://github.com/ueberdosis/tiptap/pull/6059 - use @tiptap/y-tiptap instead of y-prosemirror by @bdbch in https://github.com/ueberdosis/tiptap/pull/6064
- feat(core): editor.storage strong typing and separate instances by @nperez0111 in https://github.com/ueberdosis/tiptap/pull/6060
- test: update examples for trailing-node and selection extension by @nperez0111 in https://github.com/ueberdosis/tiptap/pull/6065
- Publish a new pre-release version (next) by @github-actions in https://github.com/ueberdosis/tiptap/pull/6012
New Contributors
- @lino-levan made their first contribution in https://github.com/ueberdosis/tiptap/pull/5916
- @nicksellen made their first contribution in https://github.com/ueberdosis/tiptap/pull/5953
- @JasonnnW3000 made their first contribution in https://github.com/ueberdosis/tiptap/pull/5975
- @rushillshah made their first contribution in https://github.com/ueberdosis/tiptap/pull/5982
- @GYHHAHA made their first contribution in https://github.com/ueberdosis/tiptap/pull/6006
- @bobthecow made their first contribution in https://github.com/ueberdosis/tiptap/pull/5991
- @guanriyue made their first contribution in https://github.com/ueberdosis/tiptap/pull/6010
- @agata made their first contribution in https://github.com/ueberdosis/tiptap/pull/6033
- @cpgruber made their first contribution in https://github.com/ueberdosis/tiptap/pull/6043
Full Changelog: https://github.com/ueberdosis/tiptap/compare/@tiptap/[email protected]
- 3.0.0-next.410 Jan 2025pre-release
Nothing published for this version
- 3.0.0-next.316 Dec 2024pre-release
Nothing published for this version
- 3.0.0-next.216 Dec 2024pre-release
Nothing published for this version
- 3.0.0-next.114 Aug 2024pre-release
Release notes
Open source →What's Changed
- build: use tsup for compilation by @nperez0111 in https://github.com/ueberdosis/tiptap/pull/5455
- feat(starter-kit): enable more extensions in the starter-kit for easier onboarding by @nperez0111 in https://github.com/ueberdosis/tiptap/pull/5466
- Removed tippy.js and replaced it with Floating UI - a newer, more lightweight and customizable floating element library. by @bdbch in https://github.com/ueberdosis/tiptap/pull/5398
Full Changelog: https://github.com/ueberdosis/tiptap/compare/@tiptap/[email protected]
- 3.0.0-next.06 Aug 2024pre-release
Nothing published for this version
- 3.0.0-beta.3011 Jul 2025pre-release
Nothing published for this version
- 3.0.0-beta.2911 Jul 2025pre-release
Nothing published for this version
- 3.0.0-beta.2810 Jul 2025pre-release
Nothing published for this version
- 3.0.0-beta.2710 Jul 2025pre-release
Nothing published for this version
- 3.0.0-beta.269 Jul 2025pre-release
Nothing published for this version
- 3.0.0-beta.258 Jul 2025pre-release
Nothing published for this version
- 3.0.0-beta.246 Jul 2025pre-release
Release notes
Open source →Releases
@tiptap/[email protected]
Minor Changes
- cce6497: Reintroduce flushSync to sync rendering of React and ProseMirror
Patch Changes
- @tiptap/[email protected]
- @tiptap/[email protected]