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.
Document Engine 1.5.6 or later can run this release. However, instance.exportPDF() requires Document Engine 1.12.0 or later because earlier versions require legacy query-parameter authentication for the /pdf endpoint. 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. See the Web SDK and Document Engine compatibility requirements.
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.