github ueberdosis/tiptap v3.0.1

latest releases: v3.4.1, v3.4.0, v3.3.1...
one month ago

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 | undefined to 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

  • canInsertNode utility — 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.
    • tippyOptions has been removed and replaced with a new options prop.
    • You must install @floating-ui/dom@^1.6.0 as 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 immediatelyRender is missing in SSR mode — Helps catch SSR issues early.
  • Added support for React 19 ref behavior — 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 ref props and event listeners.
  • Allow custom tags for MarkViewContent via as prop.
  • Fixed DOM attachment issues in NodeView and MarkView.
  • Improved MarkView support for live attribute updates (updateAttributes now 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.
    • tippyOptions has been removed and replaced with a new options prop.
    • You must install @floating-ui/dom@^1.6.0 as 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 updateAttributes in MarkView components — Enables live updates to mark attributes.
  • Added support for onShow, onUpdate, onHide, and onDestroy props 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 ref and 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.
    • tippyOptions has been removed and replaced with a new options prop.
    • You must install @floating-ui/dom@^1.6.0 as a peer dependency.
    • Refer to the docs for updated usage:
  • VueNodeViewRenderer now returns null for contentDOM if the node is not a leaf and no NodeViewContent is 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 ref and event options in menus.
  • Added support for onShow, onUpdate, onHide, and onDestroy props in menu components.
  • Various dependency updates and syncing with latest core and stable features.

@tiptap/extensions

Major Changes

  • Added the new @tiptap/extensions meta package — This package bundles multiple commonly used utility extensions into a single entry point:

    • CharacterCount
    • DropCursor
    • GapCursor
    • UndoRedo
    • Placeholder
    • TrailingNode
    • Focus
    • Selection

    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.md where 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 💕.

Don't miss a new tiptap release

NewReleases is sending notifications on new releases.