NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #3144 most downloaded on npm
DOM view component for the CodeMirror code editor
Last release 12 days ago
22 Sep 2026
Ships fairly regularly
a new release about every 2 weeks
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
6 years old
258 releases · first in 2020
One column per quarter.
visualLineSide, which is now deprecated because it doesn't do anything non-trivial, now just returns the logical line side, since that is actually the…
Make coordsAtPos (and thus also the drawn cursor) return the outside of the line when the queried side points out of the line and there is non-dominant-direction text at that side.
visualLineSide, which is now deprecated because it doesn't do anything non-trivial, now just returns the logical line side, since that is actually the more correct thing to do when moving to the start or end of line.
moveVisually now uses positions at the logical start/end of the line to represent the first/last position in the line when the text at that side isn't int he line's dominant text direction.
Make visualLineSide use bidi information when looking for the start or end of line with no wrap points.
Make visualLineSide use bidi information when looking for the start or end of line with no wrap points.
Fix a bug in updating the DOM for marks around an active composition that could sometimes try to use the same DOM node twice.
Work around an issue on Firefox where a composition might be started outside of a line container.
Make sure repeated screen reader announcement messages don't get swallowed by VoiceOver.
Speed up handling of Enter/Backspace on iOS in cases where the browser's native behavior is to do nothing.
Speed up handling of Enter/Backspace on iOS in cases where the browser's native behavior is to do nothing.
Fix the patch that avoids a crash in posAtCoords for non-rendered elements.
Make sure highlighted spaces don't look odd when the browser merges them during composition.
Make sure highlighted spaces don't look odd when the browser merges them during composition.
Avoid scroll position jumping during editor scaling by properly taking scale into account when stabilizing the vertical position.
Fix an issue where the scroll position would incorrectly be moved up when a document scrolled to the bottom would lose height.
Fix an issue where the scroll position would incorrectly be moved up when a document scrolled to the bottom would lose height.
Fix an issue that could cause identical posAtCoords queries to return different results.
Fix an issue that could cause identical posAtCoords queries to return different results.
Fix an issue where scrolling a position into view vertically on Android or iOS could cause horizontal scrolling motion.
Make the panel container top/bottom style a regular rule, rather than an inline style.
Make the panel container top/bottom style a regular rule, rather than an inline style.
Fix an issue where widgets changing length could break content updates.
Fix incorrectly drawn selection when a line wrap point lies between widgets.
Work around regression in Firefox 153 breaking selection hiding.
Fix another tile tree corruption bug that could occur on zero-length content updates.
Fix another tile tree corruption bug that could occur on zero-length content updates.
Fix an issue what would cause domAtPos to return positions on the wrong side of widgets.
Fix an issue what would cause domAtPos to return positions on the wrong side of widgets.
Fix an issue that could cause the DOM cursor to be drawn on the wrong side of a collapsing decoration.
Don't return off-by-one coordinate positions at the edge of right-to-left text node in Safari.
Don't abort momentum scrolling on iOS by stabilizing the scroll position.
Fix a regression in DOM document updates that could corrupt the tile tree and cause crashes.
Fix a regression in DOM document updates that could corrupt the tile tree and cause crashes.
Fix a bug in the content DOM update code that could corrupt the editor state.
Fix a bug in the content DOM update code that could corrupt the editor state.
Fix using select-all from the native context menu on Chrome Android.
Fix using select-all from the native context menu on Chrome Android.
On iOS when autocapitalize is enabled, ignore the shift modifier on virtual keyboard Enter or Backspace presses.
Work around an issue where Chrome Android scrolled the editor up when tapping an empty line to focus it.
Create undirectional selection ranges for double and triple clicks.
Work around an issue in with some IMEs (like Tibetan) in MacOS Chrome where composition could get interrupted needlessly.
Work around an issue in with some IMEs (like Tibetan) in MacOS Chrome where composition could get interrupted needlessly.
Fix a crash when calling on a line with only display: none content.
Improve reuse of widgets near composition, which in some cases prevents Safari from doing odd thing with the selection.
Block wrappers can now be given a rank to set a specific nesting order for wrappers coming from the same source.
Block wrappers can now be given a rank to set a specific nesting order for wrappers coming from the same source.
Fix a bug where block wrappers could be applied incorrectly during composition.
Fix a bug where block wrappers could be applied incorrectly during composition.
Fix an issue leading to constant text geometry resets in variable-width fonts.
Make sure posAtCoords doesn't recurse endlessly.
Make sure posAtCoords doesn't recurse endlessly.
The new activateHover function can be used to explicitly activate hover tooltips at a given position.
closeHoverTooltip now allows you to close a specific hover tooltip.
Fix an issue where, on some platforms, clicking after the end of a wrapped line would put the cursor in the wrong position.
Fix an issue where, on some platforms, clicking after the end of a wrapped line would put the cursor in the wrong position.
Fix an issue where EditorView.posAtCoords could incorrectly return a position near a higher element on the line, in mixed-font-size lines.
Fix an issue where EditorView.posAtCoords could incorrectly return a position near a higher element on the line, in mixed-font-size lines.
Expand the workaround for the Webkit bug that causes nonexistent selections to stay visible to be active on non-Safari Webkit browsers.
The new EditorView.cursorScrollMargin facet can now be used to configure the extra space used when scrolling the cursor into view.
Fix a bug that caused Shift-Enter/Backspace/Delete on iOS to lose the shift modifier when delivered to key event handlers.
Fix a bug that caused Shift-Enter/Backspace/Delete on iOS to lose the shift modifier when delivered to key event handlers.
Fix an issue where EditorView.moveVertically could move to the wrong place in wrapped lines with a large line height.
Make sure the selection head associativity is properly set for mouse selections made with shift held down.
WidgetType.updateDOM is now called with the previous widget value as third argument.
Improve touch tap-selection on line wrapping boundaries.
Improve touch tap-selection on line wrapping boundaries.
Make drawSelection draw our own selection handles on iOS.
Fix an issue where posAtCoords, when querying line wrapping points, got confused by extra empty client rectangles produced by Safari.
Perform scroll stabilization on the document or wrapping scrollable elements, when the user scrolls the editor.
Perform scroll stabilization on the document or wrapping scrollable elements, when the user scrolls the editor.
Fix an issue where changing decorations right before a composition could end up corrupting the visible DOM.
Fix an issue where some types of text input over a selection would be read as happening in wrong position.
Fix a regression where the editor would forget previously measured line heights without good reason.
Fix a regression where the editor would forget previously measured line heights without good reason.
Fix an issue where scrolling the cursor into view sometimes wouldn't work on Chrome Android.
Fix a bug that broke composition inside of block wrappers.
Improve performance of posAtCoords on long lines.
Improve performance of posAtCoords on long lines.
Fix a regression where copy and cut in a shadow DOM on Safari would fall back to the native behavior, often copying the wrong text.
Fix an issue where a widget at start or end of line, when wrapped to cover that whole line, could block vertical cursor motion.
Fix an issue where a widget at start or end of line, when wrapped to cover that whole line, could block vertical cursor motion.
Fix an issue EditorView.moveVertically that would sometimes cause selection-extending vertical motion to get stuck on line wrapping points.
Fix a bug where the visual selection drawn by drawSelection could fail to update properly in some circumstances.
Fix a bug where the visual selection drawn by drawSelection could fail to update properly in some circumstances.
Fix a bug where PageUp/PageDown near the edge of the viewport might completely skip to the start/end of the document.
Fix a regression that caused mark decorations to be split on text node chunk boundaries again.
Avoid handling copy events for parent editors.
Avoid handling copy events for parent editors.
Fix a regression in the way widget are reused when content next to them changes.
Fix a regression in the way widget are reused when content next to them changes.
Make sure font metrics get recomputed on fonts.ready even if the line height doesn't change.
Fix an issue where compositions next to a widget that create a new text node could get needlessly interrupted during an editor update.
Fix a bug where EditorSelection.cursor() with a non-zero assoc value would not be visually respected at soft-wrap boundaries on initial view creation.
Fix a bug where EditorSelection.cursor() with a non-zero assoc value would not be visually respected at soft-wrap boundaries on initial view creation.
Fix error caused by hover tooltips running a scheduled timeout after their editor has been destroyed.
Fix a bug that caused EditorView.outerDecorations to not affect the content height map.
Fix an issue where composition near a widget could get unnecessarily interrupted.
Fix a bug that cause coordsAtPos to use the dimensions of widget buffers when there were more meaningful elements to use nearby.
Fix a bug that cause coordsAtPos to use the dimensions of widget buffers when there were more meaningful elements to use nearby.
Fix a data structure corruption that could cause crashes during viewport changes.
Fix a bug that could sometimes cause the document to become mangled during composition.
Fix a bug that could sometimes cause the document to become mangled during composition.
Fix an issue when composing on the boundary of a decoration, where the text after the composition would get garbled.
Fix an issue when composing on the boundary of a decoration, where the text after the composition would get garbled.
Fix an issue where replaced widgets alone on a line weren't reused and didn't get their updateDOM method called.
Fix an issue where replaced widgets alone on a line weren't reused and didn't get their updateDOM method called.
Fix a bug where, when selecting full lines at the end of the document and inserting a character on Chrome, an inappropriate extra newline was inserted.
Fix a bug where paste events handlers on Chrome could fail to run when pasting on a blank line.
Fix a bug where paste events handlers on Chrome could fail to run when pasting on a blank line.
Fix a regression causing the native cursor to get stuck before block widgets with side>0.
Fix a crash in content DOM building after a block widget.
Fix a bug in posAtCoords that would in some circumstances make it return positions on the wrong side of a block widget.
Fix a bug that could corrupt the rendered document in some situations involving adjacent mark decorations of the same type.
Fix a bug that could corrupt the rendered document in some situations involving adjacent mark decorations of the same type.
Fix an issue where moveVertially was sometimes unable to escape lines with thick borders or padding.
Fix an issue where moveVertially was sometimes unable to escape lines with thick borders or padding.
Restore a workaround for a Chrome selection bug that had regressed in the previous release.
Restore a workaround for a Chrome selection bug that had regressed in the previous release.
Properly handle bidirectional text in posAtCoords.
Properly handle bidirectional text in posAtCoords.
Avoid computing a zero character width (leading to divisions by zero) when the editor is hidden and the browser doesn't have a layout for it.
The posAndSideAtCoords method is an extended version of posAtCoords that also tells you which side of the position the coordinates are associated with.
Add support for block wrappers, decoration-like things that allow extension code to create DOM nodes around groups of lines.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Improve handling of composition with multiple cursors on MacOS.
Improve handling of composition with multiple cursors on MacOS.
Fix an issue where computing a document position from screen coordinates would sometimes go wrong in right-to-left text.
Make detection of transformed tooltip parent elements (forcing absolute positioning) more robust on current browsers.
Make detection of transformed tooltip parent elements (forcing absolute positioning) more robust on current browsers.
Avoid an issue where on Chrome and Safari, typing over a cross-line selection can replace widgets on the line after the selection with their plain text content.
Fix a bug that broke insertion of composed input at multiple cursors when the IME keeps the selection at the start of the composed text.
Work around a regression in Safari 26 that causes fragments of old selections to remain visible.
Work around a regression in Safari 26 that causes fragments of old selections to remain visible.
Avoid firing text changes that cover unchanged text on Android.
Avoid firing text changes that cover unchanged text on Android.
Fix an issue where the editor could, in some circumstances, insert a stray newline when typing over a document that ended in a block widget.
Work around an issue in Safari 26 that causes inappropriate scrolling on focus in some circumstances.
Work around a Chrome Android issue where the browser doesn't properly fire composition end events, leaving CodeMirror to believe the user was still co
Work around a Chrome Android issue where the browser doesn't properly fire composition end events, leaving CodeMirror to believe the user was still composing.
Work around a rendering bug in Mobile Safari by completely hiding empty layers.
Work around a rendering bug in Mobile Safari by completely hiding empty layers.
Fix vertical cursor motion in Chrome around decorations with bottom borders or margins.
Fix an issue that caused mark decorations longer than 512 characters to needlessly be split.
Move the cursor out of atomic ranges when text input happens.
Re-enable falling dispatching keys by key code for Cmd-Alt- combinations on macOS.
Re-enable falling dispatching keys by key code for Cmd-Alt- combinations on macOS.
Make sure all pointer selections skip atomic ranges.
Make the keymap not dispatch Alt key combos on macOS by key code, because those are generally used to type special characters.
Make the keymap not dispatch Alt key combos on macOS by key code, because those are generally used to type special characters.
Fix a layout bug that could occur with very narrow editors.
Gutters can now specify that they should be displayed after the content (which would be to the right in a left-to-right layout).
Gutters can now specify that they should be displayed after the content (which would be to the right in a left-to-right layout).
Fix an issue where moving the cursor vertically from the one-but-last character on a line would sometimes move incorrectly on Safari.
Fix an issue where moving the cursor vertically from the one-but-last character on a line would sometimes move incorrectly on Safari.
Fix an issue causing coordinates between lines of text to sometimes be inappropriately placed at the end of the line by posAtCoords.
Properly add crelt as a dependency.
Properly add crelt as a dependency.
View plugins can now take an argument, in which case they must be instantiated with their of method in order to be added to a configuration.
View plugins can now take an argument, in which case they must be instantiated with their of method in order to be added to a configuration.
The new showDialog function makes it easy to show a notification or prompt using a CodeMirror panel.
Make logException log errors to the console when onerror returns a falsy value.
Make logException log errors to the console when onerror returns a falsy value.
Fix an issue in MatchDecorator causing updateDeco to sometimes not do the right thing for deletions.
Use the aria-placeholder attribute to communicate the placeholder text to screen readers.
Use the aria-placeholder attribute to communicate the placeholder text to screen readers.
Fix a crash when EditorView.composing or .compositionStarted are accessed during view initialization.
Fix an issue where drawSelection would draw selections starting at a block widget not at a line break in an odd way.
Fix an issue where drawSelection would draw selections starting at a block widget not at a line break in an odd way.
Fix an issue where the editor would inappropriately scroll when editing near the bottom of the document with line wrapping enabled, in some cases.
Fix an issue that caused unnecessary transactions on focus change.
Fix an issue where some browsers wouldn't enable context menu paste when clicking on placeholder text.
Fix an issue where some browsers wouldn't enable context menu paste when clicking on placeholder text.
Fix an issue where cursor height would unnecessarily be based on a placeholder node's dimensions, and thus be off from the text height.
Fix an issue where scrolling down to a range higher than the viewport could in some situations fail to scroll to the proper position.
Fix an issue where scrolling down to a range higher than the viewport could in some situations fail to scroll to the proper position.
Make sure event handlers registered with domEventHandlers are not called during view updates, to avoid triggering nested update errors.
Make sure event handlers registered with domEventHandlers are not called during view updates, to avoid triggering nested update errors.
Don't include the window scrollbars in the space available for displaying tooltips.
Work around an issue with Chrome's EditContext that shows up when using autocompletion while composing with Samsung's virtual Android keyboard.
Your coding agent can read these notes before it upgrades. Set up the MCP server →