dream-num/univer
 Watch   
 Star   
 Fork   
15 days ago
univer

🐢 Release v0.25.0

🎊 Univer@v0.25.1

[!IMPORTANT] 📢 1.0 Release Coming Soon

We are working hard on the official release of Univer 1.0, which will be a major milestone for the project. Stay tuned!


What's New?

This version only includes some bug fixes in Univer Pro, with no feature updates.

📢 Join the Discussion

Have questions, feedback, or ideas? Reach out to us at:


Full Changelog (2026-06-27)

2026-05-30 17:58:52
univer

📐 Release v0.25.0

🎊 Univer@v0.25.0

[!IMPORTANT] 📢 1.0 Release Coming Soon

We are working hard on the official release of Univer 1.0, which will be a major milestone for the project. Stay tuned!

🚧 Work In Progress

The following features are actively under development. Some modules are already available, and the full experience will be delivered gradually in subsequent versions:

Direction Status Description
Performance Optimization 🔄 Ongoing Performance tuning for the core engine and rendering pipeline
Base 功能 🔄 In development Multi-dimensional table (Base) functionality
Docs Features 🔄 In development Document editing and reusable editor components
Slides Features 🔄 In development Development and iteration of slide editing capabilities

📝 Docs Table

Docs Table receives significant enhancements across both Univer and Univer Pro, delivering a more complete table editing experience in documents.

Univer:

  • Polished table rendering, selection behavior, and contextual menus
  • Restored document zoom functionality with smoother zoom controls
  • Added Facade APIs for programmatic table insertion and manipulation
  • Improved paragraph spacing defaults for modern document layouts
  • Enhanced clipboard support for tables (copy, paste, and paste-without-formatting)

Univer Pro:

  • Full table editing capabilities: insert/delete rows and columns, merge/unmerge cells, resize rows/columns, and move tables
  • Table borders: set border styles, widths, colors, and background fills
  • Table sorting and header row configuration
  • Column type configuration support
  • Horizontal scrollbar support for wide tables
  • Canvas-based table rendering with drag-to-resize interactions
  • Comprehensive Facade APIs for table operations

Facade API Example:

const doc = univerAPI.getActiveDocument();

// Insert a 3x4 table at the current cursor position
doc.insertTable(3, 4);

// Insert a table at a specific position
doc.insertTable(3, 4, { startIndex: 10 });

🎨 Docs Ecosystem (Pro)

A suite of new document editing modules is now available in Univer Pro, enabling rich document authoring beyond tables:

Module Description
Docs Shape Insert and edit shapes in documents, with shape text editing and floating toolbars
Docs Callout Insert callout blocks with customizable background colors and an emoji picker
Docs Code Block Insert code blocks with syntax highlighting and language selection
Docs List Enhanced list editing with custom bullets, prefix/suffix settings, and start-number configuration
Docs Quote Insert quote blocks for styled quotations

These modules are integrated with the license plugin and include configuration schemas for customization.


📊 Pivot Table Facade API (Pro)

The pivot table facade API has been enhanced with more comprehensive control:

  • Added FPivotTable facade class with methods for updating fields, source ranges, collapse states, and value filters
  • Added pivot-related enums to FEnum for easier programmatic configuration
  • Added a dedicated pivot table facade example

🌍 Internationalization

Thai Language Support

Univer now supports Thai language text rendering in documents, including proper character shaping and line breaking for Thai scripts.

New Language Support

This release adds support for 7 new languages across 34 packages, expanding Univer's global reach:

  • ar-SA Arabic (العربية)

  • de-DE German (Deutsch)

  • id-ID Indonesian (Bahasa Indonesia)

  • it-IT Italian (Italiano)

  • pl-PL Polish (Polski)

  • pt-BR Portuguese Brazilian (Português Brasileiro)

  • zh-HK Chinese Traditional Hong Kong (繁體中文 香港)

  • PR: #6958


⚠️ Breaking Changes

Locale Namespace Restructure

All locale keys have been restructured to use package-name prefixes as namespaces. This is a global change across nearly all packages.

Before After
'button.confirm' 'find-replace.button.confirm'
'permission.filterErr' 'sheets-filter-ui.permission.filterErr'

Each package now owns exactly one namespace that matches its package name. Core and UI layers of the same feature use different namespaces (e.g., sheets-filter and sheets-filter-ui).

