# Headless Web SDK

- Human documentation: [https://docs.univer.ai/guides/docs/getting-started/node](https://docs.univer.ai/guides/docs/getting-started/node)

- Agent Markdown: [https://docs.univer.ai/guides/docs/getting-started/node.md](https://docs.univer.ai/guides/docs/getting-started/node.md)

- Requested language: `en-US`

- Content language: `en-US`

- Documentation version: `1.0.0-rc.0`

- Source: [docs/getting-started/node.mdx](https://github.com/dream-num/documentation/blob/dev/content/guides/docs/getting-started/node.mdx)

---

Univer has a isomorphic feature, which means it can run not only in the browser but also in a Node.js environment. You can develop data processing services based on Headless Univer to generate or modify documents on the server side and interact with Univer Docs through the Facade API.

> Interactive example: [Open the playground](/playground/docs/node-via-plugin)

Headless Univer is used similarly to the browser version. In preset mode, we provide an out-of-the-box preset package; in plugin mode, you only need to exclude plugins that involve UI.

### Preset Mode

#### Installation

#### npm

```bash
npm install @univerjs/preset-docs-node-core
```

#### pnpm

```bash
pnpm add @univerjs/preset-docs-node-core
```

#### yarn

```bash
yarn add @univerjs/preset-docs-node-core
```

#### bun

```bash
bun add @univerjs/preset-docs-node-core
```

#### Usage

```typescript
import { UniverDocsNodeCorePreset } from '@univerjs/preset-docs-node-core' // [!code ++]
import docsNodeCoreEnUS from '@univerjs/preset-docs-node-core/locales/en-US' // [!code ++]
import { createUniver, LocaleType, mergeLocales } from '@univerjs/presets'

async function run(): Promise<void> {
  const { univer, univerAPI } = createUniver({
    locale: LocaleType.EN_US,
    locales: {
      [LocaleType.EN_US]: mergeLocales(
        docsNodeCoreEnUS, // [!code ++]
      ),
    },
    presets: [
      UniverDocsNodeCorePreset(), // [!code ++]
    ],
  })

  // You can call any Facade API here for document processing
}

run()
```

### Plugin Mode

#### Installation

#### npm

```bash
npm install @univerjs/core @univerjs/engine-render @univerjs/engine-formula @univerjs/docs
```

#### pnpm

```bash
pnpm add @univerjs/core @univerjs/engine-render @univerjs/engine-formula @univerjs/docs
```

#### yarn

```bash
yarn add @univerjs/core @univerjs/engine-render @univerjs/engine-formula @univerjs/docs
```

#### bun

```bash
bun add @univerjs/core @univerjs/engine-render @univerjs/engine-formula @univerjs/docs
```

#### Usage

```typescript
import { LocaleType, Univer, UniverInstanceType } from '@univerjs/core'
import { UniverDocsPlugin } from '@univerjs/docs'
import { UniverFormulaEnginePlugin } from '@univerjs/engine-formula'
import { UniverRenderEnginePlugin } from '@univerjs/engine-render'

const univer = new Univer({
  locale: LocaleType.EN_US,
  locales: {
    [LocaleType.EN_US]: {},
  },
})

univer.registerPlugin(UniverRenderEnginePlugin)
univer.registerPlugin(UniverFormulaEnginePlugin)
univer.registerPlugin(UniverDocsPlugin)

univer.createUnit(UniverInstanceType.UNIVER_DOC, {})
```
