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 2 days ago
15 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
257 releases · first in 2020
One column per quarter.
Fix a crash in MatchDecorator when updating matches at the end of the document.
Fix a crash in MatchDecorator when updating matches at the end of the document.
Make selection rectangles verticaly align precisely, rather than introducing a slight overlap.
Make selection rectangles verticaly align precisely, rather than introducing a slight overlap.
Fix an issue in MatchDecorator that caused it to fully rebuild its decorations on normal edits.
View updates now have a viewportMoved flag that is only true when a viewport change originated from something other than mapping the viewport over a document change.
Fix an issue where mark decorations that got merged or split weren't properly redrawn.
Fix an issue where mark decorations that got merged or split weren't properly redrawn.
Avoid spurious focus events by not updating the DOM selection when the editor is unfocused but focusable.
Disable writingsuggestions for the editable element, to opt out of Safari's new intelligence completions (which mess up in the editor).
Fix an issue on Chrome where typing at the end of the document would insert a character after the cursor.
Fix an issue on Chrome where typing at the end of the document would insert a character after the cursor.
Work around another crash caused by incorrect composition positions reported by EditContext.
Work around another crash caused by incorrect composition positions reported by EditContext.
Stop disabling custom cursors on Safari version 11.4 and up, which support caret-color.
Fix an issue where a tooltip with wrapped content could, in some circumstances, fail to find a stable position due to a cyclic dependency between its width and its position.
Tooltips can now use the clip option to control whether they are hidden when outside the visible editor content.
Tooltips can now use the clip option to control whether they are hidden when outside the visible editor content.
Make sure positions covered by a gutter or a panel aren't treated as visible for the purpose of displaying tooltips.
Make sure positions covered by a gutter or a panel aren't treated as visible for the purpose of displaying tooltips.
Properly include the tooltip arrow height when checking whether a tooltip fits in its preferred above/below position.
Fix an issue with compositions on Chrome inserting their content in the wrong position when another document change came in during composition.
Fix the default cursor color for dark themes, which was way too dark.
Fix the default cursor color for dark themes, which was way too dark.
Avoid a stack overflow that could happen when updating a line with a lot of text tokens.
Avoid a stack overflow that could happen when updating a line with a lot of text tokens.
Improve the way enormously long (non-wrapped) lines are displayed by making sure they stay shorter than the maximal pixel size the browser's CSS engine can handle.
Fix an issue where the dots past the wrapping point were displayed incorrectly when using highlightWhitespace with a wrapped sequence of spaces.
Fix an issue where the dots past the wrapping point were displayed incorrectly when using highlightWhitespace with a wrapped sequence of spaces.
Improve performance of documents displaying lots of highlighted spaces by using a CSS background instead of pseudo-element.
placeholder now allows a function that constructs the placedholder DOM to be passed in, and uses cloneNode when a raw element is passed in, to prevent adding the same element to multiple editors.
Make it easier to move the pointer over a hover tooltip with an arrow by not closing the tooltip when the pointer is moving over the gap for the arrow
Make it easier to move the pointer over a hover tooltip with an arrow by not closing the tooltip when the pointer is moving over the gap for the arrow.
The new EditorView.clipboardInputFilter and clipboardOutputFilter facets allow you to register filter functions that change text taken from or sent to the clipboard.
Fix a bug where the editor could draw way too big a viewport when not managing its own scrollbar.
Fix a bug where the editor could draw way too big a viewport when not managing its own scrollbar.
The new gutterWidgetClass facet makes it possible to add a class to gutter elements next to widgets.
Avoid the editor's geometry measurements becoming incorrect when fonts finish loading by scheduling a measure on document.fonts.ready.
Avoid the editor's geometry measurements becoming incorrect when fonts finish loading by scheduling a measure on document.fonts.ready.
Avoid an issue where Chrome would incorrectly scroll the window when deleting lines in the editor.
Fix an issue where in some layouts editor content would be drawn on top of panel elements.
Fix an issue where coordsAtPos would return null when querying a position in a block widget.
The new lineNumberWidgetMarker facet makes it possible to insert markers into the line number gutter for widgets.
Make spell check corrections work again on EditContext-enabled Chrome versions.
Make spell check corrections work again on EditContext-enabled Chrome versions.
The value returned by hoverTooltip now has an active property providing the state field used to store the open tooltips.
Fix a crash on old Safari browsers that don't support MediaQueryList.addEventListener.
Fix a crash on old Safari browsers that don't support MediaQueryList.addEventListener.
Fix an issue where EditorView.viewportLineBlocks (and thus other things like the gutter) might be out of date after some kinds of decoration changes.
Fix an issue that caused typing into an editor marked read-only to cause document changes when using EditContext.
Fix an issue that caused typing into an editor marked read-only to cause document changes when using EditContext.
Associate a cursor created by clicking above the end of the text on a wrap point with the line before it.
The package now exports the type of hover tooltip sources as HoverTooltipSource.
Fix an issue where the editor got confused about the position of inserted text when using Chrome's EditContext and canceling transactions for typed te
Fix an issue where the editor got confused about the position of inserted text when using Chrome's EditContext and canceling transactions for typed text.
Fix a bug that broke drag scrolling along one axis when the innermost scrollable element around the editor was only scrollable along the other axis.
Fix a bug that broke drag scrolling along one axis when the innermost scrollable element around the editor was only scrollable along the other axis.
Work around a memory leak in Chrome's EditContext implementation.
Fix a bug where EditContext-based editing could corrupt the document in some situations.
Fix a bug where EditContext-based editing could corrupt the document in some situations.
Fix an issue causing the IME interface to appear in the wrong spot on Chrome Windows.
Fix an issue causing the IME interface to appear in the wrong spot on Chrome Windows.
Only use EditContext on Chrome versions that support passing it an inverted selection range.
Only use EditContext on Chrome versions that support passing it an inverted selection range.
Fix an issue that prevented non-inclusive block widgets from having their updateDOM method called when changed.
Re-enable EditContext use on Chrome 126 and up.
Disable EditContext by default again, to work around a regression where Chrome's implementation doesn't support inverted selections.
Disable EditContext by default again, to work around a regression where Chrome's implementation doesn't support inverted selections.
Make sure EditorView.editable is respected when EditContext is used.
Fix an issue where long lines broken up by block widgets were sometimes only partially rendered.
Fix an issue where long lines broken up by block widgets were sometimes only partially rendered.
The editor will now, when available (which is only on Chrome for the foreseeable future) use the EditContext API to capture text input.
The new setTabFocusMode method can be used to control whether the editor disables key bindings for Tab and Shift-Tab.
The new setTabFocusMode method can be used to control whether the editor disables key bindings for Tab and Shift-Tab.
Fix an issue where commands with an optional second argument would get the keyboard event in that argument when called from a keymap.
Fix an issue where commands with an optional second argument would get the keyboard event in that argument when called from a keymap.
Fix an issue that could cause the cursor to be rendered on the wrong side of a zero-length block widget.
Fix an issue where drawSelection got confused by block widgets in line-wrapped editors in some situations.
Don't hide the native selection in widgets that have focus.
Make sure that clicking an unfocusable editor still remove focus from any other focused elements.
Fix a crash when loading the package in a non-browser environment.
Stop mouse selection when the user types.
Nothing published for this version
Nothing published for this version
Fix an issue where dispatching an update to an editor before it measured itself for the first time could cause the scroll position to incorrectly move
Fix an issue where dispatching an update to an editor before it measured itself for the first time could cause the scroll position to incorrectly move.
Fix a crash when multiple tooltips with arrows are shown.
Improve behavior of scrollPastEnd in a scaled editor.
Improve behavior of scrollPastEnd in a scaled editor.
When available, use Selection.getComposedRanges on Safari to find the selection inside a shadow DOM.
Remove the workaround that avoided inappropriate styling on composed text after a decoration again, since it breaks the stock Android virtual keyboard.
Fix the editor getting stuck in composition when Safari fails to fire a compositionend event for a dead key composition.
Fix the editor getting stuck in composition when Safari fails to fire a compositionend event for a dead key composition.
Fix an issue where, with IME systems that kept the cursor at the start of the composed text, the editor misidentified the target node and disrupted composition.
Fix a bug where in a line-wrapped editor, with some content, the initial scroll position would be off from the top of the document.
Avoid the editor getting confused when iOS autocorrects on pressing Enter and does the correction and the break insertion in two different events.
Avoid the editor getting confused when iOS autocorrects on pressing Enter and does the correction and the break insertion in two different events.
Fix the pasting of copied URIs in iOS.
Fix a bug where a scaled editor could keep performing unnecessary updates due to tiny differences in geometry values returned by the browser.
Fix a bug where, on iOS with a physical keyboard, the modifiers for some keys weren't being passed to the keymaps.
Work around the fact that Mobile Safari makes DOM changes before firing a key event when typing ctrl-d on an external keyboard.
Fix an issue where some commands didn't properly scroll the cursor into view on Mobile Safari.
Re-measure the document when print settings are changed on Chrome.
The EditorView.scrollHandler facet can be used to override or extend the behavior of the editor when things are scrolled into view.
Fix accidental non-optional field in layer config objects.
Fix accidental non-optional field in layer config objects.
Properly recognize Android GBoard enter presses that strip a space at the end of the line as enter.
Properly recognize Android GBoard enter presses that strip a space at the end of the line as enter.
Fix a bug that caused the gutter to have the wrong height when the editor was scaled after construction.
When starting a composition after a non-inclusive mark decoration, temporarily insert a widget that prevents the composed text from inheriting that mark's styles.
Make sure the selection is repositioned when a transaction changes decorations without changing the document.
View plugins can now provide a docViewUpdate method that is called whenever the document view is updated.
Layers now take a updateOnDocUpdate option that controls whether they are automatically updated when the document view changes.
Fix a crash that happens when hover tooltips are active during changes, introduced in 6.24.0.
Fix a crash that happens when hover tooltips are active during changes, introduced in 6.24.0.
Fix an issue that broke context-menu select-all on Chrome when the viewport didn't cover the whole document.
Fix an issue that broke context-menu select-all on Chrome when the viewport didn't cover the whole document.
Make sure tooltips are ordered by extension precedence in the DOM.
Hover tooltip sources may now return multiple tooltips.
Fix a bug that caused Tooltip.above to not take effect for tooltips that were already present when the tooltip plugin is initialized.
Fix a bug that caused Tooltip.above to not take effect for tooltips that were already present when the tooltip plugin is initialized.
Automatically reposition tooltips when their size changes.
Work around odd iOS Safari behavior when doing select all.
Work around odd iOS Safari behavior when doing select all.
Fix a composition interruption when an widget is inserted next to the cursor.
Fix a crash in bidirectional cursor motion.
Simplify visual motion through bidirectional text, fix several corner cases where it would work badly.
Fix a bug that broke some bidi isolates not on the first line of the document.
EditorView.bidiIsolatedRanges now supports automatically determining the direction of the range if not provided by the decoration.
EditorView.visualLineSide can be used to find the visual end or start of a line with bidirectional text.
The new EditorView.outerDecorations facet can be used to provide decorations that should always be at the bottom of the precedence stack.
Fix a bug that could cause tooltips to be unnecessarily be positioned absolutely.
Fix a bug that could cause tooltips to be unnecessarily be positioned absolutely.
Make sure that, when an editor creates tooltips immediately on initialization, the editor is attached to the document when their mount callback is called.
Fix an issue in the bidirectional motion that could cause the cursor to get stuck in a loop when a zero-width non-joiner char was placed on a directio
Fix an issue in the bidirectional motion that could cause the cursor to get stuck in a loop when a zero-width non-joiner char was placed on a direction boundary.
Fix a bug that corrupts the editor's internal view tree data structure on some types of edits, putting the editor in a broken state.
Call widget destroy methods when the entire editor is destroyed or reset.
Call widget destroy methods when the entire editor is destroyed or reset.
Work around an issue on Safari on macOS Sonoma that made the native cursor visible even when drawSelection is enabled.
Fix an issue where, on some browsers, the screenreader announced text ended up in the printed document.
Fix a bug where a hover tooltip could stick around even though the pointer was no longer on the editor when it was moved out over the tooltip.
Fix an issue where hover tooltips could close when moving the mouse onto them due to mouse position rounding issues.
Exceptions raised by update listeners are now routed to the configured exception sink, if any.
Exceptions raised by update listeners are now routed to the configured exception sink, if any.
Fix an issue where passing large scroll margins to scrollIntoView would cause the measure loop to fail to terminate.
Widgets that are draggable (and allow drag events through in their ignoreEvent implementation) can now use the editor's built-in drag/drop behavior.
The new scrollTo option to EditorView allows an initial scroll position to be provided.
The new EditorView.scrollSnapshot method returns an effect that can be used to reset to a previous scroll position.
Support the offset, getCoords, overlap, and resize properties on hover tooltips, as long as they aren't given conflicting values when there are multip
Support the offset, getCoords, overlap, and resize properties on hover tooltips, as long as they aren't given conflicting values when there are multiple active hover tooltips.
Fix a bug that caused tooltips in the default configuration to be positioned incorrectly on Chrome when the editor was transformed.
Fix an issue that caused coordsForChar to return the wrong rectangle for characters after a line wrap in Safari.
Fix an issue that caused coordsForChar to return the wrong rectangle for characters after a line wrap in Safari.
Make the context menu work when clicking below the content in a fixed-height editor.
Tooltips that have been put below/above their target position because there is no room on their default side now stay there on further updates.
Fix a regression that broke dragging text from inside the editor.
Fix a regression that broke dragging text from inside the editor.
Fix a bug that could corrupt the DOM view for specific changes involving newlines and mark decorations.
Fix a bug that could corrupt the DOM view for specific changes involving newlines and mark decorations.
Fix a bug that could cause zero-length widgets at the start of a line to be left in the view even after they were removed.
Fix a bug that could cause zero-length widgets at the start of a line to be left in the view even after they were removed.
RectangleMarker's dimension properties are now public.
Fix an issue in the way the DOM selection is being read that could break backspacing of widgets on Android.
Fix an issue in the way the DOM selection is being read that could break backspacing of widgets on Android.
Fix a bug where the editor could incorrectly computate its transform scale when it was small.
Fix a crash in plugin event handlers after dynamic reconfiguration.
Fix a crash in plugin event handlers after dynamic reconfiguration.
Fix an issue where, on Chrome, tooltips would no longer use fixed positioning.
Fix an issue that caused repositionTooltips to crash when it was called on an editor without tooltips.
Fix an issue that caused repositionTooltips to crash when it was called on an editor without tooltips.
Fix an issue that caused the tooltip system to leave empty nodes in the DOM when an editor using the parent option to tooltips is destroyed.
Fix a bug that regression mouse interaction with the area of a fixed-size editor that isn't covered by the content.
Fix some issues with the way moveVertically behaved for positions on line wrap points.
Fix a bug that could cause the document DOM to be incorrectly updated on some types of viewport changes.
The new getDrawSelectionConfig function returns the drawSelection configuration for a given state.
Make sure the drop cursor is properly cleaned up even when another extension handles the drop event.
Make sure the drop cursor is properly cleaned up even when another extension handles the drop event.
Fix a crash related to non-inclusive replacing block decorations.
The new EditorView.domEventObservers (and the corresponding option to view plugins) allows you to register functions that are always called for an event, regardless of whether other handlers handled it.
Fix an issue where the editor duplicated text when the browser moved content into the focused text node on composition.
Fix an issue where the editor duplicated text when the browser moved content into the focused text node on composition.
Make sure widgetMarker is called for gutters on lines covered by a block replace decoration.
Fix an issue where the cursor could be shown in a position that doesn't allow a cursor when the selection is in a block widget.
The new EditorView.scaleX and scaleY properties return the CSS-transformed scale of the editor (or 1 when not scaled).
The new EditorView.scaleX and scaleY properties return the CSS-transformed scale of the editor (or 1 when not scaled).
The editor now supports being scaled with CSS.
Don't close the hover tooltip when the pointer moves over empty space caused by line breaks within the hovered range.
Don't close the hover tooltip when the pointer moves over empty space caused by line breaks within the hovered range.
Fix a bug where on Chrome Android, if a virtual keyboard was slow to apply a change, the editor could end up dropping it.
Work around an issue where line-wise copy/cut didn't work in Firefox because the browser wasn't firing those events when nothing was selected.
Fix a crash triggered by the way some Android IME systems update the DOM.
Fix a bug that caused replacing a word by an emoji on Chrome Android to be treated as a backspace press.
The new dispatchTransactions option to new EditorView now replaces the old (deprecated but still supported) dispatch option in a way that allows multi…
Fix a bug that broke hover tooltips when hovering over a widget.
The new EditorView.cspNonce facet can be used to provide a Content Security Policy nonce for the library's generated CSS.
The new EditorView.bidiIsolatedRanges can be used to inform the editor about ranges styled as Unicode bidirection isolates, so that it can compute the character order correctly.
EditorView.dispatch now also accepts an array of transactions to be applied together in a single view update.
The new dispatchTransactions option to new EditorView now replaces the old (deprecated but still supported) dispatch option in a way that allows multiple transactions to be applied in one update.
Input handlers are now passed an additional argument that they can use to retrieve the default transaction that would be applied for the insertion.
Fix an issue that made the gutter not stick in place when the editor was in a right-to-left context.
Fix an issue that made the gutter not stick in place when the editor was in a right-to-left context.
The new EditorView.coordsForChar method returns the client rectangle for a given character in the editor.
Fix another crash regression for compositions before line breaks.
Fix another crash regression for compositions before line breaks.
Fix the check that made sure compositions are dropped when the selection is moved.
Fix the check that made sure compositions are dropped when the selection is moved.
Fix a regression that could cause the composition content to be drawn incorrectly.
Fix a regression that could cause the composition content to be drawn incorrectly.
Fix dragging a selection from inside the current selection on macOS.
Fix dragging a selection from inside the current selection on macOS.
Fix an issue that could cause the scroll position to jump wildly
Don't try to scroll fixed-positioned elements into view by scrolling their parent elements.
Fix a bug that caused the cursor to be hidden when showing a placeholder that consisted of the empty string.
Resolve some issues where composition could incorrectly affect nearby replaced content.
Key bindings can now set a stopPropagation field to cause the view to stop the key event propagation when it considers the event handled.
Fix an issue where scrolling up through line-wrapped text would sometimes cause the scroll position to pop down.
Fix an issue where scrolling up through line-wrapped text would sometimes cause the scroll position to pop down.
Fix an issue where clicking wouldn't focus the editor on Firefox when it was in an iframe and already the active element of the frame.
Fix a bug that could cause compositions to be disrupted because their surrounding DOM was repurposed for some other piece of content.
Fix a bug where adding content to the editor could inappropriately move the scroll position.
Extend detection of Enter presses on Android to beforeInput events with an "insertLineBreak" type.
Your coding agent can read these notes before it upgrades. Set up the MCP server →