univer README

The project's README from github.com/dream-num/univer. As one markdown file: README.md.

Univer SDK

A full-stack, isomorphic office SDK for building spreadsheets, documents, and presentations.

Build embeddable productivity experiences with a plugin architecture, Canvas-based rendering, a formula engine, and one Facade API that works in the browser and on Node.js.

English | 简体中文 | 繁體中文 | 日本語 | 한국어 | Español

📖 Documentation | ✨ Showcase | 📘 API Reference | 📝 Blog

Release License Build CodeFactor Codecov

Stars Contributors Issues Last Commit

Discord Twitter Open Collective

Trendshift

✨ What is Univer?

Univer is an open-source SDK for creating office applications inside your own product. It gives you the building blocks for spreadsheet, document, and presentation experiences without forcing you into a hosted app or a fixed UI.

Use Univer when you need to:

Univer is not a spreadsheet file viewer only. It is a framework for building your own productivity surface.

🌟 Highlights

⚡
Built for large surfaces
Canvas-based rendering and a dedicated formula engine keep complex workbooks responsive.
🧩
Plugin-shaped by default
Compose, replace, lazy-load, or extend capabilities without taking the whole stack.
🤖
Headless for AI infrastructure
Run workbook and document logic in Node.js to power agents, automation, and server-side workflows.
🛠️
Product-ready SDK
Framework adapters, Facade APIs, presets, and headless runtime fit real integration paths.
🌗
Dark-mode ready
UI components and the rendering engine both adapt to light and dark themes.
🔌
Unified Facade API
One consistent API surface for workbooks, ranges, formulas, and documents across browser and Node.js.

🚀 Why Univer?

⚡ Quick Start

Use Plugin Mode for complete product coverage and precise composition. For supported Sheets, Docs, and Node profiles, Preset Mode provides a shorter curated setup.

Plugin Mode

Plugin Mode gives you lower-level control over packages, style imports, locale merging, Facade API registration, and plugin configuration.

pnpm add @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 @univerjs/ui
import { LocaleType, mergeLocales, Univer } from '@univerjs/core'
import { FUniver } from '@univerjs/core/facade'
import DesignEnUS from '@univerjs/design/locale/en-US'
import { UniverDocsPlugin } from '@univerjs/docs'
import { UniverDocsUIPlugin } from '@univerjs/docs-ui'
import DocsUIEnUS from '@univerjs/docs-ui/locale/en-US'
import { UniverFormulaEnginePlugin } from '@univerjs/engine-formula'
import { UniverRenderEnginePlugin } from '@univerjs/engine-render'
import { UniverSheetsPlugin } from '@univerjs/sheets'
import SheetsEnUS from '@univerjs/sheets/locale/en-US'
import { UniverSheetsFormulaPlugin } from '@univerjs/sheets-formula'
import SheetsFormulaEnUS from '@univerjs/sheets-formula/locale/en-US'
import { UniverSheetsFormulaUIPlugin } from '@univerjs/sheets-formula-ui'
import SheetsFormulaUIEnUS from '@univerjs/sheets-formula-ui/locale/en-US'
import { UniverSheetsNumfmtPlugin } from '@univerjs/sheets-numfmt'
import { UniverSheetsNumfmtUIPlugin } from '@univerjs/sheets-numfmt-ui'
import SheetsNumfmtUIEnUS from '@univerjs/sheets-numfmt-ui/locale/en-US'
import { UniverSheetsUIPlugin } from '@univerjs/sheets-ui'
import SheetsUIEnUS from '@univerjs/sheets-ui/locale/en-US'
import { UniverUIPlugin } from '@univerjs/ui'
import UIEnUS from '@univerjs/ui/locale/en-US'

import '@univerjs/design/lib/index.css'
import '@univerjs/ui/lib/index.css'
import '@univerjs/docs-ui/lib/index.css'
import '@univerjs/sheets-ui/lib/index.css'
import '@univerjs/sheets-formula-ui/lib/index.css'
import '@univerjs/sheets-numfmt-ui/lib/index.css'

import '@univerjs/engine-formula/facade'
import '@univerjs/ui/facade'
import '@univerjs/sheets/facade'
import '@univerjs/sheets-ui/facade'
import '@univerjs/sheets-formula/facade'
import '@univerjs/sheets-numfmt/facade'

const univer = new Univer({
  locale: LocaleType.EN_US,
  locales: {
    [LocaleType.EN_US]: mergeLocales(
      DesignEnUS,
      UIEnUS,
      DocsUIEnUS,
      SheetsEnUS,
      SheetsUIEnUS,
      SheetsFormulaEnUS,
      SheetsFormulaUIEnUS,
      SheetsNumfmtUIEnUS,
    ),
  },
})

