npm / @tiptap/extension-image
@tiptap/extension-image
What changed in @tiptap/extension-image 1 to 3, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-27.
8 breaking3 new APIs and options1 behavior and defaults4 fixes and other
See which of these apply to your code, ranked, in your agent:
npx @unstale/cli init@tiptap/extension-image 38 changes
Breaking changes 1
Predefined inline styles were removed from the wrapper element to better support dynamic alignment and eliminate the need for
!importantoverrides in user styles.
New APIs and options 2
ResizableNodeView accepts an optional callback to fully customize resize handles, replacing default handle creation and bypassing built-in positionHandle logic.
Adds an option that adds resize handlers to images, allowing users to resize them via drag and drop or touch.
Behavior and default changes 1
Resize handles are dynamically attached or removed based on the editor’s editable state.
Fixes and other changes 4
Fixes resizable images staying hidden when the image is cached or fails to load.
Fixes resizable images not synchronizing rendered attributes after updates.
The editor DOM now applies configured HTMLAttributes when resize is enabled, consistent with renderHTML.
Dragging an inline or resizable image within the editor moves it instead of inserting a duplicate.
@tiptap/extension-image 21 changes
Breaking changes 1
UMD builds have been removed; update code that depends on them.
@tiptap/extension-image 17 changes
Breaking changes 6
The setting was renamed from
autoFocustoautofocus.Event callbacks receive fewer parameters; the same information should be available through
this..Commands no longer focus the editor automatically; call
focus()explicitly when needed.Custom extensions must be rewritten for the new extension API and registered differently.
The
.state()method was removed; state is available througheditor.state.The setting was removed; required extensions must be imported and registered explicitly.
New APIs and options 1
Commands can now be combined in a chain; call
.run()to execute the commands.