# What changed in slate-react

> 100 changes in slate-react 0.118 to 0.145 from its official release notes, upgrade guides and advisories: 10 breaking, 16 new APIs and options. Each one cited. Sources checked 2026-10-18. HTML: https://unstale.sh/npm/slate-react/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## slate-react 0.145

### New APIs and options

- Slate accepts a controlled value prop; pass back the exact object from onValueChange to avoid reapplying it. External values are applied while preserving selection and history, and value cannot be combined with initialValue. (0.145.0) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.145.0)

### Fixes and other changes

- Pending DOM selection changes are processed before blur, so a selection change just before the editor loses focus reaches editor.selection. (0.145.0) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.145.0)

## slate-react 0.142

### New APIs and options

- Adds a DOM point lookup that returns null instead of throwing when the point cannot be resolved. (0.142.0) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.142.0)
- Adds a DOM range lookup that returns null instead of throwing when the range cannot be resolved. (0.142.0) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.142.0)
- Adds an event range lookup that returns null instead of throwing when the range cannot be resolved. (0.142.0) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.142.0)
- Adds an error handler for broken rendering contracts; errors are passed to the browser's reportError by default. (0.142.0) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.142.0)

## slate-react 0.141

### Breaking changes

- Requires the two affinity hooks and insertionPoint query; structurally constructed editors and editor mocks must supply them, while createEditor adds them automatically. (0.141.0) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.141.0)

### New APIs and options

- Adds a query for consistent insertion at inline and mark boundaries. (0.141.0) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.141.0)
- Adds an opt-in editor hook for configuring insertion at inline boundaries; it defaults to null, preserving existing behavior. (0.141.0) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.141.0)
- Adds an opt-in editor hook for configuring insertion at mark boundaries; it defaults to null, preserving existing behavior. (0.141.0) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.141.0)

### Behavior and default changes

- Slate React disables native insertion when affinity changes the receiving point, while retaining compatibility with older supported Slate peers that lack the helper. (0.141.0) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.141.0)

### Fixes and other changes

- When typing changes receiving leaves, committed Android input uses action reconciliation so a native mutation does not remain rendered in the old leaf. (0.141.0) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.141.0)
- Implicit text, fragment, and inline-node insertion follows configured affinity rules; Editor.marks reports the receiving leaf’s marks. (0.141.0) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.141.0)

## slate-react 0.140

### Breaking changes

- When the browser resolves a drop position outside the editor, dropped data now goes to the current selection, or the document end if there is no selection; internally dragged content stays where it is. (0.140.0) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.140.0)

### New APIs and options

- Adds the suppressThrow option; findEventRange returns null when the range cannot be resolved. (0.140.0) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.140.0)

### Behavior and default changes

- The editor root exposes the placeholder to assistive technology through aria-placeholder while the placeholder is shown. (0.140.0) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.140.0)

### Fixes and other changes

- Keeps the DOM and Slate value in sync when an insertText override rejects native text input, including insertions at decoration boundaries. (0.140.1) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.140.1)
- The visual placeholder is marked aria-hidden so assistive technology does not read it as content. (0.140.0) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.140.0)

## slate-react 0.138

### Breaking changes

- Whole-block deletion of hanging and native triple-click selections is limited to top-level blocks; nested blocks keep the previous behavior, preventing cuts or drags across cells from removing them in editors without editor.isIsolated. (0.138.1) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.138.1)

### Behavior and default changes

- Word-navigation shortcuts use native selection boundaries so Option/Ctrl+Arrow respects native punctuation and language boundaries, falling back to Slate's word transform when native movement is unavailable. (0.138.0) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.138.0)

### Fixes and other changes

