# What changed in @embedpdf/plugin-selection

> 49 changes in @embedpdf/plugin-selection 3 from its official release notes, upgrade guides and advisories: 17 breaking, 26 new APIs and options. Each one cited. Sources checked 2026-11-06. HTML: https://unstale.sh/npm/@embedpdf/plugin-selection/

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

## @embedpdf/plugin-selection 3

### Breaking changes

- Renames the drag setting to specify its unit in pixels. (3.0.0) — [release notes](https://github.com/embedpdf/embed-pdf-viewer/blob/7c93291c80c6f784675c5a04589ea9a3a62f11ed/packages/plugin/selection/CHANGELOG.md#300)
- Replaces menuAnchor with getAnchor and renames SelectionMenuAnchor to SelectionAnchor. (3.0.0) — [release notes](https://github.com/embedpdf/embed-pdf-viewer/blob/7c93291c80c6f784675c5a04589ea9a3a62f11ed/packages/plugin/selection/CHANGELOG.md#300)
- Replaces snapshot and now returns a reference-stable snapshot. (3.0.0) — [release notes](https://github.com/embedpdf/embed-pdf-viewer/blob/7c93291c80c6f784675c5a04589ea9a3a62f11ed/packages/plugin/selection/CHANGELOG.md#300)
- Replaces rectsForPage with listRects. (3.0.0) — [release notes](https://github.com/embedpdf/embed-pdf-viewer/blob/7c93291c80c6f784675c5a04589ea9a3a62f11ed/packages/plugin/selection/CHANGELOG.md#300)
- Replaces segmentsForPage with listSegments. (3.0.0) — [release notes](https://github.com/embedpdf/embed-pdf-viewer/blob/7c93291c80c6f784675c5a04589ea9a3a62f11ed/packages/plugin/selection/CHANGELOG.md#300)
- Replaces selectedPages with listSelectedPages. (3.0.0) — [release notes](https://github.com/embedpdf/embed-pdf-viewer/blob/7c93291c80c6f784675c5a04589ea9a3a62f11ed/packages/plugin/selection/CHANGELOG.md#300)
- Methods that return promises reject with not-ready when no document is available, consistently across frameworks. (3.0.0) — [release notes](https://github.com/embedpdf/embed-pdf-viewer/blob/7c93291c80c6f784675c5a04589ea9a3a62f11ed/packages/plugin/selection/CHANGELOG.md#300)
- Selection methods and related snapshots, endpoints, ranges, anchors, pointers, and selected-page results use page references. (3.0.0) — [release notes](https://github.com/embedpdf/embed-pdf-viewer/blob/7c93291c80c6f784675c5a04589ea9a3a62f11ed/packages/plugin/selection/CHANGELOG.md#300)
- Selection writes without doc.text.select now reject with permission-denied; unknown pages return not-found. (3.0.0) — [release notes](https://github.com/embedpdf/embed-pdf-viewer/blob/7c93291c80c6f784675c5a04589ea9a3a62f11ed/packages/plugin/selection/CHANGELOG.md#300)
- Requires doc.text.copy permission whether or not text is selected; a signal cancels the read immediately, while started page text is kept for the next read. (3.0.0) — [release notes](https://github.com/embedpdf/embed-pdf-viewer/blob/7c93291c80c6f784675c5a04589ea9a3a62f11ed/packages/plugin/selection/CHANGELOG.md#300)
- Requires its own doc.text.copy permission; a signal cancels the read immediately. (3.0.0) — [release notes](https://github.com/embedpdf/embed-pdf-viewer/blob/7c93291c80c6f784675c5a04589ea9a3a62f11ed/packages/plugin/selection/CHANGELOG.md#300)
- Replaces the abbreviated …Geom type names with SelectionHandleGeometry. (3.0.0) — [release notes](https://github.com/embedpdf/embed-pdf-viewer/blob/7c93291c80c6f784675c5a04589ea9a3a62f11ed/packages/plugin/selection/CHANGELOG.md#300)
- Replaces the abbreviated …Geom function names with selectionHandleGeometry(). (3.0.0) — [release notes](https://github.com/embedpdf/embed-pdf-viewer/blob/7c93291c80c6f784675c5a04589ea9a3a62f11ed/packages/plugin/selection/CHANGELOG.md#300)
- Replaces beginAt with beginGestureAt. (3.0.0) — [release notes](https://github.com/embedpdf/embed-pdf-viewer/blob/7c93291c80c6f784675c5a04589ea9a3a62f11ed/packages/plugin/selection/CHANGELOG.md#300)
- Replaces ensurePage with ensureLoaded(page): Promise<void>. (3.0.0) — [release notes](https://github.com/embedpdf/embed-pdf-viewer/blob/7c93291c80c6f784675c5a04589ea9a3a62f11ed/packages/plugin/selection/CHANGELOG.md#300)
- The host gesture-state method is replaced as the public state API by isSelecting(). (3.0.0) — [release notes](https://github.com/embedpdf/embed-pdf-viewer/blob/7c93291c80c6f784675c5a04589ea9a3a62f11ed/packages/plugin/selection/CHANGELOG.md#300)
- Pages now carries segments only; boxes are available as derived views through segment.rect and rectsForPage(). (3.0.0) — [release notes](https://github.com/embedpdf/embed-pdf-viewer/blob/7c93291c80c6f784675c5a04589ea9a3a62f11ed/packages/plugin/selection/CHANGELOG.md#300)

### New APIs and options

- Adds handle-arming behavior that records the grabbed point and starts the drag from the opposite end. (3.0.0) — [release notes](https://github.com/embedpdf/embed-pdf-viewer/blob/7c93291c80c6f784675c5a04589ea9a3a62f11ed/packages/plugin/selection/CHANGELOG.md#300)
- Adds a public geometry export for selection page geometry. (3.0.0) — [release notes](https://github.com/embedpdf/embed-pdf-viewer/blob/7c93291c80c6f784675c5a04589ea9a3a62f11ed/packages/plugin/selection/CHANGELOG.md#300)
- Adds a live selection color setting; null follows the viewer accent, with selected text shown at 35%. (3.0.0) — [release notes](https://github.com/embedpdf/embed-pdf-viewer/blob/7c93291c80c6f784675c5a04589ea9a3a62f11ed/packages/plugin/selection/CHANGELOG.md#300)
- Adds a public geometry export for converting a content point to PDF coordinates. (3.0.0) — [release notes](https://github.com/embedpdf/embed-pdf-viewer/blob/7c93291c80c6f784675c5a04589ea9a3a62f11ed/packages/plugin/selection/CHANGELOG.md#300)
- Adds a bundle-safe public contract entry for sibling features to use selection protocols without plugin wiring. (3.0.0) — [release notes](https://github.com/embedpdf/embed-pdf-viewer/blob/7c93291c80c6f784675c5a04589ea9a3a62f11ed/packages/plugin/selection/CHANGELOG.md#300)
- Adds a bundle-safe host contract entry for selection protocols. (3.0.0) — [release notes](https://github.com/embedpdf/embed-pdf-viewer/blob/7c93291c80c6f784675c5a04589ea9a3a62f11ed/packages/plugin/selection/CHANGELOG.md#300)
- Adds text selection independent of a framework, using engine text geometry and exposing highlight geometry through the shared interaction system. (3.0.0) — [release notes](https://github.com/embedpdf/embed-pdf-viewer/blob/7c93291c80c6f784675c5a04589ea9a3a62f11ed/packages/plugin/selection/CHANGELOG.md#300)
- Adds access to the selection range. (3.0.0) — [release notes](https://github.com/embedpdf/embed-pdf-viewer/blob/7c93291c80c6f784675c5a04589ea9a3a62f11ed/packages/plugin/selection/CHANGELOG.md#300)
- Adds access to current selection settings. (3.0.0) — [release notes](https://github.com/embedpdf/embed-pdf-viewer/blob/7c93291c80c6f784675c5a04589ea9a3a62f11ed/packages/plugin/selection/CHANGELOG.md#300)
- Adds live handle settings, including color and shadow. (3.0.0) — [release notes](https://github.com/embedpdf/embed-pdf-viewer/blob/7c93291c80c6f784675c5a04589ea9a3a62f11ed/packages/plugin/selection/CHANGELOG.md#300)
- Adds a kernel event hook emitted at gesture end and carrying the range. (3.0.0) — [release notes](https://github.com/embedpdf/embed-pdf-viewer/blob/7c93291c80c6f784675c5a04589ea9a3a62f11ed/packages/plugin/selection/CHANGELOG.md#300)
- Adds an event hook for selection setting changes. (3.0.0) — [release notes](https://github.com/embedpdf/embed-pdf-viewer/blob/7c93291c80c6f784675c5a04589ea9a3a62f11ed/packages/plugin/selection/CHANGELOG.md#300)
- Adds text extraction for a specified range. (3.0.0) — [release notes](https://github.com/embedpdf/embed-pdf-viewer/blob/7c93291c80c6f784675c5a04589ea9a3a62f11ed/packages/plugin/selection/CHANGELOG.md#300)
- Adds an API to reset selection settings. (3.0.0) — [release notes](https://github.com/embedpdf/embed-pdf-viewer/blob/7c93291c80c6f784675c5a04589ea9a3a62f11ed/packages/plugin/selection/CHANGELOG.md#300)
- The plugin is rewritten around the kernel create() controller hook and exposes a public contract and host lens. (3.0.0) — [release notes](https://github.com/embedpdf/embed-pdf-viewer/blob/7c93291c80c6f784675c5a04589ea9a3a62f11ed/packages/plugin/selection/CHANGELOG.md#300)
- Adds a configurable drag threshold in place of the hard-coded threshold. (3.0.0) — [release notes](https://github.com/embedpdf/embed-pdf-viewer/blob/7c93291c80c6f784675c5a04589ea9a3a62f11ed/packages/plugin/selection/CHANGELOG.md#300)
- Returns both selection endpoints or null. (3.0.0) — [release notes](https://github.com/embedpdf/embed-pdf-viewer/blob/7c93291c80c6f784675c5a04589ea9a3a62f11ed/packages/plugin/selection/CHANGELOG.md#300)
- Adds a handle view over a Stage. (3.0.0) — [release notes](https://github.com/embedpdf/embed-pdf-viewer/blob/7c93291c80c6f784675c5a04589ea9a3a62f11ed/packages/plugin/selection/CHANGELOG.md#300)
- Accepts configuration and registers live settings over SELECTION_DEFAULTS. (3.0.0) — [release notes](https://github.com/embedpdf/embed-pdf-viewer/blob/7c93291c80c6f784675c5a04589ea9a3a62f11ed/packages/plugin/selection/CHANGELOG.md#300)
- Declares selection state across frameworks with hasSelection, isSelecting, range, and pages. (3.0.0) — [release notes](https://github.com/embedpdf/embed-pdf-viewer/blob/7c93291c80c6f784675c5a04589ea9a3a62f11ed/packages/plugin/selection/CHANGELOG.md#300)
- Adds a named type for the selection state returned by the state hook. (3.0.0) — [release notes](https://github.com/embedpdf/embed-pdf-viewer/blob/7c93291c80c6f784675c5a04589ea9a3a62f11ed/packages/plugin/selection/CHANGELOG.md#300)
- Adds an API to select a page. (3.0.0) — [release notes](https://github.com/embedpdf/embed-pdf-viewer/blob/7c93291c80c6f784675c5a04589ea9a3a62f11ed/packages/plugin/selection/CHANGELOG.md#300)
- Adds a public geometry export for content segments. (3.0.0) — [release notes](https://github.com/embedpdf/embed-pdf-viewer/blob/7c93291c80c6f784675c5a04589ea9a3a62f11ed/packages/plugin/selection/CHANGELOG.md#300)
- Adds a public geometry export for content text quads. (3.0.0) — [release notes](https://github.com/embedpdf/embed-pdf-viewer/blob/7c93291c80c6f784675c5a04589ea9a3a62f11ed/packages/plugin/selection/CHANGELOG.md#300)
- Adds an API to update live selection settings across documents. (3.0.0) — [release notes](https://github.com/embedpdf/embed-pdf-viewer/blob/7c93291c80c6f784675c5a04589ea9a3a62f11ed/packages/plugin/selection/CHANGELOG.md#300)
- Returns the named SelectionState type. (3.0.0) — [release notes](https://github.com/embedpdf/embed-pdf-viewer/blob/7c93291c80c6f784675c5a04589ea9a3a62f11ed/packages/plugin/selection/CHANGELOG.md#300)

### Behavior and default changes

- Makes selection extension available publicly; it was previously host-only. (3.0.0) — [release notes](https://github.com/embedpdf/embed-pdf-viewer/blob/7c93291c80c6f784675c5a04589ea9a3a62f11ed/packages/plugin/selection/CHANGELOG.md#300)
- Adds framework-independent handle geometry and drag policies that account for rotated text, rotated pages, and RTL selection boundaries. (3.0.0) — [release notes](https://github.com/embedpdf/embed-pdf-viewer/blob/7c93291c80c6f784675c5a04589ea9a3a62f11ed/packages/plugin/selection/CHANGELOG.md#300)
- Makes line-at-point selection available publicly; it was previously host-only. (3.0.0) — [release notes](https://github.com/embedpdf/embed-pdf-viewer/blob/7c93291c80c6f784675c5a04589ea9a3a62f11ed/packages/plugin/selection/CHANGELOG.md#300)
- Makes word-at-point selection available publicly; it was previously host-only. (3.0.0) — [release notes](https://github.com/embedpdf/embed-pdf-viewer/blob/7c93291c80c6f784675c5a04589ea9a3a62f11ed/packages/plugin/selection/CHANGELOG.md#300)
- Routes touch long-press selection through explicit gesture metadata, reports whether word or line selection succeeded, and supports optional feedback without swallowing unhandled gestures. (3.0.0) — [release notes](https://github.com/embedpdf/embed-pdf-viewer/blob/7c93291c80c6f784675c5a04589ea9a3a62f11ed/packages/plugin/selection/CHANGELOG.md#300)

### Fixes and other changes

- Re-reads a page's text geometry after an annotation is flattened into it, making text added by a flattened free-text note selectable. (3.0.0) — [release notes](https://github.com/embedpdf/embed-pdf-viewer/blob/7c93291c80c6f784675c5a04589ea9a3a62f11ed/packages/plugin/selection/CHANGELOG.md#300)
