unstale

npm / slate

slate

What changed in slate 0.123 to 0.144, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-18.

13 breaking1 security34 new APIs and options3 performance3 behavior and defaults28 fixes and other

See which of these apply to your code, ranked, in your agent:

npx @unstale/cli init

@unstale/cli 0.1.1 on npm

slate 0.1446 changes

Breaking changes 2

  • BaseEditor now requires setChildren; createEditor supplies it, while hand-built editors and test mocks must add it.

    0.144.0release notes

  • Deleting beside two non-selectable blocks, or a read-only block whose content is all non-selectable, now removes them instead of merging their text.

    0.144.0release notes

New APIs and options 1

  • Applies an outside document through Slate operations, keeping unchanged nodes and preserving selection, refs and history.

    0.144.0release notes

Behavior and default changes 1

  • With history enabled, each setChildren call is recorded as one undo step, separate from typing before and after it.

    0.144.0release notes

Fixes and other changes 2

  • No longer returns points inside consecutive non-selectable elements or inside a non-selectable first child of a void or read-only element.

    0.144.0release notes

  • No longer returns points inside consecutive non-selectable elements or inside a non-selectable first child of a void or read-only element.

    0.144.0release notes

slate 0.1431 changes

New APIs and options 1

  • Adds editor.getSplitProperties(node, path) to choose properties copied to the new right-hand node by Transforms.splitNodes; createEditor supplies it, while structural editor implementations and mocks must add the method.

    0.143.0release notes

slate 0.1422 changes

New APIs and options 1

  • createEditor accepts an optional type parameter; createEditor<BaseEditor>() returns a plain BaseEditor, so plugin chains are type-checked against the plugins actually applied.

    0.142.0release notes

Fixes and other changes 1

  • Opt-in edge affinity leaves collapsed selections outside text nodes to the transform, avoiding a “Cannot get the leaf node” error.

    0.142.1release notes

slate 0.1417 changes

Breaking changes 2

  • Dropping a dragged block void onto the middle of a paragraph now splits the paragraph in the same way as pasting a block-level node.

    0.141.0release notes

  • Pasting block-level nodes mid-block now splits the block so the nodes land between its halves, and moves the cursor to the start of the second half.

    0.141.0release notes

New APIs and options 4

  • Adds a query for consistent insertion at inline and mark boundaries; BaseEditor requires it, while createEditor supplies it automatically.

    0.141.0release notes

  • Adds an opt-in editor hook that configures insertion affinity at inline boundaries; it defaults to null, preserving existing behavior.

    0.141.0release notes

  • Adds a filter option called for each fragment node with the destination block entry; returning false skips that node.

    0.141.0release notes

  • Adds an opt-in editor hook that configures insertion affinity at leaf boundaries; it defaults to null, preserving existing behavior.

    0.141.0release notes

Fixes and other changes 1

  • Reports the receiving leaf’s marks when affinity rules determine the insertion point.

    0.141.0release notes

slate 0.1402 changes

Breaking changes 1

  • An invalid call combining block children with text or inline children now throws with both node paths instead of allowing normalization to discard content.

    0.140.0release notes

Fixes and other changes 1

  • When fragment replacement leaves an insertion point at a block-leading or trailing inline, the required empty text is inserted so insertion stays within the block before emptied containers normalize.

    0.140.0release notes

slate 0.1394 changes

New APIs and options 2

  • Adds an API for identifying remote changes, alongside inward affinity support for expanded selections during remote operations.

    0.139.0release notes

  • Adds a way for bindings to apply remote operations with inward affinity for expanded selections, keeping text inserted at selection edges outside the selected content.

    0.139.0release notes

Fixes and other changes 2

  • Includes text boundaries after inline voids in position traversal and restarts word segmentation there, aligning positions with Editor.before and Editor.after.

    0.139.0release notes

  • When deleting an expanded target before inserting a fragment, honors voids: true and inserts at the surviving start point if the range ends inside an inline element.

    0.139.0release notes

slate 0.13814 changes

