NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #2451 most downloaded on npm
ProseMirror document transformations
Last release 16 days ago
02 Sep 2026
Ships fairly regularly
a new release about every 2 months
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
10 years old
79 releases · first in 2016
When `setBlockType` comes across a textblock that can't be changed due to schema constraints, it skips it instead of failing.
When setBlockType comes across a textblock that can't be changed due to schema constraints, it skips it instead of failing.
canSplit now returns false when the requested split goes through isolating nodes.
The setNodeType method on transforms is now more descriptively called `setNodeMarkup`. The old name will continue to work with a warning until the nex
The setNodeType method on transforms is now more descriptively called setNodeMarkup. The old name will continue to work with a warning until the next release.
One column per quarter.
`Step.toJSON` no longer has a default implementation.
Step.toJSON no longer has a default implementation.
Steps no longer have an offset method. Map them through a map created with StepMap.offset instead.
The clearMarkup method on Transform is no longer supported (you probably needed clearIncompatible anyway).
Pasting a list item at the start of a non-empty textblock now wraps the textblock in a list.
Marks on open nodes at the left of a slice are no longer dropped by Transform.replace.
StepMap now has a static method offset, which can be used to create a map that offsets all positions by a given distance.
Transform objects now have a clearIncompatible method that can help make sure a node's content matches another node type.
Fix another bug in the way canSplit interpreted its typesAfter argument.
Fix another bug in the way canSplit interpreted its typesAfter argument.
Fix crash in `canSplit` when an array containing null fields is passed as fourth argument.
Fix crash in canSplit when an array containing null fields is passed as fourth argument.
`canSplit` now returns false when given custom after-split node types that don't match the content at that point.
`addMark` no longer assumes marks always exclude only themselves.
addMark no longer assumes marks always exclude only themselves.
replaceRange](https://prosemirror.net/docs/ref/version/0.21.0.html#transform.Transform.replaceRange) and deleteRange will no longer expand the range across isolating node boundaries.
Nothing published for this version
Fixes issue where replacing would sometimes unexpectedly split nodes.
Fixes issue where replacing would sometimes unexpectedly split nodes.
Nothing published for this version
`Transform.setNodeType` now takes an optional argument to set the new node's attributes.
Transform.setNodeType now takes an optional argument to set the new node's attributes.
Steps now provide an offset method, which makes it possible to create a copy the step with its position offset by a given amount.
docChanged is now a property on the Transform class, rather than its Transaction subclass.
Mapping instances now have invert and appendMappingInverted methods to make mapping through them in reverse easier.
Nothing published for this version
Nothing published for this version
Fix bug where pasted/inserted content would sometimes get incorrectly closed at the right side.
Fix bug where pasted/inserted content would sometimes get incorrectly closed at the right side.
Nothing published for this version
Fix issue where `Transform.replace` would, in specific circumstances, unneccessarily drop content.
Fix issue where Transform.replace would, in specific circumstances, unneccessarily drop content.
The new Transform method replaceRange, replaceRangeWith, and deleteRange provide a way to replace and delete content in a 'do what I mean' way, automatically expanding the replaced region over empty parent nodes and including the parent nodes in the inserted content when appropriate.
Fix bug in Transform.setBlockType when used in a transform that already has steps.
Fix bug in Transform.setBlockType when used in a transform that already has steps.
Mapped positions now count as deleted when the token to the side specified by the assoc parameter is deleted, rather than when both tokens around them
Mapped positions now count as deleted when the token to the
side specified by the assoc parameter is deleted, rather than when
both tokens around them are deleted. (This is usually what you already
wanted anyway.)
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →