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

Nutrient Web SDK 1.16 introduces a headless content editor API, programmatic password handling for encrypted documents, and viewer-scoped keyboard shortcuts. It also adds HTTP Model Context Protocol (MCP) server support for AI Assistant and ships a large round of memory, rendering, and stability fixes. See the [changelog](https://www.nutrient.io/guides/web/changelog.md#1.16.0) for full details.

### Breaking changes

This release includes one breaking change. Review the impact and restoration steps below before upgrading.

#### Keyboard shortcuts are now scoped to the viewer by default

Pre-1.16 versions captured the SDK’s keyboard shortcuts (search, print, undo, redo, zoom, and arrow-key pagination) across the entire host page, so pressing Command/Control-F anywhere opened the SDK search dialog. 1.16 makes `{ scope: "viewer" }` the default for the new [`keyboardShortcutScope`](https://www.nutrient.io/guides/web/knowledge-base/add-custom-keyboard-shortcuts/) option, so these shortcuts fire only while the user is interacting with the viewer.

**Impact:** Integrations that don’t set `keyboardShortcutScope` go from “shortcuts capture document-wide” to “shortcuts fire only when the user is interacting with the viewer.” This includes the initial state before the user has clicked or tabbed into the viewer, where the keystrokes now go to the browser’s native handlers (for example, Command/Control-F opens the browser’s own find dialog). Markup toolbar shortcuts (highlight, strikeout, underline, and similar) are always viewer-scoped.

**Restoring previous behavior:** Pass the explicit global form and opt every action into global capture:

```js

await NutrientViewer.load({
  //...your existing configuration
  keyboardShortcutScope: {
    scope: "global",
    interceptedActions: Object.values(NutrientViewer.KeyboardShortcutActions),
  },
});

```

You can also capture only a subset globally and leave the rest viewer-scoped. Refer to [keyboard shortcut scoping](#keyboard-shortcut-scoping) for the full set of options.

### Headless content editor API

This release adds a `contentEditor` namespace on `instance` for driving content editing programmatically, without going through the toolbar UI, together with a new `contentEditor.stateChange` event so you can react to edit-session transitions. This continues the headless direction started with the annotation APIs in 1.15.

```js

instance.addEventListener("contentEditor.stateChange", (state) => {
  // React to content editor session changes.
});

```

For more information, refer to the [headless content editor](https://www.nutrient.io/guides/web/headless/content-editor.md) and [content editor API](https://www.nutrient.io/guides/web/editor/content-editor-api.md) guides.

### Programmatic password handling for encrypted documents

A new [`onPasswordRequired`](https://www.nutrient.io/guides/web/features/password-protected-pdfs/) callback on `NutrientViewer.load()` lets you resolve passwords for encrypted documents in code instead of relying on the built-in prompt. It also supports documents that use the Dedicon encryption filter.

```js

await NutrientViewer.load({
  //...your existing configuration
  onPasswordRequired: async () => {
    // Return the password from your own UI or secret store.
    return await getDocumentPassword();
  },
});

```

For more information, refer to the [password-protected documents](https://www.nutrient.io/guides/web/features/password-protected-pdfs.md) guide.

### Keyboard shortcut scoping

The new `keyboardShortcutScope` option controls where the SDK’s keyboard shortcuts are captured. Two forms are supported.

**`viewer` (default)**

Shortcuts fire only while the user is interacting with the viewer, leaving the rest of the host page untouched:

```js

await NutrientViewer.load({
  //...your existing configuration
  keyboardShortcutScope: { scope: "viewer" },
});

```

**`global`**

Restores document-wide capture for the actions you list in `interceptedActions`. Pass every action for the pre-1.16 behavior or a subset to capture some globally and keep the rest viewer-scoped:

```js

await NutrientViewer.load({
  //...your existing configuration
  keyboardShortcutScope: {
    scope: "global",
    interceptedActions: [NutrientViewer.KeyboardShortcutActions.SEARCH],
  },
});

```

The available actions are `SEARCH`, `PRINT`, `ZOOM`, `UNDO`, `REDO`, and `PAGINATION`. This release also fixes Command/Control-`+`/`-` zoom shortcuts in Firefox, which previously never fired because of a browser keycode difference.

For more information, refer to the [keyboard shortcuts](https://www.nutrient.io/guides/web/knowledge-base/add-custom-keyboard-shortcuts.md) guide.

### AI Assistant over HTTP MCP servers

AI Assistant can now connect to HTTP MCP servers. A new public `AIAssistant.MCPHttpServerConfig` type and the `AIAssistant.AgentConfiguration.mcps` option let you wire the agent up to external tools and data sources you host.

For more information, refer to the [AI Assistant integration](https://www.nutrient.io/guides/web/ai-assistant/integrate-with-ai-assistant.md) and [AI agent tools](https://www.nutrient.io/guides/web/ai-assistant/ai-agent-tools.md) guides.

### Opt-in debug logging

A new opt-in debug logging mode surfaces detailed diagnostics to help track down initialization failures and other hard-to-reproduce issues. It’s off by default and safe to leave out of production builds.

For more information, refer to the [debug logging](https://www.nutrient.io/guides/web/troubleshooting/debug-logging.md) guide.

### Other additions

- `ToolbarItemType` is now part of the public API, and the API documentation lists every valid toolbar item type value.

- GdPicture is updated to 14.4.2. Refer to the [GdPicture changelog](https://www.nutrient.io/guides/dotnet/changelog.md#14.4.2) for details.

### Performance, rendering, and stability

- Fixes memory leaks that caused cumulative growth in DOM nodes, event listeners, and GPU memory across load and unload cycles in standalone mode, including cleanup of change-manager subscriptions, backend references, and electronic-signature font face style tags on unload.

- Fixes an intermittent hang or blank render when loading multiple viewer instances concurrently in standalone mode.

- Fixes an issue where the new page rendering architecture could display stale page content after zooming or scrolling.

- Hardens XHTML sanitization for imported comments in standalone mode, closing a clickjacking gap that previously allowed inline styles and other disallowed markup.

- Fixes password stripping when exporting PDFs in server-backed mode.

- Fixes several core rendering and geometry issues, including DeviceCMYK transparency groups with multiply and overlay blend modes rendering too dark, clipped emojis in plain-text free text annotations, a crash on PDFs with malformed GoTo or GoToR link destinations, and page-margin and measurement-snapping errors on documents whose `CropBox` or `MediaBox` have a non-zero origin.

- Additional fixes across the content editor, custom stamps, form fields, comments, measurement annotations, indexed full-text search, and dynamic font downloading.

For a full list of fixes, refer to the [changelog](https://www.nutrient.io/guides/web/changelog.md#1.16.0).

Minimum Document Engine version required: [1.5.6](https://www.nutrient.io/guides/document-engine/changelog.md#1.5.6)

For a complete list of changes, bug fixes, and improvements, refer to the [changelog](https://www.nutrient.io/guides/web/changelog.md#1.16.0). For previous release notes, refer to the [Web SDK 1.15 release notes](https://www.nutrient.io/guides/web/release-notes/1-15.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 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 10](/guides/web/release-notes/1-10.md)
- [1 2](/guides/web/release-notes/1-2.md)
- [1 15](/guides/web/release-notes/1-15.md)
- [1 13](/guides/web/release-notes/1-13.md)
- [1 3](/guides/web/release-notes/1-3.md)
- [1 14](/guides/web/release-notes/1-14.md)
- [1 6](/guides/web/release-notes/1-6.md)
- [1 5](/guides/web/release-notes/1-5.md)
- [1 7](/guides/web/release-notes/1-7.md)
- [1 8](/guides/web/release-notes/1-8.md)
- [1 4](/guides/web/release-notes/1-4.md)
- [2017 6](/guides/web/release-notes/2017-6.md)
- [2017 3](/guides/web/release-notes/2017-3.md)
- [Upgrade annotations in PSPDFKit Web 2017.8](/guides/web/release-notes/2017-8.md)
- [1 9](/guides/web/release-notes/1-9.md)
- [Update your PSPDFKit for Web to version 2017.7](/guides/web/release-notes/2017-7.md)
- [Explore new features in PSPDFKit for Web 2017.9](/guides/web/release-notes/2017-9.md)
- [Explore PSPDFKit for Web 2018.6 enhancements](/guides/web/release-notes/2018-6.md)
- [Explore PSPDFKit for Web 2018.4 features](/guides/web/release-notes/2018-4.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)
- [PSPDFKit for Web 2018.2 migration insights](/guides/web/release-notes/2018-2.md)
- [PSPDFKit for Web 2019.3 migration highlights](/guides/web/release-notes/2019-3.md)
- [Discover the new features in PSPDFKit for Web 2018.3](/guides/web/release-notes/2018-3.md)
- [2019 2](/guides/web/release-notes/2019-2.md)
- [Seamless migration to PSPDFKit for Web 2020.2](/guides/web/release-notes/2020-2.md)
- [Explore new features in PSPDFKit 2018.5](/guides/web/release-notes/2018-5.md)
- [Essential updates in PSPDFKit for Web 2019.4](/guides/web/release-notes/2019-4.md)
- [Key changes in PSPDFKit for Web 2020.1](/guides/web/release-notes/2020-1.md)
- [PSPDFKit for Web 2019.5 migration insights](/guides/web/release-notes/2019-5.md)
- [PSPDFKit Web and Server 2020.4 migration update](/guides/web/release-notes/2020-4.md)
- [Upgrade to PSPDFKit Web 2020.3 seamlessly](/guides/web/release-notes/2020-3.md)
- [Unified CRUD API enhancements for easy migration](/guides/web/release-notes/2020-5.md)
- [New features in the 2018.1 migration guide](/guides/web/release-notes/2018-1.md)
- [Seamlessly migrate to PSPDFKit for Web 2021.2](/guides/web/release-notes/2021-2.md)
- [PSPDFKit Web 2020.6 migration insights](/guides/web/release-notes/2020-6.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)
- [PSPDFKit 2022.1.1 migration changes](/guides/web/release-notes/2022-1.md)
- [Upgrade to PSPDFKit for Web 2021.1 with ease](/guides/web/release-notes/2021-1.md)
- [Explore the new features of PSPDFKit for Web 2022.3](/guides/web/release-notes/2022-3.md)
- [2021 3](/guides/web/release-notes/2021-3.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)
- [Enhancements in PSPDFKit for Web 2022.2](/guides/web/release-notes/2022-2.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)
- [Explore key updates in PSPDFKit for Web 2023.4](/guides/web/release-notes/2023-4.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)
- [Key updates in PSPDFKit for Web 2023.5](/guides/web/release-notes/2023-5.md)
- [2021 6](/guides/web/release-notes/2021-6.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)