univer.registerPlugin(UniverRenderEnginePlugin)
univer.registerPlugin(UniverFormulaEnginePlugin)
univer.registerPlugin(UniverUIPlugin, { container: 'app' })
univer.registerPlugin(UniverDocsPlugin)
univer.registerPlugin(UniverDocsUIPlugin)
univer.registerPlugin(UniverSheetsPlugin)
univer.registerPlugin(UniverSheetsUIPlugin)
univer.registerPlugin(UniverSheetsFormulaPlugin)
univer.registerPlugin(UniverSheetsFormulaUIPlugin)
univer.registerPlugin(UniverSheetsNumfmtPlugin)
univer.registerPlugin(UniverSheetsNumfmtUIPlugin)

const univerAPI = FUniver.newAPI(univer)
univerAPI.createWorkbook({})
Preset Mode

Presets are curated collections of Univer plugins that include the required Facade API registrations and styles.

pnpm add @univerjs/presets @univerjs/preset-sheets-core
import { UniverSheetsCorePreset } from '@univerjs/preset-sheets-core'
import UniverPresetSheetsCoreEnUS from '@univerjs/preset-sheets-core/locales/en-US'
import { createUniver, LocaleType, mergeLocales } from '@univerjs/presets'

import '@univerjs/preset-sheets-core/lib/index.css'

const { univerAPI } = createUniver({
  locale: LocaleType.EN_US,
  locales: {
    [LocaleType.EN_US]: mergeLocales(UniverPresetSheetsCoreEnUS),
  },
  presets: [
    UniverSheetsCorePreset({
      container: 'app',
    }),
  ],
})

univerAPI.createWorkbook({})

Your page needs a container:

<div id="app" style="height: 100vh"></div>

Learn more in the Installation & Basic Usage guide, the createUniver reference, and the Facade API reference.

🧩 Preset Mode vs Plugin Mode

Choose When to use it Start here
Plugin Mode You need strict control over packages, configured dependencies, lazy loading, or custom runtime composition. This repository's examples/ and architecture guide
Preset Mode You want a working Sheets, Docs, or Node setup with minimal configuration. This repository's presets/ and the getting started guide
Headless Mode You need server-side workbook/document processing, formula calculation, or automation without UI. Headless Univer

