diff --git a/.changeset/purple-walls-kiss.md b/.changeset/purple-walls-kiss.md
new file mode 100644
index 000000000..7c09ab93d
--- /dev/null
+++ b/.changeset/purple-walls-kiss.md
@@ -0,0 +1,5 @@
+---
+'slate': patch
+---
+
+Reverted #4804 as it triggered an exception when inserting text with multi-block selection
diff --git a/packages/slate/src/transforms/text.ts b/packages/slate/src/transforms/text.ts
index 2fc90dbea..4e587a437 100644
--- a/packages/slate/src/transforms/text.ts
+++ b/packages/slate/src/transforms/text.ts
@@ -487,8 +487,7 @@ export const TextTransforms: TextTransforms = {
if (!voids && Editor.void(editor, { at: end })) {
return
}
- const start = Range.start(at)
- const pointRef = Editor.pointRef(editor, start)
+ const pointRef = Editor.pointRef(editor, end)
Transforms.delete(editor, { at, voids })
at = pointRef.unref()!
Transforms.setSelection(editor, { anchor: at, focus: at })
diff --git a/packages/slate/test/transforms/insertText/selection/block-across.tsx b/packages/slate/test/transforms/insertText/selection/block-across.tsx
new file mode 100644
index 000000000..7d4da232f
--- /dev/null
+++ b/packages/slate/test/transforms/insertText/selection/block-across.tsx
@@ -0,0 +1,26 @@
+/** @jsx jsx */
+import { Transforms } from 'slate'
+import { jsx } from '../../..'
+
+export const run = editor => {
+ Transforms.insertText(editor, 'a')
+}
+export const input = (
+
+
+
+ first paragraph
+
+
+ second
+ paragraph
+
+
+)
+export const output = (
+
+
+ a paragraph
+
+
+)