# Compatibility

These docs describe `@dcupl/core` 2.1 and `@dcupl/cli` 2.0. This page collects the requirements that change with a release; every other page links here instead of repeating them.

## Requirements

| Requirement | Supported                                                                                       |
| ----------- | ----------------------------------------------------------------------------------------------- |
| Node.js     | 20.19+ or 22.12+, or any later major (check with `node -v`)                                     |
| TypeScript  | 5.4 or later                                                                                    |
| Browsers    | Current evergreen browsers (Chrome, Edge, Firefox, Safari): the packages ship ES2022 JavaScript |

### Node.js

The SDK, the CLI and the tutorials' Vite setups are documented for Node.js **20.19+ on Node 20, or 22.12+ on Node 22**; later majors work too. On an older version the CLI installs but every command fails on startup, see [Node version too old](/cli/installation#node-version-too-old). The loader uses the global `fetch` that Node.js provides.

### TypeScript

The public types use `NoInfer`, which TypeScript added in 5.4. An older compiler can't resolve `NoInfer` in the `@dcupl/*` type declarations. The packages are tested with `"module": "NodeNext"` and `"strict": true`; see [TypeScript](/sdk/guides/typescript) for the setup.

### Browsers and servers

The packages are compiled to ES2022 and published as ES modules and CommonJS, so they work with `import` and `require()`, with any bundler, and in current evergreen browsers. Browsers without ES2022 support need your bundler to transpile `@dcupl/*` to an older target. For a page without a build step, the `@dcupl/bundle` script build is described under [Script tag](/sdk/setup-options#script-tag-no-build-step). The same packages run on a server (Node.js, SSR); see [Node.js server and SSR](/sdk/guides/deployment#nodejs-server-and-ssr).

## Use the same version for every @dcupl/\* package

Use the same version for every `@dcupl/*` package. The packages require each other in exactly their own version: `@dcupl/core` depends on exactly its own version of `@dcupl/common`, and `@dcupl/loader` and `@dcupl/connect` on exactly their own versions of `@dcupl/core` and `@dcupl/common`.

Install and update them together:

```bash
npm install @dcupl/core@<version> @dcupl/loader@<version>
```

If you list `@dcupl/common` yourself, pin it to the same version. [Common mistakes](/sdk/guides/common-mistakes#version-mismatch) shows the symptom of a mismatch. Changes between major versions are in the [migration guide](/sdk/guides/migration); for the CLI see [Upgrading from 1.3](/cli/installation#upgrading-from-13).

## Next steps

- [Quick start](/sdk/quick-start) — Install the SDK and run a first query
- [Setup options](/sdk/setup-options) — Console + Loader, your own files, or the SDK alone
- [TypeScript](/sdk/guides/typescript) — Types for models, lists and queries
- [CLI installation](/cli/installation) — Install the CLI and check the Node.js version
