chore(deps): update tiptap monorepo to v3.30.0 - #434
Open
renovate[bot] wants to merge 1 commit into
Open
Conversation
sharevb
force-pushed
the
chore/all-my-stuffs
branch
3 times, most recently
from
July 11, 2026 15:17
1cc77eb to
02df0f3
Compare
renovate
Bot
force-pushed
the
renovate/tiptap-monorepo
branch
from
July 12, 2026 11:38
e2db253 to
d59b4eb
Compare
sharevb
force-pushed
the
chore/all-my-stuffs
branch
2 times, most recently
from
July 12, 2026 14:58
41fa755 to
0620f57
Compare
renovate
Bot
force-pushed
the
renovate/tiptap-monorepo
branch
from
July 12, 2026 16:18
d59b4eb to
791a779
Compare
sharevb
force-pushed
the
chore/all-my-stuffs
branch
from
July 12, 2026 19:04
e7d0ce8 to
41464cf
Compare
renovate
Bot
force-pushed
the
renovate/tiptap-monorepo
branch
from
July 12, 2026 19:08
791a779 to
a57009c
Compare
sharevb
force-pushed
the
chore/all-my-stuffs
branch
from
July 12, 2026 21:05
138e700 to
c6447be
Compare
renovate
Bot
force-pushed
the
renovate/tiptap-monorepo
branch
from
July 12, 2026 21:07
a57009c to
0bfa662
Compare
sharevb
force-pushed
the
chore/all-my-stuffs
branch
from
July 12, 2026 21:11
c6447be to
23dc0d4
Compare
renovate
Bot
force-pushed
the
renovate/tiptap-monorepo
branch
2 times, most recently
from
July 13, 2026 20:43
d2a26c6 to
b95cdbe
Compare
sharevb
force-pushed
the
chore/all-my-stuffs
branch
from
July 13, 2026 21:16
74a0eb2 to
96a2079
Compare
renovate
Bot
force-pushed
the
renovate/tiptap-monorepo
branch
from
July 16, 2026 01:01
b95cdbe to
41323a2
Compare
sharevb
force-pushed
the
chore/all-my-stuffs
branch
from
July 16, 2026 06:49
18f53d0 to
44f13a5
Compare
renovate
Bot
force-pushed
the
renovate/tiptap-monorepo
branch
from
July 16, 2026 15:03
41323a2 to
1283440
Compare
sharevb
force-pushed
the
chore/all-my-stuffs
branch
2 times, most recently
from
July 19, 2026 19:02
6a1819c to
65955d9
Compare
renovate
Bot
force-pushed
the
renovate/tiptap-monorepo
branch
3 times, most recently
from
July 24, 2026 15:04
89ec136 to
aeaee00
Compare
renovate
Bot
force-pushed
the
renovate/tiptap-monorepo
branch
from
July 27, 2026 14:30
aeaee00 to
e3f2edb
Compare
renovate
Bot
force-pushed
the
renovate/tiptap-monorepo
branch
from
July 27, 2026 19:50
e3f2edb to
178b660
Compare
renovate
Bot
force-pushed
the
renovate/tiptap-monorepo
branch
from
August 8, 2026 19:09
178b660 to
f40450c
Compare
renovate
Bot
force-pushed
the
renovate/tiptap-monorepo
branch
from
August 11, 2026 11:07
f40450c to
5d0f897
Compare
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.27.1→3.30.03.27.1→3.30.03.27.1→3.30.03.27.1→3.30.03.27.1→3.30.03.27.1→3.30.03.27.1→3.30.03.27.1→3.30.03.27.1→3.30.03.27.1→3.30.03.27.1→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]v3.29.2Compare Source
Patch Changes
v3.29.1Compare Source
Patch Changes
v3.29.0Compare Source
Patch Changes
d26840f: Fix a TypeScript build error inisAndroid()where comparingnavigator.platformagainst the literal'Android'with===could fail to compile under somelib.dom.d.tstypings ("types have no overlap"). Switched to the same.includes()pattern already used byisiOS(), which is not affected by this TypeScript narrowing issue. No runtime behavior change.935e63f: Fixed a bug where deleting anAllSelection(for example right after Ctrl/Cmd+A) left a lingering "phantom" selection highlight over the emptied document instead of a text cursor.deleteSelectionnow collapses the selection to a cursor.b4c5a2d: Fix input rules crashing when the matched text spans an inline atom node like a mention.a963d48: Node viewgetPos()now returnsundefinedinstead of throwing when the position cannot be resolved yet, for example when React 19 renders a node view component while the editor view is still updating.51f45b6: FixedonContentErrorthrowing when callingeditor.commandsfrom inside the handler on initial load with invalid content. The editor now has a usable state (seeded from the stripped fallback document) beforeonContentErrorfires.0f63969: Fixeditor.$pos()returning the wrong node inside container nodes, for example the list item instead of the list.9acaa65: AddinsertDefaultBlockto insert the default textblock allowed at a position. It accepts an optional position, attributes, content, and selection-update option.e150ee0]v3.28.0Compare Source
Patch Changes
v3.27.4Compare Source
Patch Changes
v3.27.3Compare Source
Patch Changes
023f98c: FixdeleteSelectionto delete content across all selection ranges instead of only the first range. This restores multi-cell table selections and other custom selections with multiple ranges.v3.27.2Compare Source
Patch Changes
ceebb31]ueberdosis/tiptap (@tiptap/extension-color)
v3.30.0Compare Source
Patch Changes
v3.29.2Compare Source
Patch Changes
v3.29.1Compare Source
Patch Changes
v3.29.0Compare Source
Patch Changes
v3.28.0Compare Source
Patch Changes
v3.27.4Compare Source
Patch Changes
v3.27.3Compare Source
Patch Changes
v3.27.2Compare Source
Patch Changes
ueberdosis/tiptap (@tiptap/extension-gapcursor)
v3.30.0Compare Source
Patch Changes
v3.29.2Compare Source
Patch Changes
v3.29.1Compare Source
Patch Changes
v3.29.0Compare Source
Patch Changes
v3.28.0Compare Source
Patch Changes
v3.27.4Compare Source
Patch Changes
d2983cd]v3.27.3Compare Source
Patch Changes
76a76da]v3.27.2Compare Source
Patch Changes
ueberdosis/tiptap (@tiptap/extension-highlight)
v3.30.0Compare Source
Patch Changes
0247d39]51909d3]3099eef]v3.29.2Compare Source
Patch Changes
v3.29.1Compare Source
Patch Changes
v3.29.0Compare Source
Patch Changes
d26840f]935e63f]b4c5a2d]a963d48]51f45b6]0f63969]9acaa65]v3.28.0Compare Source
Patch Changes
v3.27.4Compare Source
@tiptap/extensions
Patch Changes
0fde1e8: Fixed theSelectionextension leaving the native browser selection visible on blur, where it overlapped the selection decoration. The native selection is now cleared on blur and restored on focus.@tiptap/extension-blockquote
Patch Changes
0fde1e8: Fix a crash when pressing backspace at the very start of the document with a leading image. The blockquote backspace handler dereferenced an undefined parent at the top (doc) level, throwingTypeError: Cannot read properties of undefined (reading 'type'). It now bails out so backspace is a no-op at the document start.0fde1e8: Add@tiptap/pmas a peer dependency so bundlers resolve ProseMirror packages from the app instead of duplicatingprosemirror-modelinside@tiptap/extension-blockquote.@tiptap/extension-table
Patch Changes
0fde1e8: Fix<col width>in a table's<colgroup>being ignored when parsing HTML. The width of the first column was always dropped because the cell index0failed a truthiness check, and header cells (<th>) never read the colgroup at all. Both table cells and table headers now fall back to the matching<col>element'swidthattribute when they have nocolwidthattribute of their own.0fde1e8: Fix pipe characters inside backtick inline code spans being incorrectly treated as table column delimiters in both leading-pipe and pipeless (no leading|) GFM tables. Cells containing expressions like`||`or`a || b`now parse correctly instead of splitting into extra columns and losing their code formatting.@tiptap/extension-list
Patch Changes
0fde1e8: Fix a markdown parsing bug where a plain bullet (- item) nested under a task-list parent (- [ ]) was silently dropped from the parsed document. The task-list tokenizer's nested parser stopped at the first non-checkbox line and discarded everything after it; that remainder is now lexed and kept as sibling blocks (a bullet list or paragraph inside the parent task item), matching how mixed lists already behave at the top level.@tiptap/react
Patch Changes
0fde1e8: Add ause clientdirective so@tiptap/reactcan be imported from React Server Components without crashing. Core symbols re-exported through@tiptap/reactnow cross the client boundary too, so import them from@tiptap/coredirectly in server code.v3.27.3Compare Source
Patch Changes
023f98c]v3.27.2Compare Source
Patch Changes
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]v3.29.2Compare Source
Patch Changes
v3.29.1Compare Source
Patch Changes
v3.29.0Compare Source
Patch Changes
093573a: Fix inserting a table with an empty cell or header (e.g. viainsertContent/insertContentAt) throwingRangeError: Invalid content for node tableCell/tableHeader: <>. Empty<td>/<th>elements are now backfilled with the cell's default block content, matching the behavior you already get fromsetContent.8649f2f: Keep line breaks inside table cells when serializing to markdown. Hard breaks and paragraph breaks in a cell are now written as<br>instead of being collapsed into a space, so they survive a parse/serialize round trip.d26840f]e150ee0]935e63f]b4c5a2d]a963d48]51f45b6]0f63969]9acaa65]v3.28.0Compare Source
Patch Changes
v3.27.4Compare Source
Patch Changes
246e1e8: Fix<col width>in a table's<colgroup>being ignored when parsing HTML. The width of the first column was always dropped because the cell index0failed a truthiness check, and header cells (<th>) never read the colgroup at all. Both table cells and table headers now fall back to the matching<col>element'swidthattribute when they have nocolwidthattribute of their own.edaac47: Fix pipe characters inside backtick inline code spans being incorrectly treated as table column delimiters in both leading-pipe and pipeless (no leading|) GFM tables. Cells containing expressions like`||`or`a || b`now parse correctly instead of splitting into extra columns and losing their code formatting.v3.27.3Compare Source
Patch Changes
023f98c]v3.27.2Compare Source
Patch Changes
ceebb31]ueberdosis/tiptap (@tiptap/extension-text-align)
v3.30.0Compare Source
Patch Changes
0247d39]51909d3]3099eef]v3.29.2Compare Source
Patch Changes
v3.29.1Compare Source
Patch Changes
v3.29.0Compare Source
Patch Changes
d26840f]935e63f]b4c5a2d]a963d48]51f45b6]0f63969]9acaa65]v3.28.0Compare Source
Patch Changes
v3.27.4Compare Source
@tiptap/extensions
Patch Changes
0fde1e8: Fixed theSelectionextension leaving the native browser selection visible on blur, where it overlapped the selection decoration. The native selection is now cleared on blur and restored on focus.@tiptap/extension-blockquote
Patch Changes
0fde1e8: Fix a crash when pressing backspace at the very start of the document with a leading image. The blockquote backspace handler dereferenced an undefined parent at the top (doc) level, throwingTypeError: Cannot read properties of undefined (reading 'type'). It now bails out so backspace is a no-op at the document start.0fde1e8: Add@tiptap/pmas a peer dependency so bundlers resolve ProseMirror packages from the app instead of duplicatingprosemirror-modelinside@tiptap/extension-blockquote.@tiptap/extension-table
Patch Changes
0fde1e8: Fix<col width>in a table's<colgroup>being ignored when parsing HTML. The width of the first column was always dropped because the cell index0failed a truthiness check, and header cells (<th>) never read the colgroup at all. Both table cells and table headers now fall back to the matching<col>element'swidthattribute when they have nocolwidthattribute of their own.0fde1e8: Fix pipe characters inside backtick inline code spans being incorrectly treated as table column delimiters in both leading-pipe and pipeless (no leading|) GFM tables. Cells containing expressions like`||`or`a || b`now parse correctly instead of splitting into extra columns and losing their code formatting.@tiptap/extension-list
Patch Changes
0fde1e8: Fix a markdown parsing bug where a plain bullet (- item) nested under a task-list parent (- [ ]) was silently dropped from the parsed document. The task-list tokenizer's nested parser stopped at the first non-checkbox line and discarded everything after it; that remainder is now lexed and kept as sibling blocks (a bullet list or paragraph inside the parent task item), matching how mixed lists already behave at the top level.@tiptap/react
Patch Changes
0fde1e8: Add ause clientdirective so@tiptap/reactcan be imported from React Server Components without crashing. Core symbols re-exported through@tiptap/reactnow cross the client boundary too, so import them from@tiptap/coredirectly in server code.v3.27.3Compare Source
Patch Changes
023f98c]v3.27.2Compare Source
Patch Changes
ueberdosis/tiptap (@tiptap/extension-text-style)
v3.30.0Compare Source
Patch Changes
0247d39]51909d3]3099eef]v3.29.2Compare Source
Patch Changes
v3.29.1Compare Source
Patch Changes
v3.29.0Compare Source
Patch Changes
d26840f]935e63f]b4c5a2d]a963d48]51f45b6]0f63969]9acaa65]v3.28.0Compare Source
Patch Changes
v3.27.4Compare Source
Patch Changes
v3.27.3Compare Source
Patch Changes
023f98c]v3.27.2Compare Source
Patch Changes
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/Paris)
* 0-3 * * *)* 0-3 * * *)🚦 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.