Embed the surface
Give your SaaS, internal tool or AI app a real editable workbook or document instead of building one from scratch.
Univer is an open-source SDK for embedding spreadsheet, document and presentation experiences inside products you already own.
Give your SaaS, internal tool or AI app a real editable workbook or document instead of building one from scratch.
Pick a quick preset or assemble plugins yourself. Add, remove, replace or lazy-load capabilities as your product grows.
Agents can inspect and edit structured Office content, while people review the result in a familiar interactive surface.
The workflow, data, permissions and AI experience you already own.
Structured content, formulas, commands, rendering and Facade APIs.
An agent creates a decision dashboard, report or mini-app inside a workspace. Web controls and metrics can bind to cells and update collaboratively.
Example: Univer Workspace or an internal planning cockpit.
Run workbook or document logic on the server for generation, inspection, formula calculation or workflow automation without rendering a UI.
Example: an agent prepares a budget pack overnight.
Compose the editor around the job: add domain menus, validation, approval steps, custom commands or embedded components.
Example: a recipe costing, supply planning or product-quality tool.
Keep structured content and higher-level APIs consistent across browser and Node.js paths, rather than maintaining separate business logic.
Example: generate in Node, review in the browser.
Most of the leverage comes from the seams: plugins, shared models, rendering and a Facade API that make the same core useful to an app, an agent and a server process.
Curated plugin collections for a fast working Sheets, Docs or Node setup. Good for prototypes, internal tools and a first product slice.
Manually register packages, styles, locales, Facade APIs and configuration. Good for smaller bundles, lazy loading or custom runtime composition.
export class QualityGatePlugin { onStarting(injector) { injector.add(IQualityGateService, { validate: (workbook) => { // shared logic: browser + Node return checkRanges(workbook) } }) } } // UI plugin owns menus and shortcuts export class QualityGateUIPlugin { onStarting() { /* React / Canvas UI */ } }
Read workbook or document structure through APIs instead of guessing from a screenshot.
Write values, formulas or document content through explicit, reviewable operations.
Check content, render output, screenshots and layout diagnostics before delivery.
Keep a human in the loop with drafts, shared revisions or isolated worktrees where needed.
Availability of live collaboration, shared revisions and worktree workflows depends on the relevant Web SDK, collaboration capabilities and licensing.
Start narrow: one surface, one workflow, one validation loop. Add collaboration and deeper customisation only when the product earns it.
Decide whether the first slice is interactive, headless or both. Keep the domain workflow outside the editor core.
Use @univerjs/presets plus @univerjs/preset-sheets-core for a minimal browser setup.
Give Univer a full-height element, create a workbook, then mount your app shell around it.
For example: import data → calculate → flag exceptions → ask for review → export or hand off.
import { UniverSheetsCorePreset } from '@univerjs/preset-sheets-core' import presetEnUS 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(presetEnUS) }, presets: [UniverSheetsCorePreset({ container: 'app' })], }) univerAPI.createWorkbook({})
type Task = { workbookId: string instruction: string } async function runAgentTask(task: Task) { const state = await office.inspect(task.workbookId) const plan = await model.propose({ state, task }) await policy.check(plan) const result = await office.apply(plan) const report = await office.verify(result) return { result, report } }
The code is an implementation pattern, not a verbatim Univer API listing. Treat it as a product architecture guide and map each operation to documented Facade APIs and your own policy layer.
Menus, shortcuts, status, visual warnings and custom components belong in a UI-facing plugin.
Models, commands, mutations, services and Facade APIs should not depend on browser-only state.
Use headless paths for batch work, generation, verification and background jobs, while keeping policies around them.
@univerjs/* packages on the same release line.Intl.Segmenter support and your chosen build tool.It gives product teams a reusable office runtime that agents can operate and people can review.
That makes structured Office content a first-class part of your application architecture.
AI-native workspaces, planning tools, operational dashboards, structured reviews and domain-specific document workflows.
Sheets are most mature. Slides are active development. API stability, version alignment and OSS/Pro boundaries matter.
Prototype one end-to-end task with preset mode, then test whether a domain plugin earns its complexity.