fix(deps): update tiptap to v3.30.0 (main) - #9038
Merged
Merged
Conversation
renovate
Bot
requested review from
max-nextcloud,
mejo- and
silverkszlo
as code owners
August 12, 2026 08:15
Contributor
Author
ℹ️ Artifact update noticeFile name: package-lock.jsonnpm |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
3.29.2→3.30.03.29.2→3.30.03.29.2→3.30.03.29.2→3.30.03.29.2→3.30.03.29.2→3.30.03.29.2→3.30.03.29.2→3.30.03.29.2→3.30.03.29.2→3.30.0^3.29.2→^3.30.03.29.2→3.30.03.29.2→3.30.03.29.2→3.30.03.29.2→3.30.03.29.2→3.30.03.29.2→3.30.03.29.2→3.30.03.29.2→3.30.03.29.2→3.30.03.29.2→3.30.03.29.2→3.30.03.29.2→3.30.03.29.2→3.30.03.29.2→3.30.03.29.2→3.30.03.29.2→3.30.03.29.2→3.30.03.29.2→3.30.03.29.2→3.30.03.29.2→3.30.0^3.29.2→^3.30.0Release Notes
ueberdosis/tiptap (@tiptap/core)
v3.30.0Compare Source
Minor Changes
0247d39:ListKeymapnow registers aTabshortcut that sinks a top-level textblock into the previous list's last item. Pressing Tab at the start of a paragraph right after a bullet/ordered/task list moves the paragraph inside the last list item. The handler does nothing when the cursor is already inside a list item (sinkListItemkeeps working), when there is no list before the paragraph, when the caret is mid-textblock, or when the selection is not a text selection (for example a gap cursor).@tiptap/corealso exposes a newgetPreviousBlockSibling($pos)helper that returns the block-level sibling before the cursor's textblock, or null at the first child of the block parent.3099eef: New Decorations APIFinally the decorations API is here! Even though Decorations itself are nothing new in ProseMirror, the new API makes it much easier to use them in Tiptap without leaving your extensions.
Decorations change how the document looks without changing the document itself. Highlighting search results, marking spelling mistakes, showing collaborator cursors, putting a drag handle next to every block.
Until now you had to write a ProseMirror plugin by hand for this, keep the decoration set in plugin state, and map it forward on every transaction. Extensions can now declare decorations directly with a new
addDecorations()hook.There are three kinds.
Decoration.Inline()styles a range of text.Decoration.Node()puts attributes on a block's DOM element.Decoration.Widget()renders your own element at a single position.Every extension that declares decorations is collected into one plugin, so several extensions can decorate the same document without fighting over it.
Doing less work on every keystroke
By default decorations are rebuilt whenever the document changes. That is fine for small documents and wasteful for large ones, so there are two ways to narrow it down.
shouldUpdate()skips transactions you do not care about. If your decorations only depend on headings, ignore everything else.update: 'changedRanges'together withcreateInRange()only rescans the blocks that actually changed. On a long document this is the difference between scanning the whole thing on every keystroke and scanning one paragraph.For decorations driven by data outside the editor, like comments loaded from a server, use
update: 'manual'and refresh them yourself witheditor.commands.updateDecorations().React and Vue components as widgets
ReactWidgetRendererandVueWidgetRendererrender a real component into a widget decoration, inside your existing app context. Providers, context and stores work as usual.Widgets take a
key. Reuse the same key and the component instance stays mounted while the document changes around it, so local state such as an open menu, a counter or a half-typed input survives editing. Use a stable id from your own data, not a position or a list index, otherwise the component remounts and loses that state.Widgets also accept the ProseMirror options
side,relaxedSide,stopEventandignoreSelection.Documentation
Patch Changes
51909d3: FixedinsertContent,insertContentAtandsetContentfailing when prosemirror-model is loaded more than once.58a8953]ueberdosis/tiptap (@tiptap/extension-blockquote)
v3.30.0Compare Source
Patch Changes
4ec64c7: Fixed Backspace freezing after merging a paragraph into a blockquote.0247d39]58a8953]51909d3]3099eef]ueberdosis/tiptap (@tiptap/extension-bold)
v3.30.0Compare Source
Patch Changes
0247d39]51909d3]3099eef]ueberdosis/tiptap (@tiptap/extension-code)
v3.30.0Compare Source
Patch Changes
0247d39]51909d3]3099eef]ueberdosis/tiptap (@tiptap/extension-code-block)
v3.30.0Compare Source
Patch Changes
0247d39]58a8953]51909d3]3099eef]ueberdosis/tiptap (@tiptap/extension-code-block-lowlight)
v3.30.0Compare Source
Patch Changes
0247d39]58a8953]51909d3]3099eef]ueberdosis/tiptap (@tiptap/extension-collaboration)
v3.30.0Compare Source
Patch Changes
0247d39]58a8953]51909d3]3099eef]ueberdosis/tiptap (@tiptap/extension-collaboration-caret)
v3.30.0Compare Source
Patch Changes
0247d39]58a8953]51909d3]3099eef]ueberdosis/tiptap (@tiptap/extension-document)
v3.30.0Compare Source
Patch Changes
0247d39]51909d3]3099eef]ueberdosis/tiptap (@tiptap/extension-drag-handle)
v3.30.0Compare Source
Patch Changes
0247d39]58a8953]51909d3]3099eef]ueberdosis/tiptap (@tiptap/extension-drag-handle-vue-3)
v3.30.0Compare Source
Patch Changes
58a8953]3099eef]ueberdosis/tiptap (@tiptap/extension-hard-break)
v3.30.0Compare Source
Patch Changes
0247d39]51909d3]3099eef]ueberdosis/tiptap (@tiptap/extension-heading)
v3.30.0Compare Source
Patch Changes
0247d39]51909d3]3099eef]ueberdosis/tiptap (@tiptap/extension-highlight)
v3.30.0Compare Source
Patch Changes
0247d39]51909d3]3099eef]ueberdosis/tiptap (@tiptap/extension-horizontal-rule)
v3.30.0Compare Source
Patch Changes
0247d39]58a8953]51909d3]3099eef]ueberdosis/tiptap (@tiptap/extension-image)
v3.30.0Compare Source
Patch Changes
0247d39]51909d3]3099eef]ueberdosis/tiptap (@tiptap/extension-italic)
v3.30.0Compare Source
Patch Changes
0247d39]51909d3]3099eef]ueberdosis/tiptap (@tiptap/extension-link)
v3.30.0Compare Source
Patch Changes
0247d39]58a8953]51909d3]3099eef]ueberdosis/tiptap (@tiptap/extension-list)
v3.30.0Compare Source
Minor Changes
0247d39:ListKeymapnow registers aTabshortcut that sinks a top-level textblock into the previous list's last item. Pressing Tab at the start of a paragraph right after a bullet/ordered/task list moves the paragraph inside the last list item. The handler does nothing when the cursor is already inside a list item (sinkListItemkeeps working), when there is no list before the paragraph, when the caret is mid-textblock, or when the selection is not a text selection (for example a gap cursor).@tiptap/corealso exposes a newgetPreviousBlockSibling($pos)helper that returns the block-level sibling before the cursor's textblock, or null at the first child of the block parent.Patch Changes
c296281: Parse block math that follows an ordered list item without a blank line, both after the list and indented inside the item, instead of pulling it into the item's text.ceb0dac: TaskItem: the checkbox label now also fills the wrapping label element, so accessibility audits no longer flag it as empty.0247d39]58a8953]51909d3]3099eef]ueberdosis/tiptap (@tiptap/extension-mathematics)
v3.30.0Compare Source
Patch Changes
a2ed988: Allow KaTeX 0.18 to be installed with the math extension0247d39]58a8953]51909d3]3099eef]ueberdosis/tiptap (@tiptap/extension-mention)
v3.30.0Compare Source
Patch Changes
0247d39]58a8953]51909d3]3099eef]ueberdosis/tiptap (@tiptap/extension-paragraph)
v3.30.0Compare Source
Patch Changes
0247d39]51909d3]3099eef]ueberdosis/tiptap (@tiptap/extension-placeholder)
v3.30.0Compare Source
Patch Changes
ueberdosis/tiptap (@tiptap/extension-strike)
v3.30.0Compare Source
Patch Changes
0247d39]51909d3]3099eef]ueberdosis/tiptap (@tiptap/extension-table)
v3.30.0Compare Source
Patch Changes
eded5e4: Deleting the last row or column of a table no longer moves the cursor outside the table when there is content below it.0247d39]58a8953]51909d3]3099eef]ueberdosis/tiptap (@tiptap/extension-text)
v3.30.0Compare Source
Patch Changes
0247d39]51909d3]3099eef]ueberdosis/tiptap (@tiptap/extension-typography)
v3.30.0Compare Source
Patch Changes
0247d39]51909d3]3099eef]ueberdosis/tiptap (@tiptap/extension-underline)
v3.30.0Compare Source
Patch Changes
0247d39]51909d3]3099eef]ueberdosis/tiptap (@tiptap/extensions)
v3.30.0Compare Source
@tiptap/vue-2
Minor Changes
ceb0dac: New Decorations APIFinally the decorations API is here! Even though Decorations itself are nothing new in ProseMirror, the new API makes it much easier to use them in Tiptap without leaving your extensions.
Decorations change how the document looks without changing the document itself. Highlighting search results, marking spelling mistakes, showing collaborator cursors, putting a drag handle next to every block.
Until now you had to write a ProseMirror plugin by hand for this, keep the decoration set in plugin state, and map it forward on every transaction. Extensions can now declare decorations directly with a new
addDecorations()hook.There are three kinds.
Decoration.Inline()styles a range of text.Decoration.Node()puts attributes on a block's DOM element.Decoration.Widget()renders your own element at a single position.Every extension that declares decorations is collected into one plugin, so several extensions can decorate the same document without fighting over it.
Doing less work on every keystroke
By default decorations are rebuilt whenever the document changes. That is fine for small documents and wasteful for large ones, so there are two ways to narrow it down.
shouldUpdate()skips transactions you do not care about. If your decorations only depend on headings, ignore everything else.update: 'changedRanges'together withcreateInRange()only rescans the blocks that actually changed. On a long document this is the difference between scanning the whole thing on every keystroke and scanning one paragraph.For decorations driven by data outside the editor, like comments loaded from a server, use
update: 'manual'and refresh them yourself witheditor.commands.updateDecorations().React and Vue components as widgets
ReactWidgetRendererandVueWidgetRendererrender a real component into a widget decoration, inside your existing app context. Providers, context and stores work as usual.Widgets take a
key. Reuse the same key and the component instance stays mounted while the document changes around it, so local state such as an open menu, a counter or a half-typed input survives editing. Use a stable id from your own data, not a position or a list index, otherwise the component remounts and loses that state.Widgets also accept the ProseMirror options
side,relaxedSide,stopEventandignoreSelection.Documentation
Patch Changes
ceb0dac: Fix FloatingMenu not registering when the editor prop is provided synchronously, which prevented the menu from appearingceb0dac]ceb0dac]ceb0dac]ceb0dac]@tiptap/extension-list
Minor Changes
ceb0dac:ListKeymapnow registers aTabshortcut that sinks a top-level textblock into the previous list's last item. Pressing Tab at the start of a paragraph right after a bullet/ordered/task list moves the paragraph inside the last list item. The handler does nothing when the cursor is already inside a list item (sinkListItemkeeps working), when there is no list before the paragraph, when the caret is mid-textblock, or when the selection is not a text selection (for example a gap cursor).@tiptap/corealso exposes a newgetPreviousBlockSibling($pos)helper that returns the block-level sibling before the cursor's textblock, or null at the first child of the block parent.Patch Changes
ceb0dac: Parse block math that follows an ordered list item without a blank line, both after the list and indented inside the item, instead of pulling it into the item's text.ceb0dac: TaskItem: the checkbox label now also fills the wrapping label element, so accessibility audits no longer flag it as empty.ceb0dac]ceb0dac]ceb0dac]ceb0dac]@tiptap/core
Minor Changes
ceb0dac:ListKeymapnow registers aTabshortcut that sinks a top-level textblock into the previous list's last item. Pressing Tab at the start of a paragraph right after a bullet/ordered/task list moves the paragraph inside the last list item. The handler does nothing when the cursor is already inside a list item (sinkListItemkeeps working), when there is no list before the paragraph, when the caret is mid-textblock, or when the selection is not a text selection (for example a gap cursor).@tiptap/corealso exposes a newgetPreviousBlockSibling($pos)helper that returns the block-level sibling before the cursor's textblock, or null at the first child of the block parent.ceb0dac: New Decorations APIFinally the decorations API is here! Even though Decorations itself are nothing new in ProseMirror, the new API makes it much easier to use them in Tiptap without leaving your extensions.
Decorations change how the document looks without changing the document itself. Highlighting search results, marking spelling mistakes, showing collaborator cursors, putting a drag handle next to every block.
Until now you had to write a ProseMirror plugin by hand for this, keep the decoration set in plugin state, and map it forward on every transaction. Extensions can now declare decorations directly with a new
addDecorations()hook.There are three kinds.
Decoration.Inline()styles a range of text.Decoration.Node()puts attributes on a block's DOM element.Decoration.Widget()renders your own element at a single position.Every extension that declares decorations is collected into one plugin, so several extensions can decorate the same document without fighting over it.
Doing less work on every keystroke
By default decorations are rebuilt whenever the document changes. That is fine for small documents and wasteful for large ones, so there are two ways to narrow it down.
shouldUpdate()skips transactions you do not care about. If your decorations only depend on headings, ignore everything else.update: 'changedRanges'together withcreateInRange()only rescans the blocks that actually changed. On a long document this is the difference between scanning the whole thing on every keystroke and scanning one paragraph.For decorations driven by data outside the editor, like comments loaded from a server, use
update: 'manual'and refresh them yourself witheditor.commands.updateDecorations().React and Vue components as widgets
ReactWidgetRendererandVueWidgetRendererrender a real component into a widget decoration, inside your existing app context. Providers, context and stores work as usual.Widgets take a
key. Reuse the same key and the component instance stays mounted while the document changes around it, so local state such as an open menu, a counter or a half-typed input survives editing. Use a stable id from your own data, not a position or a list index, otherwise the component remounts and loses that state.Widgets also accept the ProseMirror options
side,relaxedSide,stopEventandignoreSelection.Documentation
Patch Changes
ceb0dac: FixedinsertContent,insertContentAtandsetContentfailing when prosemirror-model is loaded more than once.ceb0dac]@tiptap/starter-kit
Patch Changes
ceb0dac: StarterKit now pins its bundled@tiptap/*dependencies to the exact version it was released with, so installing a specific StarterKit version gives you that version's extension set instead of the newest one.ceb0dac]ceb0dac]ceb0dac]ceb0dac]ceb0dac]ceb0dac]ceb0dac]Configuration
📅 Schedule: (in timezone Europe/Berlin)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about these updates again.
This PR was generated by Mend Renovate. View the repository job log.