---
title: "1.24 release notes"
canonical_url: "https://www.nutrient.io/guides/web/release-notes/1-24/"
md_url: "https://www.nutrient.io/guides/web/release-notes/1-24.md"
last_updated: "2026-10-22T00:00:00.000Z"
description: "Lists important changes for Nutrient Web SDK 1.24"
---

Nutrient Web SDK 1.24 is a maintenance release. It narrows `isEditableComment` to the comments that already exist, so marking comments read-only no longer removes the reply editor. Document operations now save pending changes before they run, which keeps unsaved annotations when `autoSaveMode` is `DISABLED`. The note editor and the note and comment indicators get accessible names for screen readers. It also fixes custom fonts with multiword names, several text annotation editing issues, and undo and preset regressions. It fixes worker startup under a Trusted Types Content Security Policy as well. See the [changelog](https://www.nutrient.io/guides/web/changelog.md#1.24.0) for full details.

### isEditableComment no longer governs replies

`isEditableComment` used to receive a temporary draft comment for every thread, and returning `false` for that draft removed the reply editor. The callback’s contract covers existing comments only, so drafts now skip it. A callback that returns `false` marks saved comments read-only, and the user can still reply:

```js

NutrientViewer.load({
  // Before 1.24, this also removed the reply editor from every thread.
  // It now only prevents editing and deleting existing comments.
  isEditableComment: () => false,
});

```

**If you relied on the draft to block replies**, that check no longer runs. A draft used to arrive with `pageIndex` set to `null`, so a callback that returned `comment.pageIndex!== null` stopped replies in every thread. In server-backed mode, collaboration permissions now govern reply rights through the `reply` action on the `comments` content type. In standalone mode, replace the editor area with the `ui.commentThread.editor` slot. The slot applies to every thread, so it also removes the editor for the first comment of a new thread. `instance.setIsEditableComment()` follows the same contract. For more information, refer to the [comments](https://www.nutrient.io/guides/web/annotations/comments-and-replies/comments.md) and [collaboration permissions](https://www.nutrient.io/guides/web/collaboration-permissions/defining-permissions.md) guides.

### Document operations save unsaved changes first

With `autoSaveMode` set to `DISABLED`, `instance.applyOperations()` deleted every unsaved annotation in the document, on every page, and `hasUnsavedChanges()` then reported `false`. The Document Editor uses the same path, so rotating, moving, duplicating, or removing a page in its UI and clicking Save lost the same annotations. The viewer now saves pending changes before it applies the operations, as printing already does. The operations then act on a document that contains them, so an annotation on a rotated or moved page moves with its page:

```js

await instance.applyOperations([
  { type: "rotatePages", pageIndexes: [1], rotateBy: 90 },
]);

instance.hasUnsavedChanges(); // false: the pending changes were saved first.

```

If the save fails, the returned promise rejects with a `SaveError` and the document isn’t changed. In server-backed mode, the save sends the pending changes to Document Engine before the page operation. The page operation itself already went to Document Engine at once in every mode. One case changes for code that relied on the old behavior. In server-backed mode, deleting annotations and then reimporting them with the same IDs through the `applyInstantJson` operation used to bring them back. This worked because the old behavior dropped the pending deletes. The deletes are now saved first, and Document Engine doesn’t recreate a deleted record ID, so a reimport needs new IDs. For more information, refer to the [autosave](https://www.nutrient.io/guides/web/features/saving.md) guide.

### Screen reader support for notes and comments

The note editor and the note and comment indicators have accessible names. Screen readers announce a selected note with its content and name its Close button. For more information, refer to the [accessibility](https://www.nutrient.io/guides/web/viewer/accessibility.md) guide.

### Trusted Types Content Security Policy

Workers now start under a Trusted Types Content Security Policy that allowlists the documented policies. The failure broke text selection highlights in PDFs and prevented Office documents from opening. The SDK now creates its Trusted Types policy once per bundle, so `'allow-duplicates'` isn’t needed. For more information, refer to the [Content Security Policy](https://www.nutrient.io/guides/web/troubleshooting/content-security-policy.md) guide.

Document Engine 1.5.6 or later can run this release. In server-backed mode, using `SearchType.WORD_BASED`, removing password protection during PDF export, and removing annotation notes after an XFDF roundtrip require Document Engine 1.16.0 or later. Document-defined annotation tab order, `Annotation.createdBy`, `overprintPreview`, and `blackRendering` require Document Engine 1.18.0 or later. Compound measurements are standalone mode only and are ignored by Document Engine. See the [Web SDK and Document Engine compatibility requirements](https://www.nutrient.io/guides/document-engine/viewer/client-integration/web.md#version-compatibility).

For a complete list of changes, bug fixes, and improvements, refer to the [changelog](https://www.nutrient.io/guides/web/changelog.md#1.24.0). For previous release notes, refer to the [Web SDK 1.23 release notes](https://www.nutrient.io/guides/web/release-notes/1-23.md). We appreciate your feedback and contributions as we continue to enhance Nutrient Web SDK.
---

## Related pages

- [1 0](/guides/web/release-notes/1-0.md)
- [1 1](/guides/web/release-notes/1-1.md)
- [1 10](/guides/web/release-notes/1-10.md)
- [1 11](/guides/web/release-notes/1-11.md)
- [1 12](/guides/web/release-notes/1-12.md)
- [1 13 1](/guides/web/release-notes/1-13-1.md)
- [1 13](/guides/web/release-notes/1-13.md)
- [1 14](/guides/web/release-notes/1-14.md)
- [1 15](/guides/web/release-notes/1-15.md)
- [1 16](/guides/web/release-notes/1-16.md)
- [1 17](/guides/web/release-notes/1-17.md)
- [1 18](/guides/web/release-notes/1-18.md)
- [1 19](/guides/web/release-notes/1-19.md)
- [1 2](/guides/web/release-notes/1-2.md)
- [1 20](/guides/web/release-notes/1-20.md)
- [1 21](/guides/web/release-notes/1-21.md)
- [1 22](/guides/web/release-notes/1-22.md)
- [1 23](/guides/web/release-notes/1-23.md)
- [1 3](/guides/web/release-notes/1-3.md)
- [1 4](/guides/web/release-notes/1-4.md)
- [1 5](/guides/web/release-notes/1-5.md)
- [1 6](/guides/web/release-notes/1-6.md)
- [1 7](/guides/web/release-notes/1-7.md)
- [1 8](/guides/web/release-notes/1-8.md)
- [1 9](/guides/web/release-notes/1-9.md)
- [2017 3](/guides/web/release-notes/2017-3.md)
- [2017 6](/guides/web/release-notes/2017-6.md)
- [Update your PSPDFKit for Web to version 2017.7](/guides/web/release-notes/2017-7.md)
- [Upgrade annotations in PSPDFKit Web 2017.8](/guides/web/release-notes/2017-8.md)
- [Explore new features in PSPDFKit for Web 2017.9](/guides/web/release-notes/2017-9.md)
- [New features in the 2018.1 migration guide](/guides/web/release-notes/2018-1.md)
- [PSPDFKit for Web 2018.2 migration insights](/guides/web/release-notes/2018-2.md)
- [Discover the new features in PSPDFKit for Web 2018.3](/guides/web/release-notes/2018-3.md)
- [Explore PSPDFKit for Web 2018.4 features](/guides/web/release-notes/2018-4.md)
- [Explore new features in PSPDFKit 2018.5](/guides/web/release-notes/2018-5.md)
- [Explore PSPDFKit for Web 2018.6 enhancements](/guides/web/release-notes/2018-6.md)
- [Explore the new features in PSPDFKit 2018.7](/guides/web/release-notes/2018-7.md)
- [Key updates in PSPDFKit for Web 2019.1](/guides/web/release-notes/2019-1.md)
- [2019 2](/guides/web/release-notes/2019-2.md)
- [PSPDFKit for Web 2019.3 migration highlights](/guides/web/release-notes/2019-3.md)
- [Essential updates in PSPDFKit for Web 2019.4](/guides/web/release-notes/2019-4.md)
- [PSPDFKit for Web 2019.5 migration insights](/guides/web/release-notes/2019-5.md)
- [Key changes in PSPDFKit for Web 2020.1](/guides/web/release-notes/2020-1.md)
- [Seamless migration to PSPDFKit for Web 2020.2](/guides/web/release-notes/2020-2.md)
- [Upgrade to PSPDFKit Web 2020.3 seamlessly](/guides/web/release-notes/2020-3.md)
- [PSPDFKit Web and Server 2020.4 migration update](/guides/web/release-notes/2020-4.md)
- [Unified CRUD API enhancements for easy migration](/guides/web/release-notes/2020-5.md)
- [PSPDFKit Web 2020.6 migration insights](/guides/web/release-notes/2020-6.md)
- [Upgrade to PSPDFKit for Web 2021.1 with ease](/guides/web/release-notes/2021-1.md)
- [Seamlessly migrate to PSPDFKit for Web 2021.2](/guides/web/release-notes/2021-2.md)
- [2021 3](/guides/web/release-notes/2021-3.md)
- [PSPDFKit 2021.4 migration guide for seamless updates](/guides/web/release-notes/2021-4.md)
- [Migration guide for PSPDFKit 2021.5](/guides/web/release-notes/2021-5.md)
- [2021 6](/guides/web/release-notes/2021-6.md)
- [PSPDFKit 2022.1.1 migration changes](/guides/web/release-notes/2022-1.md)
- [Enhancements in PSPDFKit for Web 2022.2](/guides/web/release-notes/2022-2.md)
- [Explore the new features of PSPDFKit for Web 2022.3](/guides/web/release-notes/2022-3.md)
- [PSPDFKit for Web 2022.4 migration overview](/guides/web/release-notes/2022-4.md)
- [Key improvements in PSPDFKit for Web 2022.5](/guides/web/release-notes/2022-5.md)
- [Discover the key updates in PSPDFKit for Web 2023.1](/guides/web/release-notes/2023-1.md)
- [PSPDFKit 2023.2 migration and updates](/guides/web/release-notes/2023-2.md)
- [Key updates in PSPDFKit for Web 2023.3](/guides/web/release-notes/2023-3.md)
- [Explore key updates in PSPDFKit for Web 2023.4](/guides/web/release-notes/2023-4.md)
- [Key updates in PSPDFKit for Web 2023.5](/guides/web/release-notes/2023-5.md)
- [Essential Nutrient Web SDK 2024.1 migration tips](/guides/web/release-notes/2024-1.md)
- [2024 2](/guides/web/release-notes/2024-2.md)
- [2024 3](/guides/web/release-notes/2024-3.md)
- [2024 4](/guides/web/release-notes/2024-4.md)
- [2024 5](/guides/web/release-notes/2024-5.md)
- [2024 7](/guides/web/release-notes/2024-7.md)
- [2024 8](/guides/web/release-notes/2024-8.md)
- [Upgrading Nutrient Web SDK](/guides/web/release-notes/upgrading.md)