Keep the @univerjs/* SDK packages in the same coordinated Univer release line on the same version. Independently released packages, including @univerjs/icons and @univerjs/icons-svg, use the compatible versions declared by package manifests instead of the SDK version. If you use Univer Pro packages, keep @univerjs-pro/* aligned with the matching coordinated release line.

For API compatibility expectations, experimental APIs, internal APIs, and deprecation rules, see the API Stability Policy.

🧭 Compatibility

🛠️ What You Can Build

Area Open-source capabilities Univer Pro extensions
Sheets Workbooks, worksheets, ranges, selection, formulas, number formatting, filtering, sorting, data validation, conditional formatting, hyperlinks, comments, find and replace, notes, tables, drawing integration, and extensible UI plugins. Real-time collaboration, edit history, import/export, printing, charts, pivot tables, sparklines, outlines, shapes, in-cell graphics, data connectors, server-side calculation, and performance-enhanced formula features.
Docs Rich document model, editing UI, lists, hyperlinks, drawing integration, comments, quick insert, and shared document architecture. Collaboration, import/export, printing, enhanced tables and lists, columns, callouts, code blocks, quotes, shapes, and remote comment resources.
Slides Presentation data model and UI packages under active development. Pro slide model and UI, slide import/export, chart and table model/UI plugins, and shared shape-editing infrastructure.
Bases Build custom structured-data experiences on top of Univer's plugin, command, and model architecture. Base database model, commands, formula integration, workbench UI, field editors, and render-engine views.
Runtime Browser apps, Node.js headless usage, Web Worker/RPC patterns, multi-instance usage, and server-oriented automation. Collaboration client/server packages, Node.js collaboration client, Pro server services, SSR, computing delegation, server-side calculation, and changeset replay tooling.
Integrations React, Vue, Web Components, framework templates, theming, localization, and custom plugins. Pro presets and enterprise deployment packages.

Sheets are the most mature product surface today. Docs and Slides share Univer's architecture and continue to evolve in the same SDK.

🔓 Open Source and Pro

This repository contains Univer's open-source core and first-party OSS plugins. Univer Pro is developed separately as a commercial extension layer for advanced product surfaces, collaboration, server features, and enterprise integrations.

Category Open source Univer Pro / commercial
Foundation Core SDK, plugin system, rendering engine, formula engine, Facade API, themes, i18n, and framework adapters. Pro presets and enterprise deployment packages.
Sheets Core spreadsheet editing, formulas, number formatting, filter/sort, data validation, conditional formatting, notes, tables, hyperlinks, comments, drawing, find and replace. Collaboration, edit history, import/export, print, charts, pivot tables, sparklines, outlines, shapes, in-cell graphics, data connectors, range preprocessing, and enhanced formula engine features.
Docs Document model and editor UI, lists, hyperlinks, comments, quick insert, and drawing integration. Collaboration, import/export, print, enhanced tables/lists, columns, callouts, code blocks, quotes, shapes, and remote thread-comment resources.
Slides OSS presentation model and UI packages. Pro slide model/UI packages, slide import/export, charts, tables, and reusable shape editor UI.
Bases Extensible plugin architecture for custom data-centric products. Base database core model, commands, mutations, formula integration, workbench UI, field editors, and render-engine integration.
Server and runtime Node.js headless runtime, RPC/Web Worker patterns, and server-oriented automation primitives. Collaboration server, Node.js collaboration client, SSR services, computing delegation, server-side calculation, and collaboration changeset replay tooling.

Pro features are documented in the Univer Pro guide. They are intentionally separated here so the OSS package surface is clear.

Boundary principles:

🌐 Ecosystem

📦 Repository Guide

.
├── packages/      Core packages, engines, document types, UI plugins, and feature plugins
├── examples/      All-in-one Vite workbench used for local browser development
├── common/        Shared internal tooling, storybook, and utilities
├── tests/         Additional integration test projects
└── docs/          Architecture notes, images, and repository-local documentation

Package-level READMEs live beside each package under packages/.

🧑‍💻 Development

Requirements:

git clone https://github.com/dream-num/univer.git
cd univer
pnpm install
pnpm dev

Useful commands:

Command Purpose
pnpm dev Start the all-in-one Sheets, Docs, and Slides workbench with Vite 8 Bundled Dev and HMR.
pnpm build Build workspace packages, excluding internal common packages.
pnpm test Run unit tests through Turbo.
pnpm typecheck Run TypeScript checks through Turbo.
pnpm lint Run ESLint.
pnpm storybook:dev Start Storybook for UI component development.

Read CONTRIBUTING.md before opening a pull request.

📝 Contributor Notes

Repository-local notes worth reading before deeper changes:

univer (dream-num/univer)

Searching Database…

22.7K ·GitHub
Что это такое?Univer — это SDK с открытым исходным кодом для встраивания редактирования таблиц, документов и презентаций прямо в ваш продукт, вместо размещения отдельного офисного приложения.
Univer — это готовое приложение или набор инструментов, из которых я что-то собираю?Это SDK и фреймворк на основе плагинов: движок отрисовки на Canvas, движок формул и единый API Facade, из которых вы собираете свой интерфейс. Это не готовый редактор, который можно просто открыть.
Как запустить рабочий экземпляр Univer?Вызовите createUniver() для элемента-контейнера на вашей странице. Можно использовать режим Plugin Mode (вручную собрать отдельные пакеты) или режим Preset Mode (готовые наборы плагинов для быстрой настройки Sheets, Docs или Node).
Какая версия Node.js или браузера мне нужна?Для работы Univer в headless-режиме нужен Node.js 18.17.0+, а для разработки самого монорепозитория — Node.js 22.18+ и pnpm 11+. В браузере поддерживаются Chrome 88+, Firefox 90+, Safari 14.1+, Edge 88+ и Electron 12+, и может понадобиться полифилл для Intl.Segmenter.
Одинаково ли доработаны все офисные модули (Sheets, Docs, Slides)?Нет. Sheets — самый зрелый модуль, а Slides и функция таблиц данных «Bases» всё ещё активно разрабатываются. Многие продвинутые возможности (совместное редактирование в реальном времени, импорт и экспорт, диаграммы, сводные таблицы) есть только в коммерческом слое Univer Pro, а не в открытом ядре.
SDK целиком бесплатный или часть его платная?Пакеты из репозитория распространяются под лицензией Apache-2.0 и могут использоваться отдельно. Univer Pro — это отдельный коммерческий слой расширений для совместной работы, импорта и экспорта, а также корпоративных и серверных функций.
В чём разница между Plugin Mode и Preset Mode?Plugin Mode позволяет вручную собирать отдельные пакеты Univer и полностью контролировать загрузку, стили и размер бандла. Preset Mode использует готовые наборы плагинов, чтобы быстро получить рабочую настройку Sheets, Docs или Node.
Почему Univer называют «офисной обвязкой для ИИ-агентов»?Univer может работать в headless-режиме в Node.js, поэтому ИИ-агенты и скрипты автоматизации могут управлять таблицами, документами и PDF через тот же API Facade, что и в браузере, без какого-либо интерфейса.
Какими фреймворками интерфейса я могу пользоваться?Слой представления Univer построен на React 18. Он совместим с React 16.9 и 17 и с React 19, а также включает интеграции для Vue и Web Components.
Что такое Univer Pro и что он добавляет к открытому ядру?Univer Pro — это отдельно разрабатываемый коммерческий слой. Он добавляет к пакетам открытого ядра Sheets, Docs, Slides и Bases совместное редактирование в реальном времени, импорт и экспорт, печать, диаграммы, сводные таблицы и серверные сервисы.
Creator
dream-num
Size
173.1 MB
Stars
22.7K
Age
4y
Commits · 90 Days