Univer 1.5.0 adds dedicated chart sheets, stacked line charts, and error bars. Pro's free tier now covers more editing and local output workflows. This release also reduces memory use during formula calculation, adds controls for Sheets interactions and Board layout, and improves Office file compatibility.
New features
Chart sheets, stacked line charts, and error bars
Give a chart its own tab while keeping its source cells in regular worksheets in the same workbook. Move charts between sheets with undo and redo. With the Sheets Chart Facade loaded, use workbook.insertChartSheet(info, { name, index }) to set the tab name and zero-based position, and getPrimaryChart() to access the main chart. A chart sheet can also continuously fit its main chart to the viewport using zoomToFit. Older snapshots without this setting use fixed zoom. Chart sheets guide
Create stacked and 100% stacked line charts. The chart editor and the builder and live chart APIs also support per-series error bars for basic 2D column, bar, line, and scatter charts. Use setErrorBars() and clearErrorBars() to control direction, end caps, styling, and error amounts. Supported amounts include fixed values, percentages, standard deviation, standard error, and positive or negative values from custom fields in the chart's data source. Scatter charts support separate X and Y error bars. Error bars guide
Editable Board diagrams and a dedicated LaTeX package
Use planLayout() to arrange a diagram or adjust connector routes, endpoints, labels, and text fitting. Inspect the returned diagnostics before applying a ready plan with applyLayoutPlan(). Applying a plan is undoable, and the resulting shapes and connectors remain editable. Imported tree branches can be collapsed or expanded with setTreeBranchCollapsed(). Rendered analysis reports issues such as label overflow and text that does not fit, and screenshot bounds can account for rendered paths and labels. Board Facade reference
The new @univerjs-pro/boards-latex-ui package renders LaTeX in Board text. Register UniverBoardsLatexUIPlugin after the Boards UI plugin. Plugin reference
Commit Slides text before saving
Load @univerjs-pro/slides-ui/facade to check presentation.isTextEditing() or call await presentation.endTextEditingAsync() before a custom save action. Save after it returns true. A return value of false means the draft could not be committed or IME composition is still in progress. Slides Facade reference
New configuration options
Sheets interaction settings
Set these options directly on UniverSheetsUIPlugin, or under sheets in UniverSheetsCorePreset.
| Option | Default | Behavior |
|---|---|---|
selectionAnimation
| true
| Animates the desktop selection outline when clicking between cells. The system's reduced-motion preference takes precedence. |
enableFillHandle
| true
| Shows the desktop fill handle. Fill commands and Facade APIs still work when it is hidden. |
warnBeforeDragOverwrite
| true
| Confirms before a dragged range overwrites existing cells. Move validation and undo/redo still apply when the prompt is disabled. |
Board layout and embedded UI
FBoard.planLayout()acceptsgraph,routes,ports,labels, andtextmodes. Graph layout acceptselementIds,fixedElementIds, andfeedbackConnectorIdsfor scope, plusdirection,layerGap,itemGap,origin, andmaxNodesfor placement. It defaults to horizontal layout, a layer gap of 100, an item gap of 48, and a limit of 500 nodes. Route, port, and label passes can target specificconnectorIds. Graph and text layout acceptmaximumWidthGrowthto cap text-driven widening, with a range of 1–2 and a default of 2. Board layout optionsanalyzeRenderedLayout()acceptsmaximumAutomaticLabelDistancein Board units for checking automatic label placement. The limit is opt-in. Board models also exposeconnectionPositionModefor automatic or fixed connector endpoints,lineJumpfor crossing styles, andlayoutOccupancy: "frame"to allow routes through a container’s interior. UsesetContainerStyle()withtitleOffsetXto offset a container caption, or set a swimlane’sheaderPositiontoleftortop. Rendered layout analysis- Custom canvas floating DOM layers can set
IFloatDom.preventBrowserZoomto suppress browser zoom gestures while forwarding events.eventOptionsconfigures nativepassiveandcapturesettings per wheel or pointer event. Events without an override continue to use React forwarding. Floating DOM layer API
Office import and export
These changes require the corresponding native Exchange artifacts.
- Charts. Preserve dedicated chart sheets in XLSX and supported stacked line chart groupings in XLSX, DOCX, and PPTX.
- PivotTables. Preserve more saved report layouts, merged headers, shared caches, and slicer, timeline, and PivotChart connections. Editable imported reports are stored as PivotTable resources so a second static copy does not appear in worksheet cells. Applications reading those report values should load the snapshot in a compatible frontend and read the rendered report. Re-import the original XLSX if an older snapshot retained a static copy or lost merge information.
- Optional Excel refresh. Set
deferPivotCalculation: trueon a Sheet XLSX export through Exchange Node to let Excel calculate eligible PivotTables on refresh. It defaults tofalse, which exports static results as usual. The supported profile is a new, simple PivotTable with one unfiltered, unsorted text row field, one numeric SUM measure, and grand totals, sourced from a separate two-column worksheet range. The matching Office binding is required for this option. - DOCX equations. Supported legacy Equation Editor and desktop MathType equations import as editable formulas and export as native Word equations. Objects that cannot be converted are preserved as OLE attachments.
- XLSX fidelity and memory. Preserve saved external-link values during offline conversion, including files saved after a failed link refresh. Retain supported custom OOXML metadata, significant whitespace, and implicit intersection formulas. Large exports of plain cell values use less peak memory.
- Native free exports. With the updated adapters, supported XLSX, DOCX, PPTX, and PDF exports can continue with a license watermark after the monthly allowance of 10 successful watermark-free exports. Watermark decisions use the completed export count when a conversion starts, so concurrent conversions can produce additional unwatermarked files.
Improvements and fixes
- Formulas. Reduce calculation memory in JavaScript and native engines and reuse work for repeated criteria and range lookups. Improve Excel compatibility for complex numbers,
ISOWEEKNUM,WEEKNUMwith type 21, andPV. - Sheets. Reuse more rendering work during scrolling, including on mobile. Keep open cell drafts through external updates and preserve whole-row and whole-column references through structural edits. Improve validation dropdowns for merged cells and preserve dropdown ranges when pasting. Prevent PivotTable expansion from overwriting occupied cells and reduce the work needed to check for those cells.
- Editing and accessibility. Improve keyboard access, menu dismissal, RTL separators, gradient stop editing, and IME confirmation in dialogs. Context menu buttons execute their configured
commandId, using the menu item ID when no override is specified. - Collaboration and history. Improve incremental Slides updates and selective undo, and keep Sheets notes attached to the correct cells through concurrent row and column operations. Version comparisons retain a visible sheet.
- Embeds and PDF. Improve embedded editor interactions on mobile and harden PDF tile and annotation rendering. Matching native Office and PDF bindings also fix Worker lifecycle issues.
Breaking changes and upgrading
Migrate custom Worker entry scripts
The deprecated root Worker exports announced in 1.4.0 have been removed. Built-in Worker presets already use the dedicated entries. Update custom browser and Node.js Worker scripts using the following table.
| New entry point | API |
|---|---|
@univerjs/rpc/worker
| UniverRPCWorkerThreadPlugin
|
@univerjs/rpc-node/worker
| UniverRPCNodeWorkerPlugin
|
@univerjs/sheets-formula/worker
| UniverRemoteSheetsFormulaPlugin
|
@univerjs/sheets-filter-ui/worker
| UniverSheetsFilterUIWorkerPlugin
|
@univerjs/engine-render/worker
| DocumentLayoutSession
|
@univerjs-pro/bases/worker
| UniverRemoteBasesPlugin
|
@univerjs-pro/bases-dashboard/worker
| UniverRemoteBaseDashboardPlugin
|
@univerjs-pro/sheets-pivot-chart/worker
| UniverSheetsPivotChartWorkerPlugin
|
@univerjs/docs/worker
| Register UniverDocsWorkerPlugin in place of startDocsLayoutWorker.
|
@univerjs-pro/pdfs-ui/worker
| Register UniverPdfsUIWorkerPlugin in place of startPdfPageThumbnailWorker.
|
Update integrations that use the affected exports
- Register
UniverBoardsLatexUIPluginexplicitly for Boards. ImportDocsLatexRenderServicefrom@univerjs-pro/docs-latex. Font injection is handled by the renderer, and theinjectRatexFontsexport has been removed. - Replace
IDrawingObjectListItem,IDrawingObjectListPanelLabels, andIDrawingObjectListPanelPropswithIObjectListPanelItem,IObjectListPanelLabels, andIObjectListPanelBasePropsfrom@univerjs/drawing-ui. - Remove direct imports of
CELL_INVERTED_INDEX_CACHEandFORMULA_REF_TO_ARRAY_CACHEfrom@univerjs/engine-formula. Cache ownership now belongs to the formula engine instance.
Upgrade before saving new chart data
Upgrade the Univer and Univer Pro packages used by your application together. For self-hosted deployments, update collaboration, rendering, and native Exchange components before writing chart sheets or the new stacked line chart types. Older readers may misinterpret the new data. Use matching native binaries for the Office/PDF changes and the native formula engine.