Breaking changes 2

  • Hanging selections and native triple-click selections delete whole blocks only at the top level; nested blocks keep the previous behavior.

    0.138.1release notes

  • Removes wholly selected sibling blocks when a selection starts at the start of a block and ends at the start of a later sibling; ranges inside editor.isIsolated elements retain the previous behavior.

    0.138.0release notes

New APIs and options 9

  • Accepts isWordCharacter for custom boundaries when unit is 'word', matching the callback supported by Editor.word.

    0.138.0release notes

  • Accepts isWordCharacter for custom boundaries when unit is 'word', matching the callback supported by Editor.word.

    0.138.0release notes

  • Accepts isWordCharacter for custom boundaries when unit is 'word', matching the callback supported by Editor.word.

    0.138.0release notes

  • Supports select; explicit true moves the caret to the result even with an explicit at, and insertion selects by default when at is omitted.

    0.138.0release notes

  • Supports select; explicit true moves the caret to the result, while the default preserves a null selection. Use true to create a caret after inserting into an unfocused document.

    0.138.0release notes

  • Supports select; explicit true moves the caret to the result, while moving retains its existing selection-following behavior by default.

    0.138.0release notes

  • Supports select; explicit true moves the caret to the result, while moving retains its existing selection-following behavior by default.

    0.138.0release notes

  • Supports select; explicit true moves the caret to the result even with an explicit at, and splitting selects by default when at is omitted.

    0.138.0release notes

  • Adds ignore to exclude selected top-level properties from comparison, independently of the existing loose option.

    0.138.0release notes

Performance 1

  • Restores faster loose comparisons when ignore is not set, avoiding the slowdown introduced in 0.138.0.

    0.138.2release notes

Fixes and other changes 2

  • When an apply override changes inserted text, the selection follows the operation by default, and select: true selects the end of the text actually applied.

    0.138.1release notes

  • After undoing a whole-block deletion, the default behavior scrolls to the restored text instead of the start of the following block.

    0.138.1release notes

slate 0.1372 changes

New APIs and options 2

  • The editor.setNodes type now accepts the replace option.

    0.137.0release notes

  • Transforms.setNodes and editor.setNodes accept a function to compute properties per matched node.

    0.137.0release notes

slate 0.1364 changes

New APIs and options 2

  • Returns the range of the word around a point within its block; words can cross mark changes and inline links but stop at voids.

    0.136.0release notes

  • Lets you define your own word characters for word handling.

    0.136.0release notes

Behavior and default changes 1

  • The 'word' unit for deletion, movement, and Editor.before/after/positions uses Intl.Segmenter where available, so Chinese, Japanese, and Thai text without spaces is handled one word at a time.

    0.136.0release notes

Fixes and other changes 1

  • Includes text an input method is still composing.

    0.136.0release notes

slate 0.1352 changes

New APIs and options 2

  • Identifies isolated elements whose edges prevent Backspace, Delete, range deletion, and insertBreak from merging or splitting across them.

    0.135.0release notes

  • The replace option removes every property not in props in the same operation, preventing old node properties from carrying over when changing type; undo restores them.

    0.135.0release notes

slate 0.1346 changes

New APIs and options 3

  • Adds Editor.hasRange to core; DOMEditor.hasRange and ReactEditor.hasRange use it, falling back to the path check with older Slate versions.

    0.134.0release notes

  • Path, point, and range refs support Symbol.dispose so using declarations can release tracked locations automatically. TypeScript consumers need TypeScript 5.2 or later with esnext.disposable in lib, or skipLibCheck.

    0.134.0release notes

  • Adds a height option to lift matched nodes through multiple ancestors.

    0.134.0release notes

Performance 1

  • Tree-altering operations are faster by using faster array functions when copying and replacing children.

    0.134.1release notes

Fixes and other changes 2

  • Unwrapping nodes with split: true respects partial inline selections and preserves unselected portions of the inline.

    0.134.0release notes

  • Errors now include the next dirty path to help locate normalizeNode logic that keeps a node invalid.

    0.134.0release notes

slate 0.1334 changes

