1.16 release notes
RSSNutrient 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 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 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:
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 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.
instance.addEventListener("contentEditor.stateChange", (state) => { // React to content editor session changes.});For more information, refer to the headless content editor and content editor API guides.
Programmatic password handling for encrypted documents
A new onPasswordRequired 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.
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 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:
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:
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 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 and AI agent tools 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 guide.
Other additions
ToolbarItemTypeis 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 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
CropBoxorMediaBoxhave 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.
Minimum Document Engine version required: 1.5.6
For a complete list of changes, bug fixes, and improvements, refer to the changelog. For previous release notes, refer to the Web SDK 1.15 release notes. We appreciate your feedback and contributions as we continue to enhance Nutrient Web SDK.