# Compatibility

Which framework, runtime, and tooling versions Comvi i18n supports, with peer-dependency ranges for every @comvi/* package and the Node version each one requires.

Canonical: https://comvi.io/docs/i18n/compatibility

Every range comes from the published package's `peerDependencies` and `engines`. Versions outside these ranges are unsupported.

All `@comvi/*` packages share one release cadence and are versioned in lockstep, so install matching versions across the set.

The packages are **ESM-only**: `"type": "module"`, a single ES-module build, and no `require()` entry in the exports map. Consume them with `import` or any modern bundler (Vite, webpack 5, esbuild, Rollup, Rspack, Next). The CDN UMD build (`@comvi/core` on unpkg/jsDelivr) is a separate global bundle and stays loadable from a `<script>` tag.

## Framework bindings

| Package | Peer dependency | Supported range |
| --- | --- | --- |
| `@comvi/vue` | `vue` | `^3.0.0` |
| `@comvi/react` | `react` | `^18.0.0 \|\| ^19.0.0` |
| `@comvi/next` | `next` | `^15.0.0 \|\| ^16.0.0` |
| `@comvi/next` | `react` | `^18.2.0 \|\| ^19.0.0` |
| `@comvi/nuxt` | `nuxt` | `^3.0.0 \|\| ^4.0.0` |
| `@comvi/solid` | `solid-js` | `^1.8.0` |
| `@comvi/svelte` | `svelte` | `^5.3.0` |

`@comvi/react` needs React **18+** for the native `useSyncExternalStore`. `@comvi/next` needs the App Router (Next 15 or 16) and a React version with Server Components. `@comvi/svelte` is **Svelte 5-only**, with a floor of `5.3.0`: the `<T>` component wraps each rendered handler in a `<svelte:boundary>`, which landed in Svelte 5.3, so a throwing component degrades to its inner text instead of taking the tree down. `@comvi/nuxt` supports Nuxt 3 and Nuxt 4.

`@comvi/core` is a plain **dependency** of every binding rather than a peer, so installing `@comvi/react` installs the matching core.

## Core and plugins

| Package | Peer dependency | Supported range |
| --- | --- | --- |
| `@comvi/core` | none | no peer deps (framework-agnostic) |
| `@comvi/plugin-fetch-loader` | `@comvi/core` | the `@comvi/core` from the same release |
| `@comvi/plugin-locale-detector` | `@comvi/core` | the `@comvi/core` from the same release |
| `@comvi/plugin-in-context-editor` | `@comvi/core` | the `@comvi/core` from the same release |

The three plugin packages declare `@comvi/core` as a peer and nothing else, and they have no runtime dependencies of their own. Install core and plugins from the same release.

`@comvi/plugin-in-context-editor` bundles its own Vue 3 UI; Vue is a build-time dependency of that package, not something your app has to have.

## Build tooling

| Package | Peer dependency | Supported range | Node |
| --- | --- | --- | --- |
| `@comvi/cli` | none | none | `>=22` |
| `@comvi/vite-plugin` | `vite` | `^5.0.0 \|\| ^6.0.0 \|\| ^7.0.0 \|\| ^8.0.0` | `>=22` |

`@comvi/cli` and `@comvi/vite-plugin` bundle the same type emitter at build time, so they share the same Node floor. The Vite plugin works with the Vite version your framework bundles (Vue, SolidJS, Svelte/SvelteKit, Astro).

## Node.js

| Package | Requirement |
| --- | --- |
| `@comvi/core`, all framework bindings, all plugin packages | Node `>=20` |
| `@comvi/cli`, `@comvi/vite-plugin` | Node `>=22` |
| Building the `@comvi/*` packages from source | Node `>=22.0.0`, pnpm `>=9.0.0` |

The runtime floor is **Node 20**; Node 18 is out of range for the whole set.

The build tooling (`comvi pull` / `comvi push` / `comvi typegen`, and the Vite plugin that runs typegen for you) needs **Node 22 or newer** on the machine that runs the CLI or the dev server. The deployed runtime only needs Node 20.

## TypeScript

The published declarations need TypeScript **5.0+**: they use `const` type parameters and `export type *`, which older compilers cannot parse. Set `moduleResolution` to `bundler`, `node16` or `nodenext`: entries such as `@comvi/core/icu` and `@comvi/next/server` exist only in each package's `exports` map, which the older `node` resolution does not read. There is no TypeScript peer dependency; the generated `*.d.ts` files are plain ambient declarations. Typed keys are on [Type-check translation keys](/docs/i18n/type-safety).

## Read next

- [Quick start](/docs/i18n/quick-start): install and configure Comvi i18n in your framework.
- [Troubleshooting](/docs/i18n/troubleshooting): fixes for the errors you hit during setup.
