NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #2590 most downloaded on npm
ProseMirror's view component
Last release 9 days ago
25 Sep 2026
Ships fairly regularly
a new release about every 3 weeks
Nearly every release is documented
notes for 59 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
10 years old
310 releases · first in 2016
Work around an issue in Firefox where horizontal cursor motion would refuse to stop between an inline atom node and the start of a line.
Work around an issue in Firefox where horizontal cursor motion would refuse to stop between an inline atom node and the start of a line.
On Safari and Firefox, work around skipped cursor positions and odd cursor drawing by putting a dummy node in front of atomic inline nodes when they appear at the start of the block or right after another atom.
Fix an issue where posAtDOM would incorrectly return a position before a node when querying a DOM position outside of its content element but inside of a wrapping element.
Work around a Firefox bug that causes content wrapped in a scrollable element to be skipped over in keyboard cursor motion.
Improve performance of non-DOM-connected editors by avoiding DOM selection queries.
Fix an issue where some kinds of deletions on Chrome Android were interpreted as Enter presses.
Fix an issue where some kinds of deletions on Chrome Android were interpreted as Enter presses.
Fix a regression where some types of Enter presses on Android would not go through the Enter key handling.
One column per quarter.
Prevent uneditable elements rendered as part of node or mark view from blocking cursor motion.
Prevent uneditable elements rendered as part of node or mark view from blocking cursor motion.
Fix a bug that could break some types of composition input starting with a non-empty selection.
Run attribute validators on attributes provided via slice context in clipboard content. This closes an XSS vulnerability (found by Pedro Paniago).
Don't set contenteditable=false on widgets that already have a contenteditable attribute.
Fix a bug that broke pasting when there was a default trusted type policy defined without a createHTML function.
Run attribute validators on attributes provided via slice context in clipboard content. This closes an XSS vulnerability (found by Pedro Paniago).
Enable a workaround for backspace not taking effect on Android for Firefox as well as Chrome (for which it already kicked in).
Enable a workaround for backspace not taking effect on Android for Firefox as well as Chrome (for which it already kicked in).
Work around the situation where Chrome/Webkit replace a node's content DOM with a completely different element.
Don't scroll to a bogus position when trying to scroll an element that has no layout into view.
Don't scroll to a bogus position when trying to scroll an element that has no layout into view.
The clipboard content parser now inlines simple styles defined in the pasted HTML before parsing it, since some applications output their styling that
The clipboard content parser now inlines simple styles defined in the pasted HTML before parsing it, since some applications output their styling that way.
Mark views now also support an update method.
Allow triple-click drag selection.
Allow triple-click drag selection.
Adjust an existing workaround to work around the fact that Chrome no longer fires key events for backspace during composition.
Make the types reflect that mark and node views should render elements, not any DOM node.
Make the types reflect that mark and node views should render elements, not any DOM node.
Fix a bug causing dragCopies to be ignored when it returned false.
Work around a Chrome bug where it sometimes inserts a random node when you press backspace before a widget.
Work around a Chrome bug where it sometimes inserts a random <br> node when you press backspace before a widget.
Fix a crash that could happen when deleting content during a node drag.
Fix an issue where backspacing content before a flexbox or grid styled widget would insert a bogus line break on Firefox.
Fix an issue where backspacing content before a flexbox or grid styled widget would insert a bogus line break on Firefox.
Work around an issue where, after some kinds of changes, Chrome misreports the cursor position and breaks composition.
Work around an issue where, after some kinds of changes, Chrome misreports the cursor position and breaks composition.
Improve DOM update behavior when deleting three or more nodes right before a mark, which would unnecessarily re-render the entire mark.
Work around a newly introduced bug in Safari where composition in an empty table cell causes it to move the text out of the cell into the row element.
EditorView.dragging is now only cleared after the drop event has entirely been handled.
EditorView.dragging is now only cleared after the drop event has entirely been handled.
Add a workaround for an issue where Chrome and Safari will, if you backspace out the last text before an inline-flex node, insert a bogus hard break.
Fix a composition problem on Chrome Windows when starting a composition before an absolutely positioned widget.
Fix a bug where typing when the selection crosses inline node boundaries was ignored in some situations.
Fix a bug where typing when the selection crosses inline node boundaries was ignored in some situations.
Fix an issue where some Backspace presses with SwiftKey on Android would get interpreted as Enter.
Fix an issue where some Backspace presses with SwiftKey on Android would get interpreted as Enter.
Consistently set draggable on a node's inner DOM representation, not a decoration wrapper element.
Consistently set draggable on a node's inner DOM representation, not a decoration wrapper element.
Make sure transformPasted is properly called when pasting into a code block.
Make sure transformPasted is properly called when pasting into a code block.
Fix an issue where the editor didn't properly set the DOM selection in a shadow DOM on Safari in some situations.
Work around a Safari issue that broke composition right after changing the set of active marks.
Pass an argument to transformPasted that tells the handler whether the paste is plain text. Call transformPasted when pasting into a code block
Fix an issue where, for some Android virtual keyboards, joining textblocks that contain an image with Backspace would run the handler for Enter instea
Fix an issue where, for some Android virtual keyboards, joining textblocks that contain an image with Backspace would run the handler for Enter instead.
Fix an issue causing posAtCoords to get confused by table cells sticking out of their parent row elements.
Suppress lint warnings about dereferencing methods by making EditorView.dispatch a property instead of a method.
Suppress lint warnings about dereferencing methods by making EditorView.dispatch a property instead of a method.
The "handleTextInput" prop now takes an additional argument that can be used to generate the default transaction for that text change.
Widget decorations now support a relaxedSide option which can be used to allow the DOM cursor to appear at either side.
Fix an issue where clicks using different mouse buttons could be grouped into a single double- or triple-click.
Fix an issue where clicks using different mouse buttons could be grouped into a single double- or triple-click.
Only delete the selection when starting a composition when it crosses block boundaries.
Default to using trustedTypes.defaultPolicy for clipboard input, when available.
Default to using trustedTypes.defaultPolicy for clipboard input, when available.
Fix an issue where pasting multiple lines from the virtual keyboard on Android would have only the effect of an enter press.
Nothing published for this version
Fix an issue where, with some types of schemas, pressing Enter on Android with a Chinese keyboard wouldn't properly detect the Enter press.
Fix an issue where, with some types of schemas, pressing Enter on Android with a Chinese keyboard wouldn't properly detect the Enter press.
The new dragCopies prop can be used to configure whether a drag event inside the editor copies or moves content.
Fix a regression in 1.38.0 that breaks scrolling back to the selection after Chrome tries to reset it on focus.
Fix a regression in 1.38.0 that breaks scrolling back to the selection after Chrome tries to reset it on focus.
Remove some internally used types from the public type declaration files. Include file extension in web test local imports
Fix an issue where scrolling the cursor into view could inappropriately scroll parent nodes of absolutely positioned elements.
The clipboard serialization logic is now available as a serializeToClipboard method on the view object.
The clipboard serialization logic is now available as a serializeToClipboard method on the view object.
Fix a bug that caused EditorView.nodeDOM to sometimes not return a DOM node when querying a node next to a widget.
Fix a bug that caused EditorView.nodeDOM to sometimes not return a DOM node when querying a node next to a widget.
Fix an issue where an editor would, when scrolling the selection into view, try to do so even if the selection wasn't in that editor.
Fix an issue where display: content elements could break posAtCoords.
Fix an issue where display: content elements could break posAtCoords.
Work around an issue with Chrome reporting the selection incorrectly during composition.
Fix an issue on Safari where the (incorrect) top-level selection was used, instead of the workaround that also works inside shadow roots.
Fix an issue on Safari where the (incorrect) top-level selection was used, instead of the workaround that also works inside shadow roots.
Mark views can now provide an ignoreMutation method. Add ViewMutationRecord to doc template
Don't recreated TrustedTypePolicy objects for every paste.
Don't recreated TrustedTypePolicy objects for every paste.
Add support for a destroy method on custom mark views. Add MarkView to the doc template
The new NodeView.multiType flag is now required to opt into handling different node types in a single node view. It used to be the default, but this t
The new NodeView.multiType flag is now required to opt into handling different node types in a single node view. It used to be the default, but this tripped too many people up.
Fix an issue that would, during some types of document updates, leave the document DOM in an improper form.
Fix an issue that would, during some types of document updates, leave the document DOM in an improper form.
Handle the case where drag-selecting in Firefox creates a selection with multiple distinct ranges.
Fix pasting in Chrome with the require-trusted-types-for CSP enabled.
Fix pasting in Chrome with the require-trusted-types-for CSP enabled.
Fix an issue where, for some kinds of IME on Windows, pressing Enter while in a composition would execute the resulting command on the wrong selection, erasing some typed content.
Fix null dereferences caused by the behavior of Chrome's newly supported caretPositionFromPoint method.
Fix null dereferences caused by the behavior of Chrome's newly supported caretPositionFromPoint method.
Fix an issue where on Android, with GBoard, enter presses in code blocks while a spell correction was selected didn't insert a new line.
The DecorationGroup interface now has a forEachSet method to iterate though the contained decoration sets.
The DecorationGroup interface now has a forEachSet method to iterate though the contained decoration sets.
Delete the selection on composition start when on a mark boundary to force Chrome to apply the correct style to the composition.
Delete the selection on composition start when on a mark boundary to force Chrome to apply the correct style to the composition.
When the browser starts a composition and the selection spans across blocks, start by clearing it to make sure the composed text node lands in a valid position.
Prevent triple clicks and clicks on atom nodes from dispatching a selection update when the new selection is equal to the current selection.
Prevent triple clicks and clicks on atom nodes from dispatching a selection update when the new selection is equal to the current selection.
Don't crash when window.getSelection() returns null.
Create a cursor wrapper when starting a composition with a selection that spans mark boundaries, to avoid odd DOM forms created by Chrome in such a situation.
Fix an issue where dragging an image on Chrome versions before 121 failed to put the image file in the clipboard data.
Fix an issue where dragging an image on Chrome versions before 121 failed to put the image file in the clipboard data.
Enable cross-site scripting protection hack when rendering nodes and marks inside the editor.
When composition happens with the cursor between two text nodes, use the last mutated one to guess which one is being changed.
When composition happens with the cursor between two text nodes, use the last mutated one to guess which one is being changed.
Ignore stray nodes added to parent list elements when backspacing near uneditable content in Firefox.
Ignore stray <br> nodes added to parent list elements when backspacing near uneditable content in Firefox.
Fix a crash where the editor tried to call removeAttribute on a text node.
Fix an issue where coordinates near nested blocks could inappropriately be assigned to be inside those blocks.
Make sure the content slice stored for an in-editor drag is the one that was transformed by transformCopied.
Make sure the content slice stored for an in-editor drag is the one that was transformed by transformCopied.
Fix a regression in composition handling in 1.33.3 that occurs for some IMEs when starting composition on an empty line.
Fix a regression in composition handling in 1.33.3 that occurs for some IMEs when starting composition on an empty line.
When available, use Selection.getComposedRanges on Safari to find the selection inside a shadow DOM.
When available, use Selection.getComposedRanges on Safari to find the selection inside a shadow DOM.
Further improve preserving of compositions for IME systems that keep the cursor before the composed text.
Further improve preserving of compositions for IME systems that keep the cursor before the composed text.
Improve Android backspace detection when the native effect is to delete an entire block element.
Improve Android backspace detection when the native effect is to delete an entire block element.
Fix a bug where reconfiguring node views caused the editor to lose focus.
Fix an issue where some commands didn't properly scroll the cursor into view on Mobile Safari.
Fix a bug where starting a composition with stored marks or after a noninclusive mark, with an IME that keeps the cursor at the start of the composed text (like many Chinese IMEs) disrupted composition on Chrome.
Fix a memory leak where a (single) destroyed editor could be kept alive through a reused Range object.
Fix a type error in the published type declarations in 1.33.0.
Fix a type error in the published type declarations in 1.33.0.
The DecorationSource.forChild method is now public.
The DecorationSource.forChild method is now public.
Fix a regression that caused widget decorations directly after a node to not get drawn in some situations.
Fix a regression that caused widget decorations directly after a node to not get drawn in some situations.
Fix a bug that could cause view updates to crash in rare situations where inline nodes were added around decorations.
Fix a bug that could cause view updates to crash in rare situations where inline nodes were added around decorations.
Fix a bug in DecorationSet.map that, in specific cases when mapping through groups of changes, move decorations to the wrong position.
Fix a bug in DecorationSet.map that, in specific cases when mapping through groups of changes, move decorations to the wrong position.
Fix a case where a DOM change involving astal characters could create odd steps that started and ended in the middle of UTF16 surrogate pairs.
Fix a case where a DOM change involving astal characters could create odd steps that started and ended in the middle of UTF16 surrogate pairs.
Dragging a draggable node will no longer implicitly select it.
Fix a bug where, in some situations, pasting plain text pasted HTML markup.
Fix a bug where, in some situations, pasting plain text pasted HTML markup.
Check for text/uri-list data on the clipboard or in the drop event when pasting or dropping content, since some types of copying on Apple devices use
Check for text/uri-list data on the clipboard or in the drop event when pasting or dropping content, since some types of copying on Apple devices use this format.
Work around a Chrome issue where it didn't draw a selection for inline leaf nodes when selecting across them.
Work around a Chrome issue where it didn't draw a selection for inline leaf nodes when selecting across them.
Override the native behavior when shift-selecting horizontally across non-text inline nodes, since most browsers behave poorly here.
Work around an issue on Chrome where, when clicking above the right side of an uneditable node, the cursor would be put after the node.
Work around an issue on Chrome where, when clicking above the right side of an uneditable node, the cursor would be put after the node.
Fix a bug that could corrupt the composition when it occurs next to text identical to the composed characters.
The new EditorView.updateRoot method can be used to make the editor update its DOM root when it is moved to a new document or shadow tree.
Fix a bug that broke arrow motion near uneditable nodes on Chrome in some situations.
Fix a bug that broke arrow motion near uneditable nodes on Chrome in some situations.
Fix an issue that broke backspace at the end of a textblock that ended in a newline on Chrome.
Fix a crash in the way inline decorations that ended right after a node end position were drawn.
Fix a bug where, when a compositionend event was received before the composition's final changes were processed, the resulting transaction didn't have
Fix a bug where, when a compositionend event was received before the composition's final changes were processed, the resulting transaction didn't have its composition metadata set.
Fix an issue that caused cursor motion to stop at uneditable nodes that aren't widget decorations.
When scrolling an element higher than the viewport into view, make sure its top is visible.
Fix a bug that caused posAtCoords to return incorrect results for coordinates over inline-decorated text.
Fix a bug that caused posAtCoords to return incorrect results for coordinates over inline-decorated text.
Don't try to scroll fixed-positioned elements into view by scrolling their parent elements.
Fix a bug where the editor accidentally blocked shift-delete when the whole document is selected.
Fix a bug where the editor accidentally blocked shift-delete when the whole document is selected.
Bring back workaround for an issue where Firefox draws the cursor in the wrong place in a code block.
Fix an issue where Shift-Insert pastes pasted plain text (because Shift was being held).
Fix an issue where selecting across paragraph and starting a composition would update the state as if Enter was pressed and disrupt the composition.
Make sure destroy is called on node views that are replaced by changing a node's markup.
Make sure destroy is called on node views that are replaced by changing a node's markup.
Fix an issue that could cause the clipboard parser to create invalid slices when parsing content containing isolating nodes.
Fix an issue that could cause the clipboard parser to create invalid slices when parsing content containing isolating nodes.
Include CommonJS type declarations in the package to please new TypeScript resolution settings.
Your coding agent can read these notes before it upgrades. Set up the MCP server →