Univer: an isomorphic office SDK for embedding spreadsheets, docs, and slides
Univer is a full-stack framework for creating and editing spreadsheets / word processor / presentation on both web and server.
At a glance
- What is it?
- Univer is a TypeScript framework for building spreadsheet, document, and presentation experiences in the browser and on Node.js. This review covers its plugin architecture, Facade API, preset mode, and the trade-offs you should check before adopting it.
- Who is it for?
- Adopt Univer if you need to embed a spreadsheet or document editor inside a SaaS product, internal tool, or AI workflow, and you want the same codebase to run headless on a server. Skip it if you need a stable, production-proven office suite with extensive documentation and a large community, because Univer is still evolving rapidly (version 0.25.x as of mid-2026) and its API may change.
- Can I use it commercially?
- Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 1 day ago.
- What is it written in?
- Mainly TypeScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 14, 2026, and from our analysis. They are not legal advice.
DEEP OPEN-SOURCE ANALYSIS
What Univer actually solves
Univer addresses a specific pain: building office-style editing surfaces inside your own product without adopting a hosted app or a fixed UI. The README positions it as a full-stack, isomorphic office SDK. That means you can embed a spreadsheet editor in a browser tab, and also run workbook or document processing on a Node.js server using the same architecture. The target users are developers building SaaS products, internal tools, BI dashboards, or AI applications that need spreadsheet or document editing. Univer is not a file viewer; it is a framework for constructing your own productivity surface. The distinction matters because you are expected to compose plugins and possibly write custom ones, not just drop in a ready-made component. The project's own language says it is 'plugin-shaped by default' and 'headless for AI infrastructure'. That headless capability is rare among open-source office SDKs, which usually tie rendering to the browser. Univer's claim is that the same logic runs in both environments, which is the core reason to consider it over simpler embeddable grids or document viewers.
How the architecture supports browser and server
The architectural core is a plugin system combined with a Canvas-based rendering engine and a separate formula engine. The README lists these as separate packages: @univerjs/core, @univerjs/engine-render, @univerjs/engine-formula, @univerjs/sheets, @univerjs/docs, and so on. Each capability is a plugin. This modularity lets you lazy-load features, replace them, or omit them entirely to reduce bundle size. The rendering engine is shared across document types, which means the same Canvas layer draws spreadsheets, documents, and presentations. The formula engine is dedicated, not bolted on, which the README claims keeps complex workbooks responsive. The Facade API is the unified surface for working with workbooks, ranges, formulas, documents, commands, and events. It is the same API in the browser and on Node.js, so server-side logic can manipulate a workbook without a DOM. The README shows a quick start where an instance is created with createUniver and then univerAPI.createWorkbook({}) is called. That API abstraction is what makes the isomorphic promise concrete: you write one set of operations and they run in both contexts. The trade-off is that you must learn the Facade API and the plugin model before you can do anything beyond the presets.
Two integration paths: plugin mode and preset mode
Univer offers two ways to get started, and the choice affects how much control you have. Plugin Mode is the lower-level path. You install individual packages and register them manually. The README shows installing a long list of packages: @univerjs/core, @univerjs/design, @univerjs/docs, @univerjs/docs-ui, @univerjs/engine-formula, @univerjs/engine-render, @univerjs/sheets, @univerjs/sheets-formula, @univerjs/sheets-formula-ui, @univerjs/sheets-numfmt, @univerjs/sheets-numfmt-ui, @univerjs/sheets-ui, and @univerjs/ui. Then you import each plugin class, such as UniverSheetsPlugin, UniverFormulaEnginePlugin, and UniverRenderEnginePlugin, and pass them to the Univer instance. You also merge locale files manually. This path gives you strict control over what loads, which matters for bundle size and for avoiding unwanted features. Preset Mode is the curated shortcut. You install @univerjs/presets and @univerjs/preset-sheets-core, then call createUniver with a presets array. The README example uses UniverSheetsCorePreset({ container: 'app' }) and imports a single CSS file. This is faster for a working app, but you inherit the preset's plugin set. The README says presets include the required Facade API registrations and styles, so you do not need to wire those yourself. The choice is between speed and control, and the README's comparison table makes that explicit.
Getting it running: commands and config keys
The installation commands are straightforward. For Plugin Mode, you run pnpm add with the list of packages shown above. For Preset Mode, you run pnpm add @univerjs/presets @univerjs/preset-sheets-core. The README gives a minimal TypeScript example for Preset Mode: import the preset, import the English locale, import the CSS, then call createUniver with a config object that includes locale: LocaleType.EN_US and a locales object that merges the preset locale. The container is specified as a string 'app', which corresponds to a div with id="app" and a height style. The example then calls univerAPI.createWorkbook({}) to create an empty workbook. The same pattern applies to Plugin Mode, but you must construct the Univer instance manually and register each plugin. The README also mentions that you need to merge locales with mergeLocales from @univerjs/core. The key config keys are locale, locales, presets, and container. There is no mention of authentication, server-side rendering, or persistence in the README, so you will need to look at the documentation for those. The quick start is minimal, but it is enough to get a blank sheet on screen.
Where Univer is the wrong tool
Univer is not a drop-in replacement for a full office suite. The README explicitly says it is a framework, not a viewer. That means you must be prepared to write code to extend it. If you only need to display a spreadsheet read-only, a simpler library would be less work. The plugin architecture, while flexible, adds a learning curve. The README shows a long list of packages for even a basic sheet setup in Plugin Mode, which suggests that the default bundle is heavy if you take the preset route. Another limitation is the maturity of the project. The latest release is v0.25.1, and the version number 0.x signals that the API is not stable. The README does not mention any guarantees about backward compatibility. If you build a product on Univer, you may need to track breaking changes between minor releases. The README also does not mention collaborative editing, which is a common requirement for office apps. It mentions 'AI infrastructure' and 'automation', but not real-time co-editing. If you need that, you will have to build it yourself or check the documentation. The headless mode is a strength, but it also means you need a server-side runtime and a way to sync state between the server and the client, which the README does not explain.
A real alternative: comparing approaches
The most direct alternative is to use a hosted or self-hosted office suite like OnlyOffice or Collabora Online, which provide full document editors with collaborative editing out of the box. Those products are monolithic: you embed them via an iframe or a JavaScript API, and they handle the entire editing experience, including real-time collaboration, file format conversion, and user management. Univer's approach is different. It is a component-level SDK where you assemble the editor from plugins and control the rendering with Canvas. The trade-off is clear. With OnlyOffice, you get a complete, battle-tested editor quickly, but you have less control over the UI and the rendering, and you may be locked into their server architecture. With Univer, you can build a custom editing surface that fits your product, and you can run the same logic on the server for headless processing, but you take on the maintenance of the integration. The README does not mention any built-in collaboration, so if that is a requirement, OnlyOffice or Collabora is the safer choice. Univer's isomorphic design is the differentiator: no other mainstream office SDK offers the same code running in the browser and Node.js with a unified API.
Maintenance, licensing, and upgrade cost
Univer is licensed under Apache-2.0, which is permissive for commercial use, but you should verify the license implications for your specific use case. The project is actively developed, with releases in May and June 2026 (v0.24.0, v0.25.0, v0.25.1). The default branch is dev, and the last push was in June 2026, so the project is not abandoned. However, the 0.x versioning means the upgrade cost could be significant. Each minor release may introduce breaking changes to the plugin API or the Facade API. The README does not provide a migration guide, so you would need to review the release notes and changelog. The plugin architecture also means that when you upgrade, you must update all the packages together to avoid version mismatches. The README does not mention a monorepo or a tool for that, but the package list suggests a coordinated release. The documentation site is at docs.univer.ai, and there is an API reference, which helps with maintenance. The project also has a blog and a showcase, but the README does not detail the upgrade process. Plan time for testing after each upgrade.
Editorial conclusion
Adopt Univer if you need to embed a spreadsheet or document editor inside a SaaS product, internal tool, or AI workflow, and you want the same codebase to run headless on a server. Skip it if you need a stable, production-proven office suite with extensive documentation and a large community, because Univer is still evolving rapidly (version 0.25.x as of mid-2026) and its API may change. Before committing, verify that your required features (e.g., specific formula functions, collaborative editing, or import/export formats) are covered by the current plugins, and check the release notes for breaking changes between minor versions. The project's isomorphic design is a genuine differentiator, but it comes with complexity: you must understand the plugin system and the Facade API to build anything non-trivial.
Community notes