Fixes and other changes 4

  • Keeps unselected text outside an inline wrapper when wrapNodes splits a selection across an existing inline boundary.

    0.133.7release notes

  • Preserves selection endpoints at the end of the document when inserting fragments, so pasting over select-all removes trailing voids and empty paragraphs.

    0.133.3release notes

  • Keeps a valid insertion point when replacing a selection whose end node is removed, including when that node is read-only.

    0.133.1release notes

  • Keeps a valid insertion point when replacing a selection whose end node is removed, including when that node is a void node.

    0.133.1release notes

slate 0.1322 changes

New APIs and options 1

  • Adds a method that returns whether a range is forward, backward, or collapsed.

    0.132.0release notes

Fixes and other changes 1

  • Fixes the PropsMerge type so the merge option can return scalar property values, not just objects.

    0.132.0release notes

slate 0.1315 changes

Breaking changes 2

  • Transforms.unwrapNodes now unhangs a range by default; pass hanging: true to preserve the old behavior.

    0.131.0release notes

  • Transforms.wrapNodes now unhangs a range by default; pass hanging: true to preserve the old behavior.

    0.131.0release notes

Fixes and other changes 3

  • Backspace at the start of a block following a list or table no longer pulls that block into the list or table.

    0.131.0release notes

  • Fixes inserting a fragment into an editor whose only block is empty, which previously left an extra untyped empty block before the inserted content.

    0.131.0release notes

  • An explicit at path no longer causes a programmatic delete to refill the editor with an untyped empty block.

    0.131.0release notes

slate 0.1302 changes

Breaking changes 1

  • Deleting the editor’s only node now leaves an empty block, so the editor retains a start point for focusing or typing.

    0.130.0release notes

Performance 1

  • Only walks the top-level blocks covered by the range, so copying or cutting in a large document no longer takes time proportional to the whole document.

    0.130.1release notes

slate 0.1292 changes

Breaking changes 1

  • Deleting a character or word now removes the empty block and selects the void, instead of deleting the void.

    0.129.0release notes

Fixes and other changes 1

  • Deleting a single character next to, or inside, an empty non-void inline now removes the inline instead of skipping over it and deleting the character on its other side.

    0.129.0release notes

slate 0.1283 changes

Breaking changes 1

  • In Chrome and Safari, pressing Delete on a selected void now deletes forward instead of backward.

    0.128.0release notes

Fixes and other changes 2

  • The type signature now allows non-Range properties of Selections; functionality is unchanged.

    0.128.0release notes

  • Deleting a void backward from a cursor inside it places the cursor before the removed void; in Chrome and Safari, Delete on a selected void deletes forward.

    0.128.0release notes

slate 0.1264 changes

New APIs and options 1

  • Its types now allow setting optional node properties to null, which unsets them.

    0.126.1release notes

Behavior and default changes 1

  • Its types now allow setting optional node properties to null, which unsets them.

    0.126.1release notes

Fixes and other changes 2

  • Nested data structures inside array properties on nodes are now deeply compared when merging identical text nodes; previously array items were compared using ===.

    0.126.2release notes

  • Character distance now treats Indic conjunct clusters as a single grapheme, so character-by-character cursor movement no longer stops inside conjuncts.

    0.126.0release notes

slate 0.1246 changes

Breaking changes 1

  • Paths containing strings are no longer allowed when getting nodes.

    0.124.0release notes

Security 1

  • Property accessors are hardened against untrusted keys.

    0.124.1release notes

New APIs and options 1

  • Added a force property to normalizeNode, passed from the normalize method.

    0.124.0release notes

Fixes and other changes 3

  • Corrects the argument type for the compare option.

    0.124.1release notes

  • Corrects the argument type for the merge option.

    0.124.1release notes

  • Fixes normalization hanging when merging text under non-selectable elements.

    0.124.0release notes

slate 0.1234 changes

New APIs and options 4

  • Added as an efficient type discriminator; use it instead of Path.isPath whenever possible.

    0.123.0release notes

  • Added as an efficient type discriminator; use it instead of Point.isPoint whenever possible.

    0.123.0release notes

  • Added as an efficient type discriminator; use it instead of Range.isRange whenever possible.

    0.123.0release notes

  • Added as an efficient type discriminator; use it instead of Span.isSpan whenever possible.

    0.123.0release notes