- Optional createHyperscript options explicitly accept undefined, keeping published types compatible with exactOptionalPropertyTypes after the TypeScript 6 upgrade. (0.138.3) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.138.3)
- When Tab or Shift+Tab focuses Editable, an existing editor selection is restored while browser placement is kept when there is no selection and mouse-based caret placement is preserved. (0.138.3) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.138.3)
- Read-only editors remain outside the tab order unless tabIndex is provided. (0.138.3) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.138.3)
- Caller-provided Editable event handlers are called in read-only mode, while Slate's editing behavior is skipped. (0.138.3) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.138.3)
- Optional Editable options explicitly accept undefined, keeping published types compatible with exactOptionalPropertyTypes after the TypeScript 6 upgrade. (0.138.3) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.138.3)
- Optional Slate options explicitly accept undefined, keeping published types compatible with exactOptionalPropertyTypes after the TypeScript 6 upgrade. (0.138.3) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.138.3)
- Optional useSelected options explicitly accept undefined, keeping published types compatible with exactOptionalPropertyTypes after the TypeScript 6 upgrade. (0.138.3) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.138.3)
- After undoing a whole-block deletion, the default scrollSelectionIntoView scrolls to the restored text instead of the start of the following block. (0.138.1) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.138.1)
- The browser's native triple-click selection stays outside isolated elements; inside them, triple-click still selects only the current block's contents. (0.138.0) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.138.0)
- Called when keyboard navigation moves a selection already synchronized with the DOM, including native movement between text lines; custom callbacks can keep the caret clear of sticky headers. (0.138.0) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.138.0)

## slate-react 0.136

### New APIs and options

- 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.0) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.136.0)
- Lets you define your own word characters for word handling. (0.136.0) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.136.0)

### Behavior and default changes

- Includes text that an input method is still composing. (0.136.0) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.136.0)
- Word deletion, movement, and Editor.before/after/positions use Intl.Segmenter where available, so Chinese, Japanese, and Thai text without spaces is handled one word at a time. (0.136.0) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.136.0)

## slate-react 0.134

### Fixes and other changes

- Restores the DOM after a deletion that changes nothing, preventing the next composition's text from being removed while typing. (0.134.1) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.134.1)
- Keeps text composed into a new paragraph when its block type changes or nodes are inserted, moved, or removed before composition ends. (0.134.1) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.134.1)
- Allows deleting a selected void with Backspace or Delete when composition never ended. (0.134.1) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.134.1)
- Prevents an Android crash when typing starts in an empty editor as the placeholder appears by avoiding a DOM restore that undoes React's placeholder changes. (0.134.0) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.134.0)
- Fixes caret movement and interrupted composition when typing on Android immediately after toggling a mark with a collapsed selection. (0.134.0) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.134.0)
- Removes Chrome's composed-text copy from the previous leaf before inserting text into the selected leaf, preventing duplicate text. (0.134.0) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.134.0)
- Removes text the browser composes into a selected void element, preventing browser-inserted text from remaining in the void's DOM. (0.134.0) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.134.0)
- Removes the source void when it is dragged to a new position, preventing duplicate voids when the dragged selection is collapsed. (0.134.0) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.134.0)

## slate-react 0.133

### Breaking changes

- Keeps the caret on the new line without adding zero-width characters, while preserving selection offsets and copied text; requires slate-dom 0.133.5 or newer for matching DOM selection mapping. (0.133.5) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.133.5)

### Performance

- Text and leaf components no longer re-render every text node in a block when only one changes; they compare the parent properties they use rather than the parent object itself. (0.133.5) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.133.5)

### Fixes and other changes