If you maintain custom locale overrides or custom packages, update your locale keys accordingly.

As part of this restructure, the following language packages have been added or removed. Update your imports accordingly:

Added:

  • @univerjs/data-validation
  • @univerjs/docs-thread-comment-ui
  • @univerjs/sheets-data-validation
  • @univerjs/sheets-filter
  • @univerjs/sheets-hyper-link
  • @univerjs/sheets-table
  • @univerjs-pro/edit-history-loader

Removed:

  • @univerjs/sheets-find-replace (Locale files deleted entirely)
  • @univerjs/sheets-sort (Locale content merged into sheets-sort-ui)

Example:

// Added packages: import their locales if you use them standalone
+ import dataValidationLocale from '@univerjs/data-validation/locale/en-US';
+ import sheetsDataValidationLocale from '@univerjs/sheets-data-validation/locale/en-US';
+ import sheetsFilterLocale from '@univerjs/sheets-filter/locale/en-US';
+ import sheetsHyperLinkLocale from '@univerjs/sheets-hyper-link/locale/en-US';
+ import sheetsTableLocale from '@univerjs/sheets-table/locale/en-US';

// Removed packages: remove their locale imports
- import sheetsSortLocale from '@univerjs/sheets-sort/locale/en-US';

Removed Deprecated Data Validation APIs

The following deprecated FWorkbook APIs in @univerjs/sheets-data-validation have been removed:

Removed API Alternative
FWorkbook.addDataValidation Use FRange.setDataValidation or commands directly
FWorkbook.removeDataValidation Use FRange.setDataValidation(null) or commands directly
FWorkbook.updateDataValidation Use FRange.setDataValidation or commands directly
FWorkbook.getDataValidation Use FWorksheet.getDataValidations
FWorkbook.getValidatorStatus Use FWorksheet.getValidatorStatusAsync

Additionally, list option serialization utilities have been moved from sheets-data-validation to sheets. If you were importing these utilities directly, update your imports.


⚡ Performance & Stability

Memory Leak Fixes

Fixed memory leaks in the before-close service and ribbon service caused by improper RxJS subscription cleanup.

Frozen Area Ghosting

Fixed ghosting artifacts in frozen areas when scrolling sheets.

Large Spreadsheet Scrolling Lag Fix

Fixed scrolling lag in large spreadsheets, improving scrolling smoothness.

Collaboration Image Upload

Fixed pasted base64 images not being uploaded correctly in collaborative document editing.


🐛 Bug Fixes

  • Find & Replace (#6970): Fixed abnormal scrolling behavior when navigating matches across worksheets.
  • Formula Facade (#6947): Fixed an issue with the onCalculationResultApplied API in worker threads.
  • Filter (#6954): Facade commands now register correctly without requiring the UI plugin.
  • Table (#6964, #6965): Fixed an issue where Table filter rows affected other worksheets.
  • Table (#6946): Fixed issues related to Table formula references.
  • Sheet (#6976): Fixed an issue where scrolling a Sheet upward before reaching the boundary triggered scrolling in the outer container.
  • Sheet (#6957): Fixed an issue where setting custom on empty cells caused borders to disappear in some scenarios.

Thanks to community contributor @IMSupperkaka for their contribution to this release:

  • Data Validation (#6942): Fixed missing commas in dropdown list options.

📢 Join the Discussion

Have questions, feedback, or ideas? Reach out to us at:


Full Changelog (2026-05-30)

2026-05-23 11:36:02
univer

📐 Release v0.24.0

🎊 Univer@v0.24.0

[!IMPORTANT] 📢 1.0 Release Coming Soon

We are working hard on the official release of Univer 1.0, which will be a major milestone for the project. Stay tuned!

🚧 Work In Progress

The following features are actively under development. Some modules are already available, and the full experience will be delivered gradually in subsequent versions:

Direction Status Description
Performance Optimization 🔄 Ongoing Performance tuning for the core engine and rendering pipeline
Docs Features 🔄 In development Development of document editing and reusable editor components
Slides Features 🔄 In development Development and iteration of slide editing capabilities

📐 Outline (Row/Column Grouping)

Outline (row/column grouping) is now officially available in Univer Pro. You can group rows or columns to create collapsible sections, making large spreadsheets easier to navigate and read.

Installation:

If you are using the advanced preset, Outline is already included.

pnpm add @univerjs/preset-sheets-advanced

If you prefer to install the plugins individually:

pnpm add @univerjs-pro/sheets-outline @univerjs-pro/sheets-outline-ui

Register Plugins:

import { UniverSheetsOutlinePlugin } from '@univerjs-pro/sheets-outline';
import { UniverSheetsOutlineUIPlugin } from '@univerjs-pro/sheets-outline-ui';

univer.registerPlugin(UniverSheetsOutlinePlugin);
univer.registerPlugin(UniverSheetsOutlineUIPlugin);

Key Features:

  • Group and ungroup rows or columns via the outline gutter, right-click context menu, or keyboard shortcuts
  • Collapse and expand groups to show or hide detail rows/columns
  • Automatic outline updates when rows or columns are inserted, deleted, or moved
  • Permission controls for collaborative scenarios
  • Full Facade API support for programmatic control

Facade API Example:

const fWorkbook = univerAPI.getActiveWorkbook();
const fWorksheet = fWorkbook.getActiveSheet();

// Group rows 2 to 6
fWorksheet.addRowOutline(1, 5);

// Group columns B to E
fWorksheet.addColumnOutline(1, 4);

// Get all row outlines
const rowOutlines = fWorksheet.getDimensionOutlines('row');

// Collapse the first group
if (rowOutlines[0]) {
  fWorksheet.setDimensionOutlineCollapsed(rowOutlines[0].id, true);
}

// Clear outlines in a range
fWorksheet.clearDimensionOutlines('row', 1, 10);

🧩 UI Components

Panel Component

A new Panel component has been added to @univerjs/design and @univerjs/ui, providing a standardized container for sidebar panels.

Sidebar Enhancements

The Sidebar now supports:

  • Accessibility improvements: Better keyboard navigation and ARIA attributes

  • Resize support: Users can drag to resize the sidebar width

  • PR: #6938


⚠️ Breaking Changes

Removed Deprecated APIs

The following FWorksheet APIs have been removed. Use the recommended alternatives:

Removed API Alternative
FWorksheet.onCellDataChange univerAPI.addEvent(univerAPI.Event.SheetValueChanged, ...)
FWorksheet.onBeforeCellDataChange univerAPI.addEvent(univerAPI.Event.BeforeSheetEditEnd, ...)
FWorksheet.getLastColumns FWorksheet.getLastColumn

Global Zone Service Removed

IGlobalZoneService and related APIs have been removed. Use IUIPartsService with BuiltInUIPart.GLOBAL instead.


⚡ Performance & Stability

Memory Management (Pro)

Properly managed RxJS subscriptions across collaboration cursors, live-share, pivot tables, and other modules to prevent memory leaks in long-running applications.


🐛 Bug Fixes

  • Color Picker (#6912): Fixed hue value normalization for values >= 360 and resolved stale closure issues in event handlers.
  • Sheet Drawing (#6929): Fixed image IDs not being passed to the builder correctly.
  • Toolbar Icon (#6928): Fixed the clear-all icon in the toolbar.
  • Outline Overlays (#6922): Fixed header overlay issues when using outline features.
  • Outline Gutter (#4850): Fixed gutter control anomalies in outline interactions.
  • Outline Warnings (#4859): Added warnings when attempting to ungroup an incomplete range.

📢 Join the Discussion

Have questions, feedback, or ideas? Reach out to us at:


Full Changelog (2026-05-23)

2026-05-18 15:55:37
univer

⚡ Release v0.23.0

🎊 Univer@v0.23.0

[!IMPORTANT] 📢 1.0 Release Coming Soon

We are working hard on the official release of Univer 1.0, which will be a major milestone for the project. Stay tuned!

🚧 Work In Progress

The following features are actively under development. Some modules are already available, and the full experience will be delivered gradually in subsequent versions:

Direction Status Description
Performance Optimization 🔄 Ongoing Performance tuning for the core engine and rendering pipeline; the formula engine has already seen improvements
RTL Language Support 🔄 UI complete, rendering layer in progress Interface layout and component direction are adapted; RTL support for document/sheet content rendering is still under development
Outline (Grouping/Outlining) 🔄 In development Outline (row/column grouping and collapsing) feature
Slides Features 🔄 In development Development and iteration of slide editing capabilities

🧩 Contextual Ribbon Tabs

Added support for context-aware Ribbon Tabs. The toolbar now dynamically displays the most relevant functional tabs based on your currently selected object or operation state, reducing distractions from irrelevant options and keeping commonly used tools within easy reach.

Usage Example:

Register a contextual tab and show/hide it at the appropriate time:

import { RibbonPosition, IRibbonService } from '@univerjs/ui';

// 1. Mark as contextual during menu registration
menuManagerService.mergeMenu({
  [MenuManagerPosition.RIBBON]: {
    ['custom-contextual-tab']: {
      order: 99,
      title: 'Chart Tools',
      contextual: true,  // Mark as contextual tab
      // ...menu items
    },
  },
});

// 2. Control visibility in business logic
const ribbonService = accessor.get(IRibbonService);

// Show contextual tab and auto-activate
ribbonService.showContextualTab('custom-contextual-tab', { activate: true });

// Hide a single contextual tab
ribbonService.hideContextualTab('custom-contextual-tab');

// Hide all contextual tabs
ribbonService.hideAllContextualTabs();

⚡ Performance Boosts

This update includes multiple performance optimizations that significantly improve the smoothness of complex documents.

Formula Engine

Both the OSS and Pro formula engines have seen significant improvements. The OSS version reduces calculation time by 15.7% in a 500K formula scenario and resolves the previous out-of-memory (OOM) issue that prevented calculation in ultra-large files. The Pro version further delivers 1.2–5.4× acceleration for real-world business scenarios.

OSS Version

Test File Formula Count Before After Improvement
Synthetic_500K_MixedFormulas 500,000 162.68 s 137.13 s -15.7%
RealWorld_Engineering_68K 68,576 OOM 34.54 s From failure to success
RealWorld_Financial_33K 33,617 1.18 s 1.34 s Within margin of variation
Template_1.4M_Summary 1,463,721 OOM 248.62 s From failure to success

Pro Version

Test File Formula Count Before After Speedup
Synthetic_500K_MixedFormulas ~500,000 158.82 s 132.18 s 1.20×
RealWorld_Engineering_68K ~68,576 35.71 s 6.65 s 5.38×
RealWorld_Financial_33K ~33,617 1.40 s 1.22 s 1.15×
Template_1.4M_Summary ~1,463,721 278.67 s 103.62 s 2.69×

Render & Interceptor

  • Scroll Rendering (#6905): Fixed scroll stuttering for a smoother scrolling experience in long spreadsheets.
  • Sheet Interceptor (#6906): Streamlined hot paths to reduce rendering overhead from each cell operation.

🐛 Stability & Memory Fixes

  • Memory Leaks (#6896): Comprehensive investigation and fixes for memory leaks caused by RxJS subscriptions not being properly disposed of, making long-running applications more stable.
  • Lifecycle Safety (#6898): Fixed a race condition where commands could still execute after an instance was destroyed.
  • Formula Calculation on Creation (#6903): Fixed an issue where formulas were not automatically calculated when creating a new workbook.
  • Float DOM API (#6904): Fixed abnormal behavior in FWorksheet.removeFloatDom.
  • Calculation Result Callback (#6907): Fixed onCalculationResultApplied not correctly waiting for other formula results such as conditional formatting and data validation.
  • Server Upload State (Univer Server): Fixed an issue where after uploading a file exceeding the size limit, the server-side state was not properly reset, causing subsequent file uploads of any size to fail.
  • Pivot Table (Univer Pro): Fixed component anomalies in the Pivot Table Tabular layout, and added support for hiding subtotal rows in this layout.

📢 Join the Discussion

Have questions, feedback, or ideas? Reach out to us at:


Full Changelog (2026-05-18)

2026-05-13 15:33:19
univer

🎉 Release v0.22.1

🎊 Univer@v0.22.1

🚧 Important Note

Univer Sheets features are becoming more stable, and we are planning for the release of version 1.0. If you have any suggestions, please submit them in our issues to help us shape the future of Univer.

🚀 Getting Started

If you're eager to explore Univer, check out our getting started documentation. Dive into the world of collaborative document, spreadsheet, and presentation editing powered by Univer!

📊 Univer Sheets

🐛 Bug Fixes and Optimizations

  • Fix the issue of comment related styles displaying abnormally in dark mode. #6881
  • Fix the issue of cell image alignment displaying abnormally when affected by word wrap. #6885
  • Optimize the experience in read-only mode by allowing text selection in the formula bar. #6886
  • Fix the issue of new sheets created by the "Add Sheet" button introduced in version 0.22.0 having duplicate names. #6887
  • Fix the issue of horizontal scrollbar appearing in the "Change Color" panel of the right-click menu in the sheet bar. #6892
  • Sparklines
    • Fix the issue of high point and low point markers being ineffective in line sparklines.
    • Fix the issue of abnormal functionality of the range selection when inserting sparklines after opening and closing the editing panel.
    • Fix the issue of the marker color setting button being unresponsive in React 18 environment.

📢 Join the Conversation

We welcome your input and insights as we embark on this exciting journey. Connect with us on:

📝 Changelog

Full changelog (2026-05-13)

Bug Fixes

  • avoid BehaviorSubject replay loop in bufferWhen (#6882) (dfc5de7)
  • cellImage: fix cell image align render (#6885) (9b927c5)
  • comment: fix the issue of comments in dark mode (#6881) (192e607)
  • core: fix bullet list preset symbol (#6884) (b71cbab)
  • sheets-ui: allow selecting formula bar content in read-only mode (#6886) (02017c2)
  • sheets: ensure unique sheet name when inserting with explicit name (#6887) (628bbf9)
  • ui: add box-sizing to context menu item for proper sizing (#6892) (6ab5e91)

Features

2026-05-09 18:30:54
univer

🎉 Release v0.22.0

🎊 Univer@v0.22.0

🚧 Important Note

Univer Sheets features are becoming more stable, and we are planning for the release of version 1.0. If you have any suggestions, please submit them in our issues to help us shape the future of Univer.

🚀 Getting Started

If you're eager to explore Univer, check out our getting started documentation. Dive into the world of collaborative document, spreadsheet, and presentation editing powered by Univer!

📊 Univer Sheets

✨ New Features Highlights

  • UniverDrawingPlugin added a new configuration item allowImageSize to support limiting the maximum size of uploaded images. #6865
  • UniverSheetsUIPlugin added a new configuration item footer.addSheetButtonConfig to customize the behavior of the "Add Sheet" button: #6866
    • show: Whether to show the add sheet button, default is true.
    • defaultRowCount: The default number of rows for a new sheet, default is 1000.
    • defaultColumnCount: The default number of columns for a new sheet, default is 20.

🐛 Bug Fixes and Optimizations

  • Image Related
    • Fix the issue of floating images not updating their position correctly after hiding rows/columns. #6842
    • Fix the issue of incorrect hot zone calculation for the zoom button in cell image preview. #6845
  • Copy and Paste
    • Fix the issue of some number formatted text copied from Excel not being parsed correctly. #6844
    • Fix the issue of character loss when copying text containing <> from Univer to Excel. #6850
  • Permission Control
    • Fix the issue of toolbar disabled status not refreshing in time after updating the current range permission point. #6853
    • Fix the issue of being able to modify styles within a full selection (Ctrl + A) that contains non-editable areas. #6853
    • Fix the issue of the API for setting borders not being subject to permission control. #6853
    • Fix the issue of defined name related operations not being subject to permission control. #6857
    • Fix the issue of the disabled status listener for the context menu in the sheet bar not being triggered. #6877
  • Others
    • Fix the issue of the submenu in the context menu not disappearing when clicking it. #6858
    • Fix the issue of text containing \n not wrapping correctly in the cell when word wrap is enabled. #6859
    • Fix the issue of row height not updating correctly after clearing cell content or styles. #6870
    • Optimize the performance of Lexer.treeBuilder in scenarios with a large number of defined names. #6873
    • Optimize the boundary cases where the width and height of the last row/column cannot be changed via UI. #6876
    • Fix the issue of chart styles being reset after copy/paste/delete/undo in scenarios where the chart style is a non-default style.
    • Optimize the display style of history records when there are many operators.
    • Fix the issue of triangle shape adjustment nodes not being able to be dragged to the right.

Special thanks to community contributor @kenny-not-dead for contributions in this version:

  • Fix the issue of page margins in doc page settings supporting negative values. #6838
  • Fix the issue of paragraph alignment in doc not being highlighted. #6854
  • Fix the issue of unordered lists in doc not being highlighted. #6856

Special thanks to community contributor @IMSupperkaka for contributions in this version:

  • Fix the issue of shortcuts (bold/italic/underline/strikethrough) not working in cell editing state. #6851

Special thanks to community contributor @getmateri for contributions in this version:

  • Fix the issue of styles not being cleared in target cells when copy filling blank cells in some scenarios. #6869

🌐 Univer Server

  • Fix the issue of string condition values being lost after importing when the conditional format is "equal to a certain string".
  • Fix the issue of content loss when importing certain charts.

📦 Univer Presets

  • SDK has been updated to version 0.22.0.
  • UniverSheetsCorePreset has been updated to support the footer.addSheetButtonConfig configuration item.
  • UniverSheetsDrawingPreset has been updated to support the allowImageSize configuration item.

📢 Join the Conversation

We welcome your input and insights as we embark on this exciting journey. Connect with us on:

📝 Changelog

Full changelog (2026-05-09)

Bug Fixes

  • active alignment style (#6854) (15cdf62)
  • active list value (#6856) (0ac415c)
  • cellImage: fix defects in image enlargement hot zone calculation (#6845) (0e30fea)
  • copy: fix unescaped special characters such as <> in copied HTML (#6850) (7ba9b6a)
  • definedName: add defined name permission controller (#6857) (44dbe3b)
  • definedName: fix lexer.treeBuilder performance (#6873) (ed89f1f)
  • drawing: fix floating images did not update their position along with hidden rows and columns (#6842) (a46d82b)
  • fix copy html error (#6861) (eca1af9)
  • fix when cell wrapping is enabled, cell text must wrap to the next line after \n (#6859) (c4f3ce5)
  • optimize auto row height recalculation when clearing cell content or styles (#6870) (ef63690)
  • optimize boundary cases where the width and height of the last row/column cannot be changed via UI (#6876) (bbd5294)
  • paste: fix some number formatted text copied from Excel was not parsed correctly (#6844) (f171450)
  • permission: fix some issues with permission control (#6853) (5af6a73)
  • permission: fix the disabled status listener for the context menu in the sheet bar (#6877) (67371e8)
  • set min value in page settings (#6852) (4990505)
  • sheets-ui: allow inline format shortcuts to fire inside cell editor (#6851) (4b98f87)
  • sheets: clear styles when copy filling blank cells (#6869) (32a2c98)
  • ui: fix the submenu in the context menu did not disappear when click it (#6858) (0def2e2)

Features

  • add footer.addSheetButtonConfig config (#6866) (4055e42)
  • add maximum allowed size config of uploaded images (#6865) (46e1309)
2026-04-25 15:18:10
univer

🎉 Release v0.21.1

🎊 Univer@v0.21.1

🚧 Important Note

Univer Sheets features are becoming more stable, and we are planning for the release of version 1.0. If you have any suggestions, please submit them in our issues to help us shape the future of Univer.

🚀 Getting Started

If you're eager to explore Univer, check out our getting started documentation. Dive into the world of collaborative document, spreadsheet, and presentation editing powered by Univer!

📊 Univer Sheets

💔 Breaking Changes

  • Refactor the API related to defined names: univerAPI.newDefinedName has been replaced with FWorkbook.newDefinedNameBuilder. #6826

🐛 Bug Fixes and Optimizations

  • Fix the issue of PermissionService not registered when removing protected ranges. #6821
  • Fix the issue of not validating the legality of names when adding defined names through API. #6826
  • Optimize the DOM performance and related algorithm performance of list rendering in scenarios with a large number of defined names. #6829
  • Fix the issue of ClearSelectionContentCommand execution error introduced in version 0.21.0. #6829
  • Fix the issue of floating images in the current workbook disappearing when creating a hidden workbook. #6833
  • Add .js extension to the deep import of opentype.js for compatibility with Node.js ESM. #6835
  • Fix the issue of document is not defined error when calling FRange.setValue in a Node.js environment. #6834
  • Optimize the number extension rules in the auto-fill feature. #6837
  • Fix the issue of collaborator cursors being invisible in collaborative editing introduced in version 0.16.0.
  • Fix the issue of the API for subscribing to changes in online personnel in the collaborative room not being triggered correctly when personnel leave.

Special thanks to community contributor @getmateri for contributions in this version:

  • Optimize the formula bar name box to create a defined name for the workbook range based on the current selection when pressing Enter. #6705
  • Fix the issue of not being able to continue moving the selection with arrow keys after pressing Enter in the formula bar name box to jump to the corresponding selection. #6705

🌐 Univer Server

  • Fix the issue of hidden drawing elements being incorrectly displayed when importing Excel files.

📢 Join the Conversation

We welcome your input and insights as we embark on this exciting journey. Connect with us on:

📝 Changelog

Full changelog (2026-04-25)

Bug Fixes

  • autofill: fix extend number rule of auto fill (#6837) (8fe1122)
  • conditionformat: fix condition format rule stopif true err (#6823) (79ac910)
  • definedName: optimize performance issues related to defined name (#6829) (8c15220)
  • drawing: fix drawing visible in import (#6822) (e84d694)
  • engine-render: add .js extension to opentype.js deep import for Node.js ESM compatibility (#6835) (8c226ed)
  • fix handleWorksheetRangePermissionIsEmpty error (#6821) (da009a8)
  • fix the document is not defined error that occurred when using FRange.setValue in a Node.js environment (#6834) (0b1ac31)
  • fix the issue of drawings will remove when creating a unit with makeCurrent is false (#6833) (efb3980)
  • scroll: gap config (#6828) (48fb4c2)
  • scroll: initial for gap zero (#6832) (6e8f767)
  • sheets-ui: fix incorrect JSDoc for attachRangePopup (#6824) (dba94e9)
  • sheets-ui: restore name box range naming flow (#6705) (38eec33)
2026-04-18 17:03:02
univer

🎉 Release v0.21.0

🎊 Univer@v0.21.0

🚧 Important Note

Your feedback is crucial! Please submit issues and suggestions to help us shape the future of Univer.

🚀 Getting Started

If you're eager to explore Univer, check out our getting started documentation. Dive into the world of collaborative document, spreadsheet, and presentation editing powered by Univer!

📊 Univer Sheets

💔 Breaking Changes

  • Refactor and fix issues related to permission control APIs, with the following changes: #6804
    • Remove the FPermission class and all its creation methods.
    • Remove all APIs that listen for permission changes.
    • Adjust FPermission.setPermissionDialogVisible to FWorkbookPermission.setPermissionDialogVisible.
    • Remove setPoint and getPoint related methods from FRangePermission.
    • Add setPoint and getPoint related methods to FRangeProtectionRule.
    • The setPoint method is used to update the permission point, which will synchronize the server status in collaborative editing scenarios:
      • false: This permission point requires at least the owner role.
      • true: This permission point requires at least the editor role.
    • When creating a protected range rule, remove the allowEdit field from the options parameter, and use the allowUsers field to determine whether it is "only me" or "specified users" who can edit.
  • Refactor and improve the user experience and accessibility of the collaboration status component in the upper right corner of the collaborative document, with the following changes:
    • The component no longer displays text labels, only icons, to reduce visual interference.
    • Show detailed status tips on mouse hover.
    • Add correct ARIA attributes (role, aria-live, aria-label).
    • Make the offline status clickable and support keyboard input (Enter / Space).
    • Add a spinning animation for status synchronization.

🐛 Bug Fixes and Optimizations

  • Fix the issue of IRepeatLastActionService not registered on mobile. #6806
  • Fix some API operations that were not blocked by permission control. #6815
  • Fix some known issues with shapes.

🌐 Univer Server

  • Fix the issue of conditional formatting anomalies after importing some low-version Excel files.

📢 Join the Conversation

We welcome your input and insights as we embark on this exciting journey. Connect with us on:

📝 Changelog

Full changelog (2026-04-18)

Bug Fixes

  • aligan: update (#6798) (f5db141)
  • formula: optimize the logic of inverted index (#6818) (79d2c30)
  • mobile: fix dependency not registered (#6806) (2a010b6)
  • permission: fix some API operations that were not blocked by permission control (#6815) (3d6f418)
  • protocol: correct method name from IUpdateCollaborator to UpdateCollaborator (#6817) (3479e20)

Features

2026-04-11 14:51:25
univer

🎉 Release v0.20.1

🎊 Univer@v0.20.1

🚧 Important Note

Your feedback is crucial! Please submit issues and suggestions to help us shape the future of Univer.

🚀 Getting Started

If you're eager to explore Univer, check out our getting started documentation. Dive into the world of collaborative document, spreadsheet, and presentation editing powered by Univer!

📊 Univer Sheets

🐛 Bug Fixes and Optimizations

  • Fix cell editing failure in Web Component environment. #6770
  • Fix error when canceling hyperlink in some imported Excel files. #6778
  • Fix permission issues related to drawing (floating images, charts, shapes). #6779
  • Optimize editable user list display logic when permission inheritance is not enabled: support displaying other owner users except itself, and allow adding them as specified editing users. #6782
  • Optimize view history: no document editing permission is required, only view history permission is needed, and remove the history management permission point. #6784
  • Fix the issue of move range undo exception. #6788
  • Fix the issue of incorrect current version marking in history.
  • Fix the issue of Toast prompt not closing after canceling print.
  • Fix the issue of export function server-side calculation configuration failure.
  • Fix the issue of charts not updating when there are hidden rows and columns changes in the chart data source range.
  • Fix the issue of error when importing empty Excel file through univerAPI.importXLSXToSnapshotAsync.

Special thanks to community contributor @lyr0430 for contributions in this version:

  • Fix the issue of onOpen callback not being triggered when the sidebar is opened. #6636

Special thanks to community contributor @kenny-not-dead for contributions in this version:

  • Fix the issue of resetting to default value after double-clicking font/fontSize/fontColor/cellColor. #6664
  • Fix the issue of not being able to continue input after selecting font in edit state. #6665
  • Fix the issue of error when applying font in font input box. #6666

Special thanks to community contributor @IMSupperkaka for contributions in this version:

  • Fix the issue of incorrect clickable area calculation for cell images. #6747

📢 Join the Conversation

We welcome your input and insights as we embark on this exciting journey. Connect with us on:

📝 Changelog

Full changelog (2026-04-11)

Bug Fixes

  • after select font family cant write text (docs and sheets) (#6665) (c1f0b71)
  • docs: double click trigger defaule value (fs,ff,cl,bg) (#6664) (bbb41bb)
  • fix font family search (#6793) (0410bd8)
  • fix the issue of move range undo (#6788) (e00a9e2)
  • permission: fix permission issues related to drawing (floating images, charts, shapes) (#6779) (51304b0)
  • scene: fix code lint warning err (#6785) (2144496)
  • sheets-ui: fix doc drawing skeleton calc wrong (#6747) (3bf7f2d)
  • sheets-ui: improve focus handling EditorContainer (#6770) (7072024)
  • ui: invoke onOpen callback when sidebar is opened (#6636) (804206b)
  • vertical: vertical aligan (#6794) (7225fe1)

Features

2026-04-03 15:39:52
univer

🎉 Release v0.20.0

🎊 Univer@v0.20.0

🚧 Important Note

Your feedback is crucial! Please submit issues and suggestions to help us shape the future of Univer.

🚀 Getting Started

If you're eager to explore Univer, check out our getting started documentation. Dive into the world of collaborative document, spreadsheet, and presentation editing powered by Univer!

📊 Univer Sheets

💔 Breaking Changes

  • The Drawing-related APIs (floating images, charts, shapes) have been migrated from the UI package to the core package to support usage in Headless mode. For users using the Plugin installation mode, please update the import paths for the Facade APIs:
    • New for floating images: import '@univerjs/sheets-drawing/facade'
    • UI-related capabilities such as floating DOM still use: import '@univerjs/sheets-drawing-ui/facade'
    • Charts: import '@univerjs-pro/sheets-chart-ui/facade' -> import '@univerjs/sheets-chart/facade'
    • Shapes: import '@univerjs-pro/sheets-shape-ui/facade' -> import '@univerjs/sheets-shape/facade'

✨ New Features Highlights

  • Add support for cropping floating images into shapes (entry: image editing panel).
  • Add support for image fill in shapes (entry: shape editing panel).

🌐 Univer Server

  • Add support for importing and exporting floating images cropped into shapes.
  • Add support for importing and exporting shapes with image fill.
  • Optimize Excel file import performance.
  • Add new system integration capabilities:
    • Support for idempotent keys.
    • Support for passing customer system Metadata.

For usage, see: https://docs.univer.ai/guides/pro/usip and https://docs.univer.ai/guides/pro/api.

📦 Univer Presets

  • SDK has been updated to version 0.20.0.

📢 Join the Conversation

We welcome your input and insights as we embark on this exciting journey. Connect with us on:

📝 Changelog

Full changelog (2026-04-03)

Features