> For the complete documentation index, see [llms.txt](https://docs.apryse.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.apryse.com/web/changelogs/version-12/v12-0-0.md).

# Version 12.0.0 Changelog (2026-07-08)

## WebViewer Core

The WebViewer Core changelog covers low-level API, engine, and infrastructure changes that power the Web SDK.

### New

#### DOCX Editor

* Added experimental `Core.compareDocx` API for comparing two DOCX files.
* Added `acceptTrackedChanges` and `rejectTrackedChanges` batch APIs to `TrackedChangeManager` for efficiently accepting or rejecting multiple tracked changes in a single operation.
* Updated the `trackedChangesUpdated` event to fire with a `(trackedChange, action)` payload, where `action` is one of the new `TrackedChangeUpdateAction` enum values (`ADD`, `MODIFY`, `DELETE`).
* Removed deprecated DOCX Editor public APIs that were scheduled for removal in v12.0. These APIs were superseded by `TrackedChangeManager` and other internal APIs.
* Added `selectTrackedChange` API and `trackedChangeSelected` document event that enables programmatic selection of tracked changes and notification of selection state changes.
* Added `navigateToTrackedChange` API to `TrackedChangeManager` that moves the cursor to a tracked change and scrolls it into view. Deprecated `moveCursorToTrackedChange` to be replaced by new API.

#### DocumentViewer

* Removed deprecated `DocumentViewer` read-only mode APIs and the related `readOnlyModeChanged` event from the public `DocumentViewer` API.

#### Embedded JavaScript

* Replaced the embedded PDF JavaScript iframe/eval runtime with a SandboxJS-based runtime for improved isolation and continued support for form events, global state, and async PDF JavaScript APIs.

#### FreeText

* Moved `disableEnterKeypress` and `enableEnterKeypress` to the `RichTextEditor` namespace.
* Added `EditBoxManager.getEditor`.
* Updated `setEditMode` to no longer return a promise.

#### Spreadsheet Editor

* Added support for loading XLS and CSV files.
* Added public `Chart` and `ChartManager` APIs for programmatic chart interaction, including methods to get, select, move, and resize charts.
* Added a `changeType` property to the `dataChanged` event that indicates the type of change.
* Migrated `Workbook` and `SpreadsheetEditorClipboard` instances to `SpreadsheetEditorManager`, exposing them via `getWorkbook()` and `getSpreadsheetEditorClipboard()`.

#### Widgets

* Added support for rendering appearances for checkbox widgets.
* Added support for rendering appearances for text widgets.
* Added `reason`, `location`, and `contactInfo` options to `Core.AnnotationManager.sign` so signing apps can embed signer metadata in the signed PDF without dropping down to PDFNet.
* Deprecated the `isSignedDigitally` API.

### Fixes

#### Annotations

* Fixed an issue where iOS-generated XFDF was not parsed correctly.
* Fixed an issue where special characters in XFDF tag attributes and contents were not properly encoded.

#### DOCX Editor

* Fixed an issue where the cursor would jump to the start of a table when selecting and changing multiple cells.
* Fixed an issue when selecting floating tables.
* Updated `getTrackedChanges` API to return tracked changes ordered by document position.

#### Embedded JavaScript

* Fixed an issue where some user variables were getting reset between script runs.

#### Forms

* Fixed an issue where embedded JavaScript form fields would throw a `ReferenceError` when their Keystroke/Format scripts referenced helpers defined in the document's Init/Open scripts.
* Fixed an issue where the COMB option was not effective when set.

#### General

* Fixed an issue where scrolling down and removing page ranges in large documents caused console errors.

#### Measurements

* Fixed an issue where the previous scale's precision was applied to the current scale.
* Fixed an issue where distance measurements in fractional-foot format could display incorrect comma placement for values of 100 ft or greater.

#### Signatures

* Fixed an issue where signing a signature widget would fail when a non-signature widget overlapped at the same location.

#### Spreadsheet Editor

* Fixed an issue where undoing sheet deletion showed charts on the wrong sheet.
* Fixed an issue where undo didn't work after renaming a sheet.
* Fixed an issue where chart resizing caused inconsistent size changes.
* Fixed an issue where chart selection handles would become offset from the chart after zooming and switching sheets.
* Fixed an issue where deleting the active sheet would not render charts on the new sheet correctly.
* Fixed an issue where the canvas of a selected chart would sometimes appear behind other charts during move or resize operations.

#### Text selection

* Fixed an issue where search highlights and text selection rectangles could appear on incorrect glyphs for right-to-left (RTL) and bidirectional text in XOD and Office documents.

#### Workers

* Fixed an issue where workers could remain alive after WebViewer was unmounted, causing remounting to fail to initialize workers again.

## WebViewer UI

The WebViewer UI changelog covers user interface, customization, and workflow enhancements available through the Web SDK.

### New

#### General

* Added a new `theme` constructor option to allow setting the theme when constructing WebViewer.
* Added the `WebViewer.InitialEditModes` enum for setting initial edit modes in DOCX and Spreadsheet Editors via the constructor.

#### Multi-viewer

* Enabled MultiViewer and MultiTab to function concurrently.

#### Notes panel

* Added the ability to search and sort annotations by number in the Notes panel.
* Added a new autosave comments feature with APIs to enable, disable, and configure the autosave time interval.

#### Tools

* Added a new `ToolGroupToggleButton` component that allows toggling the visibility of a `groupedItems` element.

### Fixes

#### FreeText annotations

* Fixed an issue where spell check was not appearing for free text annotations.

#### General

* Fixed an issue where flyout positioning would break when a header and footer were added around the viewer.
* Fixed an issue where switching between different editors multiple times could show the toolbar from the previous editor.
* Fixed an issue where scales created using the calibration tool would have slight rounding errors.
* Fixed an issue where the chevron color in the custom scale modal was being overridden.
* Fixed an issue where form field indicators could appear vertically offset from their associated form fields after recent display mode positioning changes.
* Fixed an issue where the page navigation component did not appear while scrolling.

#### Measurements

* Fixed an issue where the measurement input value was updated while the user was still typing.

#### Multi-viewer

* Fixed an issue where the stamp preview would be in a bad state in the second viewer.

#### Notes panel

* Fixed an issue where the reply area would clear when unfocused while containing text.
* Fixed an issue where annotation numbering required the Notes panel to be open to be enabled.
* Fixed an issue where the raw markdown format briefly displayed when editing a comment with a mention.
* Fixed an issue where clicking cancel on an edited note would clear the editor rather than discarding the edit.

#### Spreadsheet Editor

* Fixed an issue where renaming a sheet did not enable the undo/redo button.

#### WebViewer Server

* Fixed an issue where the `displayChangeTracking` option had no effect when rendering a DOCX file where tracked changes should not appear.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.apryse.com/web/changelogs/version-12/v12-0-0.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
