Releases: dream-num/univer
🎉 Release v0.6.5
🎊 [email protected]
🚧 Important Note
This project is still in heavy development, and major API changes are expected. 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
- Fixed conditional formatting command only applying to active worksheet #4798
- Fixed unclosed col tag issue in generateHTML #4803
- Fixed tooltip warnings in React 18 #4794
- Fixed set font and limited fillText out of view bounds #4800
- Fixed occasional worker errors #4821
📝 Univer Docs
- Added support for custom blocks in documents #4792
🌐 Univer Server
- Fixed known issues
📦 Univer Presets
- Added UniverSheetsCorePreset configuration options dream-num/univer-presets#48
- SDK has been updated to version 0.6.5
💔 Breaking Changes
@univerjs/network
is now exported from@univerjs/presets/preset-sheets-core
entry point dream-num/univer-presets#46
-import { HTTPService } from '@univerjs/presets/preset-sheets-advanced'
+import { HTTPService } from '@univerjs/presets/preset-sheets-core'
🎢 Special Thanks
Special thanks to the following contributors who have made this release possible:
📢 Join the Conversation
We welcome your input and insights as we embark on this exciting journey. Connect with us on:
📝 Changelog
Full changelog (2025-03-12)
Bug Fixes
- fix peerDependencies (#4820) (ef19fc7)
- fix range theme fromjson (#4795) (d2a4e12)
- fixed tooltip warnings in React 18 (#4794) (55ba301)
- header line (#4818) (ff3f8ad)
- reduce
set font
and limit fillText out of viewbounds (#4800) (8ec54c5) - sheet: fix fromjson error (#4812) (da002ee)
- sheets-conditional-formatting: apply conditional formatting for triggered sheet (#4798) (c3574ee)
- sheets-formula-ui: fix component registration (#4807) (8e2be48)
- sheets-ui: fix sheet clipboard col tag not closed (#4803) (9e88fac)
- sheets-ui: hover service error (#4804) (5d82419)
Features
🎉 Release v0.6.4
🎊 [email protected]
🚧 Important Note
This project is still in heavy development, and major API changes are expected. 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
🎉 Highlights
In this release, we are excited to introduce a new set of features and improvements to enhance your Univer experience. Here are the highlights:
- Interaction optimization: Set the number of rows and columns to insert in the right-click menu #4579
- Added
getCustomMetadata
method to support getting worksheet custom metadata #4759
🐞 Bug Fixes
- Fixed reference range error when inserting rows or columns in data validation #4785
- Fixed interaction error when using custom formula validation in data validation #4776
- Fixed tooltip jitter issue in menu bar #4779
- Adjusted permission initialization timing to fix permission-related bugs #4770
- Fixed known issues
📝 Univer Docs
- Fixed known issues
🌐 Univer Server
- Fixed known issues
📦 Univer Presets
- SDK has been updated to version 0.6.4
🎢 Special Thanks
Special thanks to the following contributors who have made this release possible:
📢 Join the Conversation
We welcome your input and insights as we embark on this exciting journey. Connect with us on:
📝 Changelog
Full changelog (2025-03-08)
Bug Fixes
- dep detect only in event handler not before register event (#4781) (58a24b5)
- design: resolve the issue of tooltip jitter during initialization (#4779) (3643ffe)
- docs-ui: select all on empty doc (#4787) (d85a0db)
- facade: showRangeSelectorDialog document (#4767) (323fe3f)
- fix facade example (#4780) (ca2329e)
- formula e2e (#4788) (f0df9ef)
- formula: fix dispose register function bug (#4783) (be00bdd)
- formula: formula update after hide row column (#4238) (4113714)
- sheets-conditional-formatting: correct bottom percent rank calculation (#4771) (e5cff35)
- sheets-data-validation: data validation ref-range error on insert row & column (#4785) (82545bf)
- sheets-data-validation: data validation valid error on custom formula (#4776) (2f3c477)
- update permission init timing (#4770) (5099acf)
Features
- sheets-numfmt: add percentage as default option (#4772) (e3a9b59)
- sheets-ui: check before undo-redo rollback (#4784) (f66f931)
Performance Improvements
- remove unnecessary
ctx.font =
calls, and avoid drawing glyphs outside the viewBounds (#4775) (cd3decd)
Reverts
🔥 Release v0.6.3
🎉 Release v0.6.2
🎊 [email protected]
🚧 Important Note
This project is still in heavy development, and major API changes are expected. 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
🎉 Highlights
In this release, we are excited to introduce a new set of features and improvements to enhance your Univer experience. Here are the highlights:
- Pivot table supports value filtering, added
setFieldsConfig
andreset
Facade APIs - Added new Facade APIs for:
- Enhanced UI optimizations #4704 #4715
- Added
hideStatusBarStatistic
configuration insheets-ui
to support hiding statistical status bar #4694 - Added
maxAutoHeightCount
configuration insheets-ui
to address performance issues with auto-height in large datasets (default: 1000 rows) #4700 #4705 - Formula functions now support reading and writing cell
custom
properties #4658 - Find and replace component now supports
Esc
shortcut key to exit #4746
🐞 Bug Fixes
- Fixed clear operation in filter state #4589
- Fixed status bar statistics error when selection contains dates #4723
- Fixed white screen issue when calling
createUnit
afterdisposeUnit
#4728 - Fixed
generateHTML
error #4689 - Fixed Facade event mechanism #4736 #4739
- Fixed uniscript plugin editor error #4738
💔 Breaking Changes
- No breaking changes in this release
📝 Univer Docs
- Fixed known issues
🌐 Univer Server
- Fixed known issues
📦 Univer Presets
- SDK has been updated to version 0.6.2
🎢 Special Thanks
Special thanks to the following contributors who have made this release possible:
📢 Join the Conversation
We welcome your input and insights as we embark on this exciting journey. Connect with us on:
📝 Changelog
Full changelog (2025-03-01)
Bug Fixes
- dependency loop in statusbar comp (#4701) (265c3f5)
- bind cell event multiple times (#4736) (ebc68bf)
- dashline drawing incorrect when adjust col width (#4719) (d163f2e)
- docs-ui: doc editor mem leak (#4748) (c3fa72f)
- docs-ui: error display doc-toolbar on sheet (#4751) (bc3c334)
- fix context menu cannot trigger selection change (#4734) (40956fd)
- fix monaco editor not built (#4738) (191b8c8)
- fix secrets is not set to env (#4749) (f15c05c)
- issue for autofill not working (#4753) (a8ed28c)
- mouse enter leave (#4696) (2bfba12)
- scrollbar size (#4730) (b9f3243)
- scrollbar size may be 0 (#4695) (161a97f)
- sheet: avoid auto height too many rows (#4700) (5d036b7)
- sheet: fix auto heigt cause some code error (#4705) (568f8bc)
- sheets-conditional-formatting-ui: fix panel background color issue (#4307) (4913509)
- sheets-ui: backspace shortcut not work (#4740) (e4a5639)
- sheets-ui: resolve the issue where related events fail to trigger under specific conditions (#4739) (d9b2ec6)
- sheet: set ranges for setAutoHeight (#4737) (3b75dfe)
- sheet: the range may be undefined (#4706) (e480b80)
- snapshot default aux line (#4722) (8bc15bf)
- status bar also needs to consider the date format, where t=number. (#4723) (cbc6844)
- the filtered content is not included in the clear (#4589) (ee48679)
- ui: fix generate facade should execute before hook (#4689) (d437309)
- ui: fix new current file not rendered (#4728) (5f6130a)
Features
- facade: add cell image facade & remove rich-text cell-image (#4729) (f0b2d48)
- facade: move cf command from sheets-conditional-formatting-ui to sheets-conditional-formatting package (#4743) (fdbde5b)
- facade: supplement f-workbook f-worksheet f-range facade (#4733) (edddb71)
- find-replace: use esc to focus on selection (#4746) (f4b30ae)
- formula: add custom data to value objects (#4658) (2e59a6c)
- hide statistic opt (#4694) (95410d0)
- improve styles in sheets-ui (#4704) (b752a7f)
- scroll bar hover style (#4708) (04af678)
- thread-comment: export sheet thread comment plugin constant (#4732) (83c0af9)
🎉 Release v0.6.1
🎊 [email protected]
🚧 Important Note
This project is still in heavy development, and major API changes are expected. 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
🎉 Highlights
- Optimized plugin loading mechanism #4662
- Formula engine performance optimization #4675
- Facade API documentation updated #4677 #4686 #4653
🐞 Bug Fixes
- Fixed the issue where line breaks were not preserved when pasting data from external applications #4670
- Fixed the issue where the find icon was displayed abnormally in 0.6.0 #4685
- Fixed the issue where
FRange.setBorder
only took effect on the active range #4650 - Fixed the number format
@
display issue #4669 - Fixed the issue that the formula editor selected multiple ranges and displayed abnormally #4673
- Fixed the numerical calculation problem in the statistics bar #4684
📝 Univer Docs
- Fixed known issues.
🌐 Univer Server
- Fixed known issues.
📦 Univer Presets
- SDK has been updated to version 0.6.1.
🎢 Special Thanks
Special thanks to the following community members for their outstanding contributions to this release:
📢 Univer Go
Univer Go 0.0.10 has been released, integrating AI, logging, and the latest Univer SDK features. With numerous templates ready to use, share and define your collaborative spreadsheet applications, welcome to experience! Univer Go
📢 Join the Conversation
We welcome your input and insights as we embark on this exciting journey. Connect with us on:
📝 Changelog
Full changelog (2025-02-21)
Bug Fixes
- facade: add ranges to setBorder (#4650) (434943f)
- fix eslint (#4687) (a3a55ff)
- fix plugin lazy loading not working (#4668) (9702222)
- numfmt: text format excel, default format (#4669) (72411b9)
- paste rich text with br should keep line break (#4670) (535a2a9)
- paste value from excel incorrect (#4659) (d2323e4)
- scroll cmd should consider about unitId (#4654) (c2e7fc1)
- sheet: fix some performance issue (#4664) (b9e7402)
- sheets-formula-ui: edit other sheet range error (#4673) (dec0fdb)
- style: fix defualt theme style (#4657) (95d4fee)
- ui: fix the issue where disabling shortcuts through the facade API does not work (#4618) (684db12)
- use number value in stats calculation (#4684) (1811593)
Features
🎉 Release v0.6.0
🎊 [email protected]
🚧 Important Note
This project is still in heavy development, and major API changes are expected. 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
🎉 Highlights
- Added external image paste functionality and optimized image processing logic #3617
- Compatible with React 19, refactored rendering logic, optimized Input component implementation, and improved UI performance #4247
- Added Facade API
FRange.attachRangePopup
to insert components into ranges #4489 - Added support for loading multiple sheets and switching the sheet to be displayed, you can now use cross-sheet formulas, refer to Loading Multiple Files #4580
- Optimized Facade event memory usage, introduced FEventRegistry to manage event listeners #4616
- Added
NUMBERSTRING
formula for converting numbers to Chinese strings #4615 - Univer now supports over 500 formulas and counting!
🐞 Bug Fixes
- Fixed multi-instance input cursor error in sheets-ui #4643
- Fixed
univerAPI.Event.SheetEditChanging
event not triggering #4642 - Fixed
univerAPI.Event.CellClicked
event not triggering #4628 - Removed React dependency from core package, reduced core package size, and improved project modularity #4617
- Fixed selection error in formula editor and collaborative selection issues #4619
- Improved undo/redo menu item disable logic #4609
- Fixed data validation formula issues and ActiveSheetChanged event #4606
- Fixed incorrect row height when adjusting height with all rows selected #4639
💔 Breaking Changes
-
React 16 users need additional steps to use Univer 0.6.0, please refer to the React 16 User Upgrade Guide
-
Package
@univerjs/facade
has been removed, please migrate to the new Facade usage. -
Facade content previously exported from
@univerjs/core
has been moved to@univerjs/core/facade
exports:FBase
,FBaseInitialable
,FUniver
,FHooks
,FBlob
,IFBlobSource
,FEventName
,IEventBase
,IEventParamConfig
,FEnum
,FUtil
#4596
ESM Before:
import { FUniver } from '@univerjs/core';
After:
import { FUniver } from '@univerjs/core/facade';
UMD Before:
<script src="https://unpkg.com/@univerjs/core/lib/umd/index.js"></script>
<script>
var { FUniver } = UniverCore;
</script>
After:
<script src="https://unpkg.com/@univerjs/core/lib/umd/facade.js"></script>
<script>
var { FUniver } = UniverCoreFacade;
</script>
-
To use the official collaboration features, you now need to provide a socketService in UniverCollaborationClientPlugin's config object. If your client runs in browsers, please use BrowserCollaborationSocketService provided by the @univerjs-pro/collaboration-client-ui package, refer to Collaboration Guide
-
Plugin developers need to note that the Redi view-related APIs exported have been moved to the
@univerjs/ui
package #4617
Before:
import { useDependency, RediContext, useObservable } from '@univerjs/core'
After:
import { useDependency, RediContext, useObservable } from '@univerjs/ui'
📝 Univer Docs
- Fixed known issues.
🌐 Univer Server
- Fixed known issues.
📦 Univer Presets
- SDK has been updated to version 0.6.0.
🎢 Special Thanks
Special thanks to the following community members for their outstanding contributions to this release:
📢 Univer Go
Univer Go 0.0.10 has been released, integrating AI, logging, and the latest Univer SDK features. With numerous templates ready to use, share and define your collaborative spreadsheet applications, welcome to experience! Univer Go
📢 Join the Conversation
We welcome your input and insights as we embark on this exciting journey. Connect with us on:
📝 Changelog
Full changelog (2025-02-15)
Bug Fixes
- adjust height when select all (#4639) (c274fc8)
- clear timers when controller disposed (#4528) (6a871b0)
- conditional-formatting: aligning Excel Effects with 'No Interfer… (#4584) (ce0b939)
- drawing: drawing permission memory leak (#4598) (a04486e)
- facade: editing-event not trigger on edit (#4642) (4914a55)
- facade: set default style (#4613) (4d1f5d1)
- fix multi memory leak problems (#4591) (3dc94a9)
- fix paste dropdown in workspace (#4593) (3efc99f)
- float dom after freeze (#4587) (9b2274f)
- formula: fix cut paste bug of formula (#4582) (d9043ef)
- formula: get dirtyRanges when row column removed (#4588) (0e0d68b)
- formula: skip processing tree when there is no formula (#4586) (303c0b2)
- numfmt: reset cell value type when remove numfmt (#4585) (bb81076)
- sheet: add remove func to serivce (#4625) (6254c68)
- sheet: row height no ranges (#4629) (aee23ec)
- sheets-data-validation: data-validation formula-error (#4606) (0d6c8b4)
- sheets-formula-ui: editor add selection error (#4619) (b431629)
- sheets-formula-ui: selecion error on formula-editor (#4632) (1f961b8)
- sheets-ui/facade: fix cell event not triggering when listening through the facade API (#4628) (92398b2)
- sheets-ui: formula-editor edit error (#4603) (1559708)
- sheets-ui: multi-instance input error (#4643) (d742763)
- sheet: scrolling reaching limit judgment (#4473) (4b3dd11)
- statusbar: fix status bar can not read date type cell (#4573) (0a0aafe)
- ui: improve undo/redo menu item disable logic (#4609) (1edf335)
- ui: optimize resize observer and update toolbar item structure of Ribbon (#4644) ([8e88ffd](https://github.com/d...
🎉 Release v0.5.5
🎊 [email protected]
🚧 Important Note
This project is still in heavy development, and major API changes are expected. 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
🎉 Highlights
In this release, we are excited to introduce a new set of features and improvements to enhance your Univer experience. Here are the highlights:
-
UniverSheetsPlugin
added new configuration optionautoHeightForMergedCells
to enable automatic height calculation for merged cells #4488 -
Added Facade API: border settings, get styles, enums, etc. #4494
import '@univerjs/sheets/facade'
univerAPI.getActiveWorkbook()
.getActiveSheet()
.getActiveRange()
.setBorder(univerAPI.Enum.BorderType.ALL, univerAPI.Enum.BorderStyleTypes.THIN, '#ff0000');
univerAPI.getActiveWorkbook()
.getActiveSheet()
.getActiveRange()
.getCellStyle()
- Added support for sheet-related events: ActiveSheetChanged, SheetDeleted, SheetHideChanged, SheetMoved, SheetNameChanged, SheetTabColorChanged, SheetValueChanged #4494
import '@univerjs/sheets/facade'
univerAPI.addEvent(univerAPI.Event.Scroll, console.log)
- Added support for sheet UI-related events: Scroll, SelectionMoving, SelectionChanged, ColumnHeaderClick, ColumnHeaderHover, RowHeaderClick, RowHeaderHover, SelectionChanged, SelectionMoving, SheetSkeletonChanged, etc. #4491
import '@univerjs/sheets-ui/facade'
univerAPI.addEvent(univerAPI.Event.Scroll, console.log)
- Added FRange.getValue parameter: when set to
true
, it will return rich text values
import '@univerjs/sheets/facade'
const richTextValues = univerAPI.getActiveWorkbook()
.getActiveSheet()
.getActiveRange()
.getValues(true)
- Added support for number format localization settings #4470
🐞 Bug Fixes
- Refactored cell editor and formula editor in sheet UI module #4384
- Drop fill or copy-paste will not carry
custom
property #4503 - Fixed data validator issue #4477
- Fixed Facade API incorrect async calls #4482
- AlphaSlider style optimization #4486
📝 Univer Docs
- Fixed known issues
🌐 Univer Server
- Fixed known issues
📢 0.6.0 Preview
Important
The development of version 0.6.0 is currently underway. Starting with this release, Univer will support integration with projects using React@19 . However, this update may introduce breaking changes for users relying on React@16 or Univer UMD builds.
If you have any questions or concerns, please feel free to share your suggestions and feedback via GitHub Issues.
📢 Univer Go
Univer Go 0.0.8 has been released, integrating AI, logging, and the latest Univer SDK features. You don't need to configure complex development environments - just code and share your collaborative spreadsheet applications. Try it now! Univer Go
📢 Join the Conversation
We welcome your input and insights as we embark on this exciting journey. Connect with us on:
📝 Changelog
Full changelog (2025-01-20)
Bug Fixes
- add selection facade API (#4467) (cc4ad5f)
- bind multiple times for UIEvent after dispose and create again (#4500) (5e6cd64)
- customize auto height for merged cell (#4488) (0c2f6b6)
- design: add hex format support for HSV conversion of
ColorPicker
(#4518) (f47408e) - disable jsdoc/tag-lines rule and add ignore comments in FBase classes (#4495) (23af713)
- facade: make facade sync (#4482) (447f991)
- facade: sheets event facade (#4485) (bd9da5d)
- facade: support get rich-text by getValue (#4523) (d845d95)
- fix source error (#4505) (a4108c5)
- float dom event (#4514) (4d13d75)
- formula: fix bug in judging whether the value is in number format (#4493) (5d0b397)
- numfmt: use next in writeCellInterceptor (#4490) (293cf65)
- renderUnit is not sheet in prev way (#4492) (b40bc0d)
- sheet: cell precision error (#4476) (99b2600)
- sheet: fix binding type not set & add readme. (#4515) (c55f285)
- sheet: fix doc error (#4451) (d5cc9a7)
- sheet: fix facade throw error (#4466) (e53eb2c)
- sheet: remove custom paste (#4503) (ecc8256)
- sheets-formula-ui: highlight doc (#4516) (83a781e)
- sheets-formula-ui: wrong curosr index caused by move-range (#4517) (6cd0583)
- sheets-ui: modify selection when need to add one (#4513) (46e9e1c)
- sheets: data validation validator issues (#4477) (29b6f9a)
- sheets: set value error on formula cell (#4527) (a6a18e5)
- sheet: support bind delete & date type source (#4487) (4aff7f7)
- sheet: support source bind ignore header (#4524) (f38f29e)
- ui: menu hidden error (#4519) (26ef5e9)
- ui: menu hidden error (#4520) (930e15f)
Features
🎉 Release v0.5.4
🎊 [email protected]
🚧 Important Note
This project is still in heavy development, and major API changes are expected. 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
🎉 Highlights
In this release, we are excited to introduce a new set of features and improvements to enhance your Univer experience. Here are the highlights:
- New color picker with custom color support #4437

- New feature: When pasting, a selective paste context menu will be triggered. #4393

- Added
FWorkbook.addEvent
andFWorksheet.addEvent
with related events #4456
univerAPI.getActiveWorkbook().addEvent('CellClicked', (p)=> console.log(p));
univerAPI.getActiveWorkbook().addEvent('CellHover', (p)=> console.log(p));
- Formula registration in Facade API now supports lambda functions #4298
- Added Zen mode editor-related Facade APIs #4423
- Added comment-related events and Facade APIs #4423
- Added image-related events and Facade APIs #4429
- Added clipboard events #4420
- Added
FUniver.registerUIPart
#4452
univerAPI.registerUIPart(BuiltInUIPart.CUSTOM_HEADER, () => React.createElement('h1', null, 'Custom Header'));
- Added string search Facade API #4430
const textFinder = await univerAPI.createTextFinderAsync('hello');
const ranges = textFinder.findAll();
ranges.forEach((range) => {
console.log(range.getA1Notation());
});
🐞 Bug Fixes
🔄 API Updates
The following APIs will be gradually replaced in future versions. Please migrate at your convenience:
- Workbook Related
// Create workbook
- FUniver.createUniverSheet() // Will be deprecated
+ FUniver.createWorkbook() // Recommended
// Get active workbook
- FUniver.getActiveUniverSheet() // Will be deprecated
+ FUniver.getActiveWorkbook() // Recommended
- Conditional Formatting
FWorksheet {
- createConditionalFormattingRule() // Will be deprecated
+ newConditionalFormattingRule() // Recommended
}
- Original hyperlink Facade APIs will have new alternatives in future versions
💔 Breaking Changes
- FFormula import path change:
- import type { FFormula } from '@univerjs/engine-formula';
+ import type { FFormula } from '@univerjs/engine-formula/facade';
- Image operations upgraded to async APIs:
FOverGridImage {
- setPosition(row: number, column: number): boolean;
- setPosition(row: number, column: number, rowOffset?: number, columnOffset?: number): boolean;
- setSize(width: number, height: number): boolean;
+ setPositionAsync(row: number, column: number): Promise<boolean>;
+ setPositionAsync(row: number, column: number, rowOffset?: number, columnOffset?: number): Promise<boolean>;
+ setSizeAsync(width: number, height: number): Promise<boolean>;
}
FOverGridImageBuilder {
- build(): Promise<ISheetImage>;
+ buildAsync(): Promise<ISheetImage>;
}
📝 Univer Docs
- Fixed known issues
🌐 Univer Server
- Fixed known issues
📦 Univer Presets
-
Updated to the latest version of Univer
-
Adjustment of UMD version variable introduction method
before:
const { createUniver, LocaleType, merge, defaultTheme } = UniverPresets;
after:
const { createUniver } = UniverPresets;
const { LocaleType, merge } = UniverCore;
const { defaultTheme } = UniverDesign;
📢 0.6.0 Preview
Important
The development of version 0.6.0 is currently underway. Starting with this release, Univer will support integration with projects using React@19 . However, this update may introduce breaking changes for users relying on React@16 or Univer UMD builds.
If you have any questions or concerns, please feel free to share your suggestions and feedback via GitHub Issues.
📢 Univer Go
Univer Go 0.0.7 has been released, integrating AI, logging, and the latest Univer SDK features. You don't need to configure complex development environments - just code and share your collaborative spreadsheet applications. Try it now! Univer Go
📢 Join the Conversation
We welcome your input and insights as we embark on this exciting journey. Connect with us on:
📝 Changelog
Full changelog (2025-01-13)
Bug Fixes
- better facade comment (#4402) (59a1774)
- design: ensure colorpicker trigger onChanged callback on mouseup event (#4443) (32f1d30)
- design: ensure colorpicker triggers value change after color selection (#4441) (c4d8a1b)
- design: improve styling of Tooltip (#4463) (fcf5bbf)
- facade: insert empty text error (#4465) (88a0c86)
- font interceptor (#4453) (48080f6)
- formula: clear ast cache (#4439) (c504fcb)
- formula: fix formula facade import (#4438) (b1e4ae8)
- formula: node maker handle blank (#4347) (2fbe824)
- paste border should cover origin border (#4321) (7cdd2e6)
- pointer event (#4456) (58d8551)
- ref selection clear (#4387) (c2d126e)
- sheet: sheet name quote (#4198) (f42c01a)
- sidebar visible shoule be false when close (#4343) (c8f2171)
- ui: improve the style of Ribbon (#4448) (4be0fb9)
Features
- add find replace facade api (#4430) (e34c664)
- add paste options (#4393) (d758b21)
- facade: add comment & rich-text & data-validation & edit API (#4423) (cff224f)
- facade: add formula facade (#4348) (de097d8)
- facade: add lexer-tree-builder (#4444) (a36c4f3)
- facade: add ui facade (#4452) (6b723c9)
- facade: univer-sheet change to workbook (#4460) (c4e9c3a)
- formula: support lambda in function register (#4298) (a1b7a16)
- image: add event and enum ([#4429](https://github.com/dream-num/univer...
🎉 Release v0.5.3
🎊 [email protected]
🚧 Important Note
This project is still in heavy development, and major API changes are expected. 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!
📊 Introducing Univer Go Beta!
Important
Univer Go Beta is now available!
We are excited to announce the release of Univer Go, a new desktop application that enables you to build your own spreadsheet and seamlessly integrate with AI agents, databases, and applications.
✨ Fun Built-in Templates
- AI Spreadsheet Translator: Utilize the Univer API in combination with AI to achieve instant multilingual translation of spreadsheet content
- Work Calendar: Generate a work calendar with one click, demonstrating how to use the Univer API to load snapshot data, customize formulas, bind cell events, and utilize the permissions module
- Gantt Chart: Insert any number of Gantt charts into a spreadsheet with a single click, showcasing how to use the Univer API to add formulas, adjust cell styles, merge cells, set conditional formatting, and add data validation
- High-performance Pivot Tables: Quickly create pivot tables and discover how to use the pivot table API in Univer Go to enhance data analysis efficiency
- Tic Tac Toe: Share a link to play Tic-Tac-Toe with friends, learn how to bind Canvas events and implement real-time multiplayer interactions
More templates are waiting for you to explore. Feel free to share your templates with us!
Beta version is now available for both Windows. We welcome community members to test it out and share their feedback to help us improve the platform!
📊 Univer Sheets
🎉 Highlights
In this release, we are excited to introduce a new set of features and improvements to enhance your Univer experience. Here are the highlights:
- Optimized Facade API chaining, enabling more fluent API calls. This update may require adjustments to existing code, please refer to the Breaking Changes section #4329 #4403 #4412
import '@univerjs/sheets/facade'
univerAPI.getActiveWorkbook().insertSheet()
// set basic properties
.setName('Sales Report 2024')
// set freeze pane
.setFrozenRows(2)
.setFrozenColumns(1)
// set column width
.setColumnWidths(0, 1, 180) // product name column
.setColumnWidths(1, 1, 120) // price column
.setColumnWidths(2, 1, 100) // quantity column
.setColumnWidths(3, 1, 120) // total price column
.setColumnWidths(4, 1, 150) // note column
// set row height
.setRowHeight(0, 35) // main header
.setRowHeight(1, 30) // sub header
// set values
.getRange("a1:e1")
.setValues([
["product name", "price", "quantity", "total price", "note"],
])
- Added range theme feature with 31 built-in themes, Documentation #4369
import '@univerjs/sheets/facade'
univerAPI.getActiveWorkbook().getActiveSheet().getRange("a1:c5").useThemeStyle('default')
univerAPI.getActiveWorkbook().getActiveSheet().getRange("a1:c5").useThemeStyle(null)
- Added Facade API
FRange.splitTextToColumns
for splitting text into columns
import '@univerjs/sheets/facade'
univerAPI.getActiveWorkbook().getActiveSheet().getRange("a1").setValue("1;2;3").splitTextToColumns()
- Added Facade API
FFormula.registerFunction
andFFormula.registerAsyncFunction
for creating custom functions #4399
import '@univerjs/sheets/facade'
import '@univerjs/sheets/sheets-formula'
univerAPI.getFormula().registerFunction('HELLO', (name) => `Hello, ${name}!`, 'A simple greeting function');
// Use the function in a cell
univerAPI.getActiveWorkbook().getActiveSheet().getRange('A1').setValue('World');
univerAPI.getActiveWorkbook().getActiveSheet().getRange('A2').setValue({ f: '=HELLO(A1)' });
// A2 will display: "Hello, World!"
🐞 Bug Fixes
- Fixed mouse scrollbar operation issues #4396
- Fixed non-responsive dropdown menu clicks in the More menu #4416
- Fixed known issues
💔 Breaking Changes
Tools.deepMerge
is deprecated, please usemerge
instead
Before:
import { Tools } from '@univerjs/core'
Tools.deepMerge(obj1, obj2)
After:
import { merge } from '@univerjs/core'
merge(obj1, obj2)
- Changed return type of chained Facade API calls from
Promise<boolean>
toFUniver
orFWorkbook
orFWorksheet
orFRange
orFDataValidation
orFFilter
#4329 #4403 #4412
Before:
await univerAPI.getActiveWorkbook().getActiveSheet().getRange('A1:A5').setValue('123');
await univerAPI.getActiveWorkbook().getActiveSheet().getRange('A1:A5').merge()
After:
univerAPI.getActiveWorkbook().getActiveSheet().getRange('A1:A5').setValue('123').merge();
FUniver{
...
-setCrosshairHighlightColor(color: string): void;
+setCrosshairHighlightColor(color: string): FUniver;
-setCrosshairHighlightEnabled(enabled: boolean): void;
+setCrosshairHighlightEnabled(enabled: boolean): FUniver;
-showMessage(options: IMessageProps): void;
+showMessage(options: IMessageProps): FUniver;
-addWatermark(type: IWatermarkTypeEnum.Text, config: ITextWatermarkConfig): void;
+addWatermark(type: IWatermarkTypeEnum.Text, config: ITextWatermarkConfig): FUniver;
-addWatermark(type: IWatermarkTypeEnum.Image, config: IImageWatermarkConfig): void;
+addWatermark(type: IWatermarkTypeEnum.Image, config: IImageWatermarkConfig): FUniver;
-deleteWatermark(): void;
+deleteWatermark(): FUniver;
...
}
FWorkbook{
...
-deleteActiveSheet(): Promise<boolean>;
+deleteActiveSheet(): FWorkbook;
-deleteSheet(sheet: FWorksheet): Promise<boolean>;
+deleteSheet(sheet: FWorksheet): FWorkbook;
-duplicateActiveSheet(): Promise<boolean>;
+duplicateActiveSheet(): FWorkbook;
-duplicateSheet(sheet: FWorksheet): Promise<boolean>;
+duplicateSheet(sheet: FWorksheet): FWorkbook;
-moveActiveSheet(index: number): Promise<boolean>;
+moveActiveSheet(index: number): FWorkbook;
-moveSheet(sheet: FWorksheet, index: number): Promise<boolean>;
+moveSheet(sheet: FWorksheet, index: number): FWorkbook;
-redo(): Promise<boolean>;
+redo(): FWorkbook;
-undo(): Promise<boolean>;
+undo(): FWorkbook;
...
}
FWorksheet {
...
-cancelFreeze(): boolean;
+cancelFreeze(): FWorksheet;
-clear(options?: IFacadeClearOptions): Promise<boolean>;
+clear(options?: IFacadeClearOptions): FWorksheet;
-clearContents(): Promise<boolean>;
+clearContents(): FWorksheet;
-clearFormats(): Promise<boolean>;
+clearFormats(): FWorksheet;
-deleteColumn(columnPosition: number): Promise<FWorksheet>;
+deleteColumn(columnPosition: number): FWorksheet;
-deleteColumns(columnPosition: number, howMany: number): Promise<FWorksheet>;
+deleteColumns(columnPosition: number, howMany: number): FWorksheet;
-deleteRow(rowPosition: number): Promise<FWorksheet>;
+deleteRow(rowPosition: number): FWorksheet;
-deleteRows(rowPosition: number, howMany: number): Promise<FWorksheet>;
+deleteRows(rowPosition: number, howMany: number): FWorksheet;
-hideColumn(column: FRange): Promise<FWorksheet>;
+hideColumn(column: FRange): FWorksheet;
-hideColumns(columnIndex: number, numColumns?: number): Promise<FWorksheet>;
+hideColumns(columnIndex: number, numColumns?: number): FWorksheet;
-hideRow(row: FRange): Promise<FWorksheet>;
+hideRow(row: FRange): FWorksheet;
-hideRows(rowIndex: number, numRows?: number): Promise<FWorksheet>;
+hideRows(rowIndex: number, numRows?: number): FWorksheet;
-hideSheet(): void;
+hideSheet(): FWorksheet;
-insertColumnAfter(afterPosition: number): Promise<FWorksheet>;
+insertColumnAfter(afterPosition: number): FWorksheet;
-insertColumnBefore(beforePosition: number): Promise<FWorksheet>;
+insertColumnBefore(beforePosition: number): FWorksheet;
-insertColumns(columnIndex: number, numColumns?: number): Promise<FWorksheet>;
+insertColumns(columnIndex: number, numColumns?: number): FWorksheet;
-insertColumnsAfter(afterPosition: number, howMany: number): Promise<FWorksheet>;
+insertColumnsAfter(afterPosition: number, howMany: number): FWorksheet;
-insertColumnsBefore(beforePosition: number, howMany: number): Promise<FWorksheet>;
+insertColumnsBefore(beforePosition: number, howMany: number): FWorksheet;
-insertRowAfter(afterPosition: number): Promise<FWorksheet>;
+insertRowAfter(afterPosition: number): FWorksheet;
-insertRowBefore(beforePosition: number): Promise<FWorksheet>;
+insertRowBefore(beforePosition: number): FWorksheet;
-insertRows(rowIndex: number, numRows?: number): Promise<FWorksheet>;
+insertRows(rowIndex: number, numRows?: number): FWorksheet;
-insertRowsAfter(afterPosition: number, howMany: number): Promise<FWorksheet>;
+insertRowsAfter(afterPosition: number, howMany: number): FWorksheet;
-insertRowsBefore(beforePosition: number, howMany: number): Promise<FWorksheet>;
+insertRowsBefore(beforePosition: number, howMany: number): FWorksheet;
-moveColumns(columnSpec: FRange, destinationIndex: number): Promise<FWorksheet>;
+moveColumns(columnSpec: FRange, destinationIndex: number): FWorksheet;
-moveRows(rowSpec: FRange, destinationIndex: number): Promise<FWorksheet>;
+moveRows(rowSpec: FRange, destinationIndex: number): FWorksheet;
-setColumnCus...
🎉 Release v0.5.2
🎊 [email protected]
🚧 Important Note
This project is still in heavy development, and major API changes are expected. 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!
📊 Introducing Univer Go Beta!
Important
Univer Go Beta is now available!
We are excited to announce the release of Univer Go, a new desktop application that enables you to build your own spreadsheet and seamlessly integrate with AI agents, databases, and applications.
✨ Fun Built-in Templates
- AI Spreadsheet Translator: Utilize the Univer API in combination with AI to achieve instant multilingual translation of spreadsheet content
- Work Calendar: Generate a work calendar with one click, demonstrating how to use the Univer API to load snapshot data, customize formulas, bind cell events, and utilize the permissions module
- Gantt Chart: Insert any number of Gantt charts into a spreadsheet with a single click, showcasing how to use the Univer API to add formulas, adjust cell styles, merge cells, set conditional formatting, and add data validation
- High-performance Pivot Tables: Quickly create pivot tables and discover how to use the pivot table API in Univer Go to enhance data analysis efficiency
- Tic Tac Toe: Share a link to play Tic-Tac-Toe with friends, learn how to bind Canvas events and implement real-time multiplayer interactions
More templates are waiting for you to explore. Feel free to share your templates with us!
Beta version is now available for both Windows. We welcome community members to test it out and share their feedback to help us improve the platform!
📊 Univer Sheets
🎉 Highlights
In this release, we are excited to introduce a new set of features and improvements to enhance your Univer experience. Here are the highlights:
-
Added
Univer.onDispose
for cleanup work #4218 -
Refactored message box and optimized message box styles #4352
-
Added numerous Facade APIs covering: worksheets, selection, UI, name manager, scrollbar, shortcuts, sorting, network, images, conditional formatting, and more
-
Added Facade API for getting multiple selections #4264
import '@univerjs/sheets/facade';
// get active range list
const activeRangeList = univerAPI.getActiveWorkbook().getActiveRangeList();
import '@univerjs/sheets-ui/facade';
// hide selection
univerAPI.getActiveWorkbook().transparentSelection()
// show selection
univerAPI.getActiveWorkbook().showSelection()
- Added Image Operations Facade API #4322
import '@univerjs/sheets-drawing-ui/facade';
const activeSpreadsheet = univerAPI.getActiveWorkbook();
const activeSheet = activeSpreadsheet.getActiveSheet();
// insert image on A1
activeSheet.insertImage('https://avatars.githubusercontent.com/u/61444807?s=48&v=4', 0, 0);
- Added Network Operations Facade API #4294
import '@univerjs/network/facade';
univerAPI.getNetwork().get("/api.json")
.then(res => console.log('data', res.body))
.catch(e => console.log('error', e))
univerAPI.getNetwork().post("/api.json", { headers: {}, body: {} })
- Added Conditional Formatting Facade API #4300
import '@univerjs/sheets-conditional-format/facade';
const workbook = univerAPI.getActiveWorkbook();
const worksheet = workbook.getActiveSheet();
// set style when cell not empty on A1:A100
const rule = worksheet.createConditionalFormattingRule()
.whenCellNotEmpty()
.setRanges([{ startRow: 0, endRow: 100, startColumn: 0, endColumn: 100 }])
.setItalic(true)
.setBackground('red')
.setFontColor('green')
.build();
worksheet.addConditionalFormattingRule(rule);
- Added Sorting Operations Facade API #4312
import '@univerjs/sheets-sort/facade';
const workbook = univerAPI.getActiveWorkbook();
const worksheet = workbook.getActiveSheet();
const range = worksheet.getRange("A1:B3");
// sort A1:B3 by column B in ascending order
range.sort({column: range.getColumn() + 1 ,ascending:true})
import '@univerjs/ui/facade';
// create a custom menu on ribbon
univerAPI.createMenu({
id: 'custom-menu-id',
title: 'Custom Text',
tooltip:'This tip show on hover.',
action: () => {
console.log('Custom Text');
},
}).appendTo('ribbon.start.others');
// show message
univerAPI.showMessage({ content:"Hello, Univer!" })
- Added Name Manager Facade API #4282
import '@univerjs/sheets/facade';
const workbook = univerAPI.getActiveWorkbook();
workbook.insertDefinedName('MyDefinedName', 'Sheet1!A1');
const definedNames = workbook.getDefinedNames();
- Added Scrollbar Facade API #4290
import '@univerjs/sheets-ui/facade';
// get scroll state
univerAPI.getActiveWorkbook().getActiveSheet().getScrollState();
// scroll Event
univerAPI.getActiveWorkbook().getActiveSheet().onScroll((state) => {
console.log('scroll', state);
});
- Added Range to A1 Notation Facade API #4325
import '@univerjs/sheets/facade';
const range = univerAPI.getActiveWorkbook().getActiveRange().getA1Notation();
// convert range to A1:B3
range.getA1Notation();
- More Facade APIs are being added, please refer to the documentation and API reference for more details
🐞 Bug Fixes
- Fixed border display issues when merging cells #4276
- Fixed memory leak issues #4212 #4213
- Fixed color picker reset functionality #4234
- Fixed hyperlink issues #4223 #4237
- Fixed known formula engine issues #4224 #4245
- Fixed known clipboard issues #4268 #4253
- Fixed known formula auto-fill issues #227
- Fixed
XLOOKUP
formula function #4277 - Fixed
SUMIFS
formula function #4216 - Fixed
PRODUCT
formula function #4273 - Fixed performance issues with data validation for large datasets #4376
💔 Breaking Changes
- Merge Facade API will now force merge without prompting #4246
@univerjs-pro/collaboration-client
has been split into three packages:@univerjs-pro/collaboration-client
@univerjs-pro/collaboration-client-node
@univerjs-pro/collaboration-client-ui
-pnpm i @univerjs-pro/collaboration @univerjs-pro/collaboration-client
+pnpm i @univerjs-pro/collaboration @univerjs-pro/collaboration-client @univerjs-pro/collaboration-client-ui
import { UniverCollaborationClientPlugin } from '@univerjs-pro/collaboration-client';
+import { UniverCollaborationClientUIPlugin } from '@univerjs-pro/collaboration-client-ui';
-import '@univerjs-pro/collaboration-client/lib/index.css';
+import '@univerjs-pro/collaboration-client-ui/lib/index.css';
univer.registerPlugin(UniverCollaborationClientPlugin, {
...
});
+univer.registerPlugin(UniverCollaborationClientUIPlugin);
- Fixed incorrect export names
-import { CollabrationImageIoService } from '@univerjs-pro/collaboration-client'
+import { CollaborationImageIoService } from '@univerjs-pro/collaboration-client'
- Print Facade API adjustments, removed unnecessary return values
interface FWorkSheet {
...
- closePrintDialog(): boolean;
- openPrintDialog(): boolean;
- print(): boolean;
+ closePrintDialog(): void;
+ openPrintDialog(): void;
+ print(): void;
...
}
📢 0.6.0 Preview
Important
The development of version 0.6.0 is currently underway. Starting with this release, Univer will support integration with projects using React@19 . However, this update may introduce breaking changes for users relying on React@16 or Univer UMD builds.
If you have any questions or concerns, please feel free to share your suggestions and feedback via GitHub Issues.
📝 Univer Docs
Fixed known rendering issues #4219
🌐 Univer Server
Fixed known issues and improved service stability
📦 Univer Presets
🎉 Highlights
- All new features and Facade APIs from 0.5.2 are now integrated into Presets by default, just import presets to use them
🐞 Bug Fixes
- Fixed known issues in Node.js environment
💔 Breaking Changes
- Dependencies imported through
@univerjs/presets
should now be imported through specific preset entries:
-import { HTTPService } from '@univerjs/presets'
+import { HTTPService } from '@univerjs/presets/preset-sheets-advanced'
@univerjs-pro/thread-comment-datasource
has been removed from presets, requires separate registration if needed.
🎢 Special Thanks
Special thanks to the following contributors who have made this release possible:
📢 Join the Conversation
We welcome your input and insights as we embark on this exciting journey. Connect with us on:
📝 Changelog
Full changelog (2024-12-28)
Bug Fixes
- better disable selection ---> transparent sele...