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
Fix an issue where, when pressing enter or space at the start of a composition, the cursor would jump to the end of the composition on Chrome Android.
Fix an issue where, when pressing enter or space at the start of a composition, the cursor would jump to the end of the composition on Chrome Android.
Fix an issue that would cause Enter presses to be dropped on Android when in a node whose DOM representation nested more than one element.
Fix a bug where pasting specific types of HTML could cause a crash.
Properly handle CSS class name strings with extra spaces in decorations.
Properly handle CSS class name strings with extra spaces in decorations.
Fix a performance bug when updating nodes with thousands of children.
One column per quarter.
Fix the scrolling-into-view logic in the case where a scale transformation is applied to the editor. Strip carriage return chars from text pasted as c
Fix the scrolling-into-view logic in the case where a scale transformation is applied to the editor. Strip carriage return chars from text pasted as code
Remove carriage return characters when pasting text into code blocks.
Node view constructors and update methods are now passed the inner decorations of the node.
Fix a crash in posAtDOM.
Node view constructors and update methods are now passed the inner decorations of the node.
Fix an issue where some user actions (such as enter on iOS) in a node whose content DOM element isn't it's top element could leave the DOM in a damage
Fix an issue where some user actions (such as enter on iOS) in a node whose content DOM element isn't it's top element could leave the DOM in a damaged state.
Fix an issue where the ProseMirror-hideselection element class would be briefly removed and then restored when moving from one invisible selection to
Fix an issue where the ProseMirror-hideselection element class would be briefly removed and then restored when moving from one invisible selection to another.
Fix an issue where the cursor could end up on the wrong side of a widget with side < 0.
Fix an issue where using the vertical arrow keys after select-all didn't update the selection.
Fix an issue where using the vertical arrow keys after select-all didn't update the selection.
Fix an issue where the view could go into an endless DOM flush loop in specific circumstances involving asynchronous DOM mutation.
Fix an issue where the view could go into an endless DOM flush loop in specific circumstances involving asynchronous DOM mutation.
Add another kludge to work around an issue where Firefox displays the cursor in the wrong place in code blocks.
Add another kludge to work around an issue where Firefox displays the cursor in the wrong place in code blocks.
Fix a bug where validation of decorations passed to DecorationSet.add sometimes passed the wrong offsets to the validator.
Fix bad selection position in empty textblocks. Solves several issues with editing in Firefox Android.
Fix a bug where adding invalid decorations (for example zero-length inline decorations) with DecorationSet.add would fail to drop those.
Fix a bug where adding invalid decorations (for example zero-length inline decorations) with DecorationSet.add would fail to drop those.
The library will now always let the browser perform its native pasting behavior when the clipboard data is empty and no paste handler handles the even
The library will now always let the browser perform its native pasting behavior when the clipboard data is empty and no paste handler handles the event.
Fix a bug where domAtPos (and thus cursor placement) would pick positions inside uneditable DOM or atom nodes.
Fix a regression in coordsAtPos when used on an empty line at the end of a code block.
Fix a regression in coordsAtPos when used on an empty line at the end of a code block.
Fix an issue where starting a composition with stored marks would sometimes create the wrong steps (and thus break the mark) on Chrome.
Fix an issue where starting a composition with stored marks would sometimes create the wrong steps (and thus break the mark) on Chrome.
EditorView.domAtPos now takes a second parameter that can be used to control whether it should enter DOM nodes on the side of the given position.
Fix platform detection on recent iPadOS versions, restoring several workarounds for bugs that were accidentally turned off there.
Fix platform detection on recent iPadOS versions, restoring several workarounds for bugs that were accidentally turned off there.
Fix an issue where the cursor ended up in the wrong place when pressing enter in an empty heading on iOS.
Fix an issue where the cursor ended up in the wrong place when pressing enter in an empty heading on iOS.
Fix an issue where pressing enter at the start of a line in a code block would leave the visible cursor in the wrong place on Firefox.
Fix an issue where pressing enter at the start of a line in a code block would leave the visible cursor in the wrong place on Firefox.
Fix a bug where overlapping inline decorations would get drawn incorrectly (and even corrupt the drawing of unrelated content).
Fix a bug where overlapping inline decorations would get drawn incorrectly (and even corrupt the drawing of unrelated content).
Fix an issue where the attributes of defining nodes were dropped when copying to the clipboard.
Fix an issue where the attributes of defining nodes were dropped when copying to the clipboard.
Fix an issue where a drag starting briefly after an aborted drag could confuse the view and break the second drag. Allow callers of coordsAtPos to spe
Fix an issue where a drag starting briefly after an aborted drag could confuse the view and break the second drag. Allow callers of coordsAtPos to specify a side
EditorView.coordsAtPos now takes a side argument that determines which side of the position to look, if ambiguous.
Fix an issue where, when inserting nodes, Safari would briefly show the cursor before the inserted break, though the DOM selection had already been se
Fix an issue where, when inserting <br> nodes, Safari would briefly show the cursor before the inserted break, though the DOM selection had already been set after it.
When dragging inside the editor, whether the operation copies or moves is now determined by the modifiers held on drop, not on drag start.
Fix issue where the DOM selection could end up in an invalid state after a keyboard cursor motion event that had no effect.
Fix issue where the DOM selection could end up in an invalid state after a keyboard cursor motion event that had no effect.
Fix an issue where some types of drop events would fail to select the dropped content.
Work around Safari issues when pressing shift-down with the cursor before an uneditable element.
Fix an issue where mapping a decoration set could corrupt the decoration positions in specific cases.
Fix an issue where mapping a decoration set could corrupt the decoration positions in specific cases.
Fix a crash that occurred when inline decorations covered inline nodes that weren't leaf nodes.
Fix a crash that occurred when inline decorations covered inline nodes that weren't leaf nodes.
Work around a Firefox issue where the cursor is sometimes shown in the wrong place when directly after a node.
Work around a Firefox issue where the cursor is sometimes shown in the wrong place when directly after a <br> node.
The editor will now reset composition when stored marks are set on the state, so that the marks can be added to the next input.
Inline decorations are no longer applied to inline nodes that aren't leaves, only to the innermost layer.
Adjust the workaround for Chrome's DOM selection corruption bug to cover more cases.
Adjust the workaround for Chrome's DOM selection corruption bug to cover more cases.
Work around another issue where Chrome misreports the DOM selection.
Work around another issue where Chrome misreports the DOM selection.
Fix an issue where Enter on iOS might be handled twice on slow devices. Pass plain text flag to transformPastedText and clipboardTextParser props
Fix an issue where Enter on iOS might be handled twice on slow devices. Pass plain text flag to transformPastedText and clipboardTextParser props
Fix a bug where typing in front of a mark could in some circumstances cause the editor to discard the new content.
The transformPastedText and clipboardTextParser props now receive an extra argument, plain, indicating whether the paste was forced as plain text.
Fix a bug where storing DOM nodes directly in widget decorations (not recommended) could cause the view to try and place the same DOM node multiple ti
Fix a bug where storing DOM nodes directly in widget decorations (not recommended) could cause the view to try and place the same DOM node multiple times.
Fix a crash when the editor tries to read a DOM selection outside of itself.
Fix a crash when the editor tries to read a DOM selection outside of itself.
Improve the way inline decorations covering non-leaf inline nodes are rendered. Ensure elt is defined before accessing it in posAtCoords
Fix a crash in Safari when the browser's elementFromPoint returns null in posAtCoords. Handle case where Chrome flips the nesting order of edited inline nodes
Fix the issue of <a> marks on decorated text being lost during editing because Chrome changes the nesting order of the link and the decoration <span> element in the DOM.
Fix an issue where, when pressing enter with a bolded virtual keyboard suggestion on Android's Gboard, the cursor would stay on the wrong line.
Fix bug in the way the editor handles Cmd-arrow presses on macOS.
Fix bug in the way the editor handles Cmd-arrow presses on macOS.
Fix an issue where the editor would override behavior for Cmd-arrow key presses on macOS the wrong way in some situations.
Fix an issue where the editor would override behavior for Cmd-arrow key presses on macOS the wrong way in some situations.
Fix handling of copy and paste in IE when top-level elements can't be focused.
Fix a crash on IE, which sets document.activeElement to null in some circumstances.
Fix a crash on IE, which sets document.activeElement to null in some circumstances.
Work around an issue in Safari where you couldn't click inside a selected element to put the cursor there.
Work around an issue in Safari where you couldn't click inside a selected element to put the cursor there.
Fix enter at start of paragraph in iOS inserting two new paragraphs.
Scrolling the cursor into view now makes sure it doesn't end up below a scrollbar.
Fix a crash on Chrome during selection updates when Selection.collapse inexplicably leaves the selection empty. Update documented type for handlePaste
Fix a crash on Chrome during selection updates when Selection.collapse inexplicably leaves the selection empty. Update documented type for handlePaste event arg
Fix another issue that could break decoration set mapping in deeply nested nodes.
Fix superfluous cursor showing up in Chrome when there is a gap cursor or similar custom empty selection active.
Fix superfluous cursor showing up in Chrome when there is a gap cursor or similar custom empty selection active.
Fix an issue where DecorationSet.remove would ignore the positions of its argument decorations, and only compare by type.
Work around Chrome Android issue where pasting would close the virtual keyboard.
Work around Chrome Android issue where pasting would close the virtual keyboard.
Fix an issue where some kinds of changes would cause nodes to show up twice in the DOM.
Improve return values from coordsAtPos on line breaks in Safari and Firefox.
Improve return values from coordsAtPos on line breaks in Safari and Firefox.
Make sure enter on iOS is handled even when the native behavior has no effect.
Fix mismatch between DOM and state selection bug at compositionend in IE11.
Fix mismatch between DOM and state selection bug at compositionend in IE11.
Make sure handleDrop](https://prosemirror.net/docs/ref/#view.EditorProps.handleDrop) is called even when there's nothing on the clipboard.
Fix a bug where reconfiguring a view in a way that changed both the active node views and the attributes of the top node left the old attributes active.
Work around another case where Chrome lies to the script about its current DOM selection state.
Avoid redrawing nodes when both their content and a widget in front of them is updated in the same transaction.
Fix issue where scrolling with multiple scrollable containers sometimes moves to the wrong position.
Fix bug when starting a composition after a link, when the composition started with the character that ended the link.
Fix bug when starting a composition after a link, when the composition started with the character that ended the link.
Fix issue where scrolling the cursor into view in a scrollable editor would sometimes inappropriately scroll an outer container as well.
Fix issue where scrolling the cursor into view in a scrollable editor would sometimes inappropriately scroll an outer container as well.
Fix parsing of tbody, tfoot, and caption elements in pasted HTML content. Fix bug in selection-is-at-edge check
Fix parsing of tbody, tfoot, and caption elements in pasted HTML content. Fix bug in selection-is-at-edge check
Fix an issue where moving focus to the editor with the keyboard or the DOM focus method would leave the DOM and state selections inconsistent.
Widget decorations can now take an ignoreSelection option, that causes the editor to leave selections inside them alone.
Fix an issue that could lead to the editor making regular content uneditable on Safari.
Fix an issue that could lead to the editor making regular content uneditable on Safari.
Fix a crash on Firefox when starting a composition after a marked non-text node.
Fix a crash on Firefox when starting a composition after a marked non-text node.
Make sure to reset the selection when the browser moves it into an uneditable node.
Make sure to reset the selection when the browser moves it into an uneditable node.
Fix issue where the editor would fail to create a meaningful DOM selection for a node selection on Safari.
Makes sure the iOS virtual keyboard gets its internal state (autocorrection, autocapitalization) updated when the user presses enter.
Fix bug that would sometimes cause widget decorations to be drawn with marks from the node after the text node they were inside of.
Fix bug that would sometimes cause widget decorations to be drawn with marks from the node after the text node they were inside of.
Fix a bug that caused the DOM to go out of sync with the decorations when updating inline decorations that added multiple wrapping nodes to a piece of
Fix a bug that caused the DOM to go out of sync with the decorations when updating inline decorations that added multiple wrapping nodes to a piece of content.
Fix a crash when deleting a list item in Safari while using a parse rule with a context property for elements.
Fix a crash when deleting a list item in Safari while using a parse rule with a context property for <li> elements.
Work around another case where Chrome reports an incorrect selection.
Work around issue where Firefox will insert a stray BR node when deleting a text node in some types of DOM structure.
Fix the way decorations update node styles to allow removing CSS custom properties. Link to https in readme and changelog
Fix the way decorations update node styles to allow removing CSS custom properties. Link to https in readme and changelog
The root accessor on views now makes sure that, when it returns a shadow root, that object has a getSelection method.
Fix an issue where the DOM selection could get out of sync with ProseMirror's selection state in Edge.
Rename ES module files to use a .js extension, since Webpack gets confused by .mjs
Rename ES module files to use a .js extension, since Webpack gets confused by .mjs
Fix issue where the editor wouldn't update its internal selection when the editor was blurred, its selection was changed programatically, and then the
Fix issue where the editor wouldn't update its internal selection when the editor was blurred, its selection was changed programatically, and then the editor was re-focused with its old DOM selection.
The file referred to in the package's module field now is compiled down to ES5.
Fix issue where EditorView.focus would scroll the top of the document into view on Safari.
Fix issue where EditorView.focus would scroll the top of the document into view on Safari.
Work around selection jumping that sometimes occurs on Chrome when focusing the editor.
Work around selection jumping that sometimes occurs on Chrome when focusing the editor.
Add a module field to package json file.
Add a module field to package json file.
Fix issue where paste events were stopped when the clipboard parser failed to make sense of the content.
Fix issue where paste events were stopped when the clipboard parser failed to make sense of the content.
Fix issue where the handlePaste prop might be called multiple times for a single paste.
Set the editable element to use a white-space: break-spaces style so that whitespace at the end of a line properly moves the cursor to the next line.
Set the editable element to use a white-space: break-spaces style so that whitespace at the end of a line properly moves the cursor to the next line.
Fix issue where posAtCoords could throw an error in some circumstances on Firefox.
Don't force focus back on the editor if a node view moves focus in its setSelection method.
Reduce unnecessary redraws when typing creates a new text node on Chrome.
Reduce unnecessary redraws when typing creates a new text node on Chrome.
The default prosemirror.css now also turns off ligatures in Edge.
Fix issue where the cursor stays before the typed text in Edge, when typing in an empty paragraph or between hard break nodes.
The mutation records passed to `ignoreMutation` now contain the old attribute value.
The mutation records passed to ignoreMutation now contain the old attribute value.
Enabling a mark and then starting a composition, on Chrome Android, will no longer cause the cursor to jump to the start of the composition.
Enabling a mark and then starting a composition, on Chrome Android, will no longer cause the cursor to jump to the start of the composition.
Fix workaround for broken IE11 DOM change records when inserting between nodes to handle more cases.
Fix workaround for broken IE11 DOM change records when inserting between <br> nodes to handle more cases.
Don't leave DOM selection in place when it is inside a node view but not inside its content DOM element.
Don't leave DOM selection in place when it is inside a node view but not inside its content DOM element.
Your coding agent can read these notes before it upgrades. Set up the MCP server →