Tiptap

These example posts were automatically generated by PersonaBox from GitHub pull requests.

Want posts like this?

Turn your GitHub PRs into polished product updates.

Powered by PersonaBox

Declarative <Tiptap /> component for React integration#

Declarative <Tiptap /> component for React integration

New declarative <Tiptap /> component for React. Compose your editor setup with <Tiptap.Content />, <Tiptap.BubbleMenu />, <Tiptap.FloatingMenu />, and <Tiptap.Loading /> as subcomponents. Child components can access the editor instance via the new useTiptap() hook and subscribe to state with useTiptapState(). The existing imperative API remains fully supported for this major version.

MappablePosition for tracking positions across transactions#

MappablePosition for tracking positions across transactions

New: MappablePosition for position mapping across transactions. Use editor.utils.createMappablePosition() + editor.utils.getUpdatedPosition(position, transaction). Collaboration extends it with Y.js relative positions and JSON serialization (toJSON()/fromJSON()).

Native RTL/LTR text direction support#

Native RTL/LTR text direction support

Native text direction support for RTL and bidirectional content. Set direction globally with the textDirection editor option ('ltr', 'rtl', or 'auto'), or apply to specific nodes using the new setTextDirection() and unsetTextDirection() commands. Enabled by default.

Drag Handle: `data-dragging` attribute for drag state#

Drag Handle: `data-dragging` attribute for drag state

Drag Handle now exposes data-dragging on the handle element (false by default, true during drag). Use it to style active drag state with CSS selectors like [data-dragging="true"] or gate handlers/tests. Available across React, Vue 2, and Vue 3.

Custom resize handles via `createCustomHandle`#

Custom resize handles via `createCustomHandle`

ResizableNodeView now supports createCustomHandle(direction) so you can render fully custom resize handles (markup + styling + positioning). Wrapper inline styles were removed, and handles now attach/remove automatically based on editor.isEditable.

New `dispatchTransaction` hook for transaction middleware#

New `dispatchTransaction` hook for transaction middleware

Added dispatchTransaction hook to extensions. Build middleware that intercepts transactions before they apply to editor state. Validate content, rewrite URLs, or block changes entirely. Supports priority-based composition and works alongside custom dispatchers.

FloatingMenu: programmatic position updates for scroll and resize#

FloatingMenu: programmatic position updates for scroll and resize

Add programmatic position updates to FloatingMenu. Trigger repositioning via updateFloatingMenuPosition() command or transaction metadata. New options: scrollTarget for custom scroll containers, updateDelay and resizeDelay for performance tuning. React and Vue supported.