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
Section titled “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
Section titled “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
Section titled “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
Section titled “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
Section titled “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.
Read next
Section titled “Read next”- Quick start: install and configure Comvi i18n in your framework.
- Troubleshooting: fixes for the errors you hit during setup.