github dream-num/univer v1.5.0
🛠️ Release v1.5.0

49 minutes ago

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.

Sheets Core configuration

Board layout and embedded UI

  • FBoard.planLayout() accepts graph, routes, ports, labels, and text modes. Graph layout accepts elementIds, fixedElementIds, and feedbackConnectorIds for scope, plus direction, layerGap, itemGap, origin, and maxNodes for 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 specific connectorIds. Graph and text layout accept maximumWidthGrowth to cap text-driven widening, with a range of 1–2 and a default of 2. Board layout options
  • analyzeRenderedLayout() accepts maximumAutomaticLabelDistance in Board units for checking automatic label placement. The limit is opt-in. Board models also expose connectionPositionMode for automatic or fixed connector endpoints, lineJump for crossing styles, and layoutOccupancy: "frame" to allow routes through a container’s interior. Use setContainerStyle() with titleOffsetX to offset a container caption, or set a swimlane’s headerPosition to left or top. Rendered layout analysis
  • Custom canvas floating DOM layers can set IFloatDom.preventBrowserZoom to suppress browser zoom gestures while forwarding events. eventOptions configures native passive and capture settings 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: true on a Sheet XLSX export through Exchange Node to let Excel calculate eligible PivotTables on refresh. It defaults to false, 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, WEEKNUM with type 21, and PV.
  • 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 UniverBoardsLatexUIPlugin explicitly for Boards. Import DocsLatexRenderService from @univerjs-pro/docs-latex. Font injection is handled by the renderer, and the injectRatexFonts export has been removed.
  • Replace IDrawingObjectListItem, IDrawingObjectListPanelLabels, and IDrawingObjectListPanelProps with IObjectListPanelItem, IObjectListPanelLabels, and IObjectListPanelBaseProps from @univerjs/drawing-ui.
  • Remove direct imports of CELL_INVERTED_INDEX_CACHE and FORMULA_REF_TO_ARRAY_CACHE from @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.

Full changelog for Univer v1.4.0…v1.5.0

Don't miss a new univer release

NewReleases is sending notifications on new releases.