@tiptap/extension-ruby-text
Minor Changes
- Add official RubyText extension for HTML ruby text annotations with non-editable annotations and mark-based document storage. The click-to-edit annotation editor can be replaced with a custom element via the
renderAnnotationEditoroption.
@tiptap/core
Patch Changes
- Fix a TypeScript build error in
isAndroid()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. - Fixed a bug where deleting an
AllSelection(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. - Fix input rules crashing when the matched text spans an inline atom node like a mention.
- Node view
getPos()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. - Fixed
onContentErrorthrowing 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. - Fix
editor.$pos()returning the wrong node inside container nodes, for example the list item instead of the list. - Add
insertDefaultBlockto insert the default textblock allowed at a position. It accepts an optional position, attributes, content, and selection-update option. - Updated dependencies [e9942fc]
- @tiptap/pm@3.29.0
@tiptap/extension-find-and-replace
Minor Changes
- Added a new
@tiptap/extension-find-and-replaceextension. It searches the document for a term, highlights all matches with decorations, and replaces the current or all matches. Supports case-sensitive, whole-word, and RE2-compatible regex search, plus commands to jump between results. Regex search avoids catastrophic backtracking but does not support lookarounds or backreferences.
@tiptap/pm
Patch Changes
- Bump
prosemirror-modelto^1.25.11, fixing pasting content copied from the editor inserting extra empty paragraphs (a regression introduced inprosemirror-view1.42.0).
@tiptap/extension-hard-break
Patch Changes
- Fixed a bug where inserted hard breaks would not scroll the view on insertion via commands.
@tiptap/extension-code-block
Patch Changes
- Fixed a bug where pressing
ArrowUpin a code block that is the first node in the document did nothing, leaving no way to insert content above it. A new default block is now inserted above the code block, mirroring the existingArrowDownbehavior. The behavior can be disabled via the newexitOnArrowUpoption.
@tiptap/extension-table
Patch Changes
- Fix inserting a table with an empty cell or header (e.g. via
insertContent/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. - 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.
@tiptap/markdown
Patch Changes
- Fixed blank lines being dropped after block elements (headings, tables, etc.) when parsing markdown. Blank lines were being absorbed into the block token instead of being preserved, causing content to lose a blank line on each parse/serialize cycle.
@tiptap/react
Patch Changes
- Fixed
useEditorStatenot re-rendering components wheneditor.setEditable()changes the editor's editable state, since that call only emits anupdateevent and never atransaction.
@tiptap/vue-3
Patch Changes
- Fix
<node-view-content as="tbody">(and similar restricted-content elements) rendering with an extra wrapper<div>nested inside them, which broke tables in Vue node views. Note: keep<node-view-content>mounted (usev-show, notv-if) — conditionally remounting it can leave ProseMirror attached to the old element.
@tiptap/extension-image
Patch Changes
- Fix resizable images not synchronizing rendered attributes after updates
@tiptap/static-renderer
Patch Changes
- Fix Markdown table serialization for merged cells by preserving the correct column layout for rowspan and colspan.
@tiptap/extension-link
Minor Changes
- Typing or pasting Markdown link syntax like
[Tiptap](https://tiptap.dev)or[Tiptap](https://tiptap.dev "Rich text editor")can now automatically be converted into a link. The behavior is opt-in, enable it with the newmarkdownLinksoption.