# Compatibility

> The version matrix of Svelte, SvelteKit, Vite, Node and the toolchain the packages are tested with, read from the repository files; the JavaScript output target and the deprecation rule.

Page: https://svelte-lean.vercel.app/docs/compatibility · Markdown: https://svelte-lean.vercel.app/docs/compatibility.md · Index: https://svelte-lean.vercel.app/llms.txt

The versions this repository is built, tested and measured with, read from the package files and this checkout at build time.

## Version matrix

| Component | Declared range | Installed in this build | Where the range lives |
| --- | --- | --- | --- |
| Svelte Lean packages | 0.17.4 | — | packages/\*/package.json; core, primitives, styles, vite and table, published on npm at one version |
| Svelte Lean Query | 0.2.0 | — | packages/query/package.json; published on npm and versioned on its own, like @svelte-lean/query-codegen |
| Svelte | ^5.20.0 | 5.57.1 | peer dependency of @svelte-lean/table |
| SvelteKit | ^2.49.0 | 2.70.3 | root package.json; not a dependency of any package |
| @sveltejs/vite-plugin-svelte | ^6.2.1 | 6.2.4 | root package.json; used by the apps and fixtures |
| Vite | ^6.0.0 \|\| ^7.0.0 \|\| ^8.0.0 | 7.3.6 | peer dependency of @svelte-lean/vite |
| Node (consumers) | ^20.19.0 \|\| \>=22.12.0 | 22.23.4 | engines of @svelte-lean/vite (the range of Vite 7 and 8); the other packages declare none |
| Node (repository) | \>=22.18.0 | 22.23.4 | root package.json engines; .nvmrc for development |
| Yarn | yarn@4.9.1 | — | root package.json packageManager |
| TypeScript | ^5.9.3 | 5.9.3 | root package.json; the declaration files are emitted by it |
| Playwright | ^1.56.0 | 1.63.0 | root package.json |
| esbuild (size scripts) | ^0.25.0 | 0.25.12 | root package.json |

- `@svelte-lean/core` and `@svelte-lean/primitives` are plain ES modules, `@svelte-lean/styles` is CSS; `@svelte-lean/table` needs Svelte 5. Nothing depends on SvelteKit.
- Fixture builds record Node `v22.23.3`, Vite `7.3.6`, Svelte `5.57.1`.
- A nightly workflow builds and tests against the latest Svelte, Vite, Svelte Vite plugin and SvelteKit (and the next Svelte, allowed to fail). Vite 8 support was checked by hand (docs/compatibility.md).
- The table is a snapshot of what is tested, not a promise, until release stage 4.

`nightly.yml, in outline`

```bash
# .github/workflows/nightly.yml: drift from the tested versions is noticed within a day
yarn up svelte@latest vite@latest
yarn build:packages && yarn check && yarn test && yarn test:fixtures
```

## JavaScript output

- ESM only, strict `exports` maps, ES2022 output; no older target is provided.
- Declarations need TypeScript 5 with `moduleResolution` `bundler` or `node16`.

## Browser baseline

Platform features, Baseline status and fallbacks per primitive: [Browser support](https://svelte-lean.vercel.app/docs/browser-support.md). The table needs only widely available HTML, CSS and ES2022; its sticky header degrades to a normal header.

## Browsers tested

- Chromium only: Google Chrome locally (chromium 153.0.8010.12 on linux 6.12.107+deb13-cloud-amd64, 2026-10-05T07:11:03.593Z) and Playwright's Chromium in CI.
- Firefox and WebKit run nightly; no run is recorded yet (a stage 2 requirement). Where a browser lacks a feature, those runs assert the documented fallback.

## Deprecation

Public API: `data-slean*` attributes, `slean:*` events, `--slean-*` tokens, the `slean-table-` class prefix, package exports and the manifest schema. A rename needs a documented replacement, a development warning, a migration window and a major release to remove (ADR 0002). The packages are at `0.17.4`; the policy has not been exercised yet.

Sources: docs/compatibility.md, the `package.json` files and `.nvmrc`.
