github dream-num/univer v0.23.0
⚡ Release v0.23.0

3 hours ago

🎊 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)

Don't miss a new univer release

NewReleases is sending notifications on new releases.