---
title: "2.0 release notes"
canonical_url: "https://www.nutrient.io/guides/document-authoring/release-notes/2-0-0/"
md_url: "https://www.nutrient.io/guides/document-authoring/release-notes/2-0-0.md"
last_updated: "2026-10-29T00:00:00.000Z"
description: "Spreadsheet editing, XLSX import and export, SheetJSON persistence, and PDF export, plus editor actions you can run from your own controls in Document Authoring SDK 2.0."
---

Nutrient Document Authoring SDK 2.0 adds spreadsheet editing and processing. Applications can import XLSX files, store spreadsheets as SheetJSON, and export them as XLSX or PDF.

This release also adds typed editor action calls and custom text context-menu items. Applications can build command buttons that use the editor’s registered actions.

## Spreadsheets

Spreadsheet support covers a browser editor, formula calculation, and APIs to import, save, and export spreadsheets.

### Spreadsheet editor

The new browser editor provides a grid, formula bar, sheet tabs, context menus, and standard spreadsheet keyboard shortcuts. Its toolbar includes zoom, undo and redo, font and color controls, borders, alignment, text wrapping, merging, number formats, and download. The **View** menu toggles gridlines, and **Page setup** controls page settings.

Users can copy and paste within the editor or between the editor and other applications. The built-in download menu exports the current sheet as PDF or the complete spreadsheet as XLSX.

Applications create an editor with `createSpreadsheetEditor()`. One `DocAuthSystem` handles both documents and spreadsheets, and `detectFileKind()` enables applications to route files from a shared picker to the correct editor.

For setup and editor details, refer to the [spreadsheet getting started](https://www.nutrient.io/guides/document-authoring/spreadsheets/getting-started.md) and [spreadsheet editor](https://www.nutrient.io/guides/document-authoring/spreadsheets/editor.md) guides.

### Formulas

The spreadsheet editor calculates `SUM`, `AVERAGE`, `MIN`, `MAX`, `COUNT`, and `COUNTA`. Formulas can use arithmetic and comparison operators, cell ranges as function arguments, and references to other sheets. When a user changes a cell, the editor recalculates dependent formulas across the spreadsheet as part of the same undo step.

The SDK preserves most other formulas and their stored results during XLSX import and export, but it doesn’t recalculate them. For the supported expression syntax and the behavior of other formulas, refer to the [spreadsheet formulas](https://www.nutrient.io/guides/document-authoring/spreadsheets/formulas.md) guide.

### Import, save, and export

Use `importSpreadsheet()` to open XLSX or SheetJSON. Large imports can report progress and support cancellation. Use `createSpreadsheetFromPlaintext()` to create a spreadsheet with one sheet, either blank or with text in cell A1.

SheetJSON is the native spreadsheet format. `saveSpreadsheet()` and `loadSpreadsheet()` preserve all spreadsheet data that Document Authoring supports. Use SheetJSON as the working copy. Then export to XLSX when another application needs the file.

The `export()` method creates XLSX or PDF output. PDF export includes every visible sheet by default, or one sheet when the application passes its zero-based index. The PDF uses the spreadsheet’s page setup, including paper size, orientation, scale, fit to page, margins, centering, and row and column headings.

For format support and examples, refer to the [import and load](https://www.nutrient.io/guides/document-authoring/spreadsheets/import-and-load.md), [save and export](https://www.nutrient.io/guides/document-authoring/spreadsheets/save-and-export.md), and [SheetJSON](https://www.nutrient.io/guides/document-authoring/spreadsheets/sheetjson.md) guides.

## Run actions from your own controls

Use [`editor.executeAction()`](https://www.nutrient.io/api/document-authoring/types/docautheditor/#executeaction) with the [`actionCalls`](https://www.nutrient.io/api/document-authoring/variables/actioncalls/) builders to run built-in commands. Each builder documents its arguments and checks their types in TypeScript. For custom actions or IDs known only at runtime, pass an `ActionCall` object with `id` and `args`.

[`editor.isActionRegistered()`](https://www.nutrient.io/api/document-authoring/types/docautheditor/#isactionregistered) checks whether an action exists, and [`editor.isActionEnabled()`](https://www.nutrient.io/api/document-authoring/types/docautheditor/#isactionenabled) checks whether it can run. Document permission checks still apply when the editor processes an edit. Execution rechecks availability and validates arguments for SDK handlers. A rejected call returns an error through its promise. Custom and replacement handlers must validate their own arguments.

## Add custom text context-menu items

Register custom actions alongside [`defaultActions`](https://www.nutrient.io/api/document-authoring/variables/defaultactions/). Add items with [`ui.contextMenu`](https://www.nutrient.io/api/document-authoring/types/uioptions/#contextmenu) when creating the editor or [`editor.setContextMenuConfig()`](https://www.nutrient.io/api/document-authoring/types/docautheditor/#setcontextmenuconfig) at runtime. Host items appear after built-in items and follow the same registration and availability checks.

The configuration supports text menus, including text in table cells and shapes. It doesn’t configure image or shape-object menus or add submenus.

## Declare which editor modes enable custom actions

The public [`ActionCapability`](https://www.nutrient.io/api/document-authoring/types/actioncapability/) type and optional action `capabilities` describe what a custom command does. These capabilities enable read or view commands in view mode while blocking document changes. Custom actions without explicit capabilities still require document-change permission.

## Migration impact

Built-in toolbar controls, shortcuts, palette commands, and supported context-menu items now use the action registry. The editor hides controls whose actions are omitted from [`setActions()`](https://www.nutrient.io/api/document-authoring/types/docautheditor/#setactions). It disables registered actions that can’t run. These controls use replacement handlers, and shortcuts now respect `isEnabled()`.

Start with the upgraded `defaultActions` when adding custom commands. If you use a smaller list, compare it with the 46 new built-in action IDs in the [2.0 migration guide](https://www.nutrient.io/guides/document-authoring/migration-guides/2-0-migration-guide.md). Existing custom IDs that now match built-in IDs become replacement handlers.

Comment-panel reply, edit, resolve, and delete commands, tracked-change Accept and Reject commands, and ruler gestures keep their existing execution paths.

## Reliability fixes

- Runtime actions, toolbar configuration, and custom context-menu items survive document switches.

- A custom `isEnabled()` exception or invalid icon doesn’t break the toolbar. UI action failures are logged; public invocation rejects with the handler’s error.

- Replacement handlers can define their own argument requirements without inheriting the SDK handler’s validators.

- The command palette finds actions by their full names.

- Text context menus open in view mode. Read commands can run, and mutations remain disabled.

For registration, invocation, mode checks, and context-menu examples, refer to the [actions and toolbar](https://www.nutrient.io/guides/document-authoring/customize/actions-and-toolbar.md) guide. The SDK’s downloadable example project includes an Actions and Toolbar demo and a Context Menu demo.

For the complete SDK release summary, refer to the [changelog](https://www.nutrient.io/guides/document-authoring/changelog.md#2.0.0).
---

## Related pages

- [1 15 0](/guides/document-authoring/release-notes/1-15-0.md)
- [1 20 0](/guides/document-authoring/release-notes/1-20-0.md)
- [1 21 0](/guides/document-authoring/release-notes/1-21-0.md)
- [1 22 0](/guides/document-authoring/release-notes/1-22-0.md)