- Moves the caret into an adjacent empty text node when an arrow key leaves an editable inline, so padding does not leave the caret drawn inside the inline. (0.133.8) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.133.8)
- Scrolls the caret into view when an edit changes the selection even if the DOM selection already matches the editor, including Backspace between empty paragraphs. (0.133.8) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.133.8)
- The DOM selection is synced before an Editable onClick handler runs, so editor.selection reflects the click rather than the previous selection. (0.133.7) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.133.7)
- In Chrome and Safari, pressing ArrowUp from the block below moves the caret to the empty last line of a block ending with a newline. (0.133.6) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.133.6)
- Slate copies initialValue nodes already used by another editor, allowing both Slate components to render and edit independently; requires slate-dom 0.133.6 or newer. (0.133.6) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.133.6)
- In Chromium, Shift-clicking text extends the selection from a selected void rather than leaving it collapsed in the void. (0.133.6) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.133.6)
- Deletion overrides are called in WebKit when Backspace at the start or Delete at the end of a document does not emit beforeinput. (0.133.5) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.133.5)
- An empty block renders right-to-left when its nearest sibling block with text is right-to-left, so a new line after Hebrew or Arabic text starts on the right. (0.133.5) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.133.5)
- Expanded selections are synced before composition starts, preventing Firefox crashes and replaced text from remaining in the document. (0.133.5) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.133.5)
- Input, selection, and history events from native contenteditable regions inside non-editable containers no longer affect the surrounding Slate editor; Slate text and event hosts in custom editable islands are preserved. (0.133.5) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.133.5)
- Reads the DOM selection when a beforeinput event arrives so input after a selection change goes where the caret is, even before the browser fires selectionchange. (0.133.4) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.133.4)
- Text-node decorations are clipped to the node's range, ignoring decorations for other nodes and using correct offsets for cross-node ranges. (0.133.3) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.133.3)
- Flush backward text deletions without waiting for another input event, preserve the typing delay when no action is pending, cancel superseded timers, and avoid an extra change notification when restoring unchanged marks. (0.133.2) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.133.2)
- Restore Chromium's structural DOM changes before applying multiline composition commits, preventing duplicated text while preserving intervening React updates. (0.133.2) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.133.2)
- Input, paste and drop events dispatched by script are handled again, as in 0.127.1. (0.133.0) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.133.0)

## slate-react 0.132

### Breaking changes

- Editable's extra props are now typed as div attributes instead of textarea attributes, so textarea-only props such as rows, cols, maxLength, wrap and value fail to type-check. (0.132.0) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.132.0)
- The default now scrolls just enough to reveal the caret instead of centering it; pass a custom scrollSelectionIntoView to keep centering. (0.132.0) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.132.0)

## slate-react 0.131

### Behavior and default changes

- autoFocus now focuses through ReactEditor.focus, selecting the document start when no selection exists so typing can begin right away. (0.131.0) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.131.0)
- The prop is optional; when omitted, Slate uses existing editor.children, and throws if they are empty with a hint to pass initialValue={[]} for an empty editor. (0.131.0) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.131.0)

### Fixes and other changes

- The caret stays in editor text when the browser moves it to a position Slate cannot represent, preventing typed characters from being inserted twice. (0.131.0) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.131.0)
- DOM selection changes are ignored while focus is outside the editor, except when it is read-only, preventing Firefox selection movement from jumping the editor selection. (0.131.0) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.131.0)
- An empty initialValue is loaded as one empty block, giving the editor a place to put the cursor. (0.131.0) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.131.0)
- A render within the 100 ms selection-change throttle now applies the clicked selection instead of writing the previous selection back to the DOM. (0.131.0) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.131.0)
- The void spacer is unselectable, preventing a darker band at the edge of selections that include a void element in Chromium. (0.131.0) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.131.0)

## slate-react 0.130

### Behavior and default changes

- Drag-and-drop deletes through editor.deleteFragment, like cut does, so plugins that guard deletion apply to both. (0.130.2) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.130.2)

### Fixes and other changes

- Dropping text back onto its own selection is now a no-op. (0.130.2) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.130.2)
- Moving whole lines by dragging or cutting moves top-level blocks as blocks and nested content without its trailing line break, avoiding empty lines and merged containers. (0.130.2) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.130.2)
- Shift-clicking a void element now extends the selection to it instead of collapsing the selection onto the void. (0.130.1) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.130.1)
- The default placeholder style adds -webkit-user-select: none so iOS Safari can't partially select placeholder text. (0.130.1) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.130.1)
- Fixes typed text appearing in reverse order after a soft break at the end of a leaf in Chrome. (0.130.0) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.130.0)

## slate-react 0.129

### Fixes and other changes

- Android beforeinput events now resolve against the editor's selection instead of a stale DOM node map, preventing typed characters from being lost before the editor re-renders. (0.129.0) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.129.0)
- When a different editor is passed to an already mounted <Slate>, the new editor is now initialized from initialValue instead of keeping empty children. (0.129.0) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.129.0)

## slate-react 0.128

### Breaking changes

- Input, paste, and drop events dispatched by scripts are ignored, preventing scripts from inserting content without user action. (0.128.0) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.128.0)
- Deleting a void element backward from a cursor inside it now places the cursor before the removed void instead of in the following node. (0.128.0) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.128.0)
- In Chrome and Safari, pressing Delete on a selected void now deletes forward instead of backward. (0.128.0) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.128.0)

## slate-react 0.127

### Tooling

- Declared @types/lodash (^4.14.0) as an optional peer dependency so consumers can resolve the package's shipped Lodash type declarations. (0.127.1) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.127.1)
- Declared @types/react (>=18.0.0) as an optional peer dependency so consumers can resolve the package's shipped React type declarations. (0.127.1) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.127.1)

## slate-react 0.126

### New APIs and options

- Add suppressThrow to return false instead of throwing when the element can no longer be found in the editor. (0.126.0) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.126.0)

### Fixes and other changes

- Composition selection-sync skips Selection.collapseToEnd when the live DOM selection has no ranges, preventing InvalidStateError and editor unmounting. (0.126.4) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.126.4)
- Fixes IME composition being cancelled on the first character typed into an empty leaf on Android, which left the first character behind as a separate, uncomposed character. (0.126.3) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.126.3)
- Beforeinput target ranges that point to DOM nodes no longer resolvable to Slate nodes no longer let a findPath error escape and crash the app. (0.126.0) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.126.0)

## slate-react 0.125

### Fixes and other changes

- Fixes Firefox contenteditable text input breaking when the editor mounts. (0.125.1) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.125.1)
- Fixes the caret jumping to the wrong position when the decorate prop changes asynchronously. (0.125.1) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.125.1)

## slate-react 0.124

### Fixes and other changes

- Adds the missing RenderTextProps export so developers can import it from slate-react. (0.124.2) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.124.2)
- Slate component now handles editor updates properly by including editor in the useEffect dependency array. (0.124.0) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.124.0)

## slate-react 0.123

### New APIs and options

- Added an efficient type discriminator; use it instead of Path.isPath whenever possible. (0.123.0) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.123.0)
- Added an efficient type discriminator; use it instead of Point.isPoint whenever possible. (0.123.0) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.123.0)
- Added an efficient type discriminator; use it instead of Range.isRange whenever possible. (0.123.0) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.123.0)
- Added an efficient type discriminator; use it instead of Span.isSpan whenever possible. (0.123.0) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.123.0)

## slate-react 0.120

### Breaking changes

- Fixes the peer dependency requirement to be >=0.119.0, resolving the containsShadowAware import error. (0.120.0) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.120.0)

### Behavior and default changes

- Scrolls to the focus point of expanded selections. (0.120.0) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.120.0)

### Fixes and other changes

- Allows onValueChange and onSelectionChange to trigger on the same frame, fixing cases where one callback was not called. (0.120.0) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.120.0)

## slate-react 0.119

### Fixes and other changes

- Fixes an editor crash when the editor is placed inside Shadow DOM and the user types on Android. (0.119.0) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.119.0)

## slate-react 0.118

### Behavior and default changes

- The Editable component adds translate='no' so its DOM is skipped by translation. (0.118.2) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.118.2)

### Fixes and other changes

- Composition events fired from nested input or textarea elements are ignored. (0.118.2) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.118.2)
- Fixes onValueChange not firing when replacing text after selecting it from right to left. (0.118.2) — [release notes](https://github.com/ianstormtaylor/slate/releases/tag/slate-react%400.118.2)
