Docs Start
Compatibility
The versions this repository is developed, tested and measured with. The ranges are read from the package files and the installed versions from this checkout when the site is built; the table is a snapshot of what is tested, not a promise, until release stage 4.
On this page
Version matrix
| Component | Declared range | Installed in this build | Where the range lives |
|---|---|---|---|
| Svelte Lean packages | 0.2.0 | — | packages/*/package.json (preview, not published) |
| Svelte | ^5.0.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.3 | engines of @svelte-lean/vite (the range of Vite 7 and 8); the other packages declare none |
| Node (repository) | >=22.18.0 | 22.23.3 | 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, @svelte-lean/primitives and @svelte-lean/styles have no framework dependency: core and primitives are plain ES
modules, styles is CSS. @svelte-lean/table needs Svelte 5 (runes). Nothing depends
on SvelteKit. The fixture builds record their own environment next to every number: Node v22.23.3, Vite 7.3.6,
Svelte 5.57.1.
A nightly workflow installs the latest Svelte, Vite, Svelte Vite plugin and SvelteKit (and the
next Svelte, allowed to fail) and runs the build, checks, tests and fixtures against them, so
drift from the versions above is noticed within a day. The latest Vite is Vite 8; the range of @svelte-lean/vite includes it after a manual check of a SvelteKit application on
Vite 8.3.1 built from the packed tarballs, recorded in docs/compatibility.md.
# .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:fixturesJavaScript output
Packages are ESM-only with strict exports maps. Emitted JavaScript targets ES2022,
which is also the target of the size scripts. No transpilation to an older target is provided; a
consumer that needs one runs the packages through its own bundler. The declaration files need
TypeScript 5 with moduleResolution set to bundler or node16.
Browser baseline
The platform features each primitive depends on, their Baseline status and the fallback where a
feature is missing are documented in the contracts and summarized on Browser support, which quotes the contract sections at build
time. Svelte Lean Table uses no platform feature beyond widely available HTML, CSS and ES2022;
its optional sticky header degrades to a normal header where position: sticky is unsupported.
Browsers tested
Chromium only: Google Chrome locally, at the version recorded in bench.json (chromium 153.0.8010.53 on darwin
27.0.0, 2026-09-27T20:46:17.407Z) and in the audit, and Playwright's Chromium in CI. Firefox and WebKit projects are declared in the
playground's Playwright configuration; pull-request CI installs Chromium only and skips them, the
nightly workflow installs both browsers and runs them, failing when a project is skipped, and no run
is recorded in this repository yet. A recorded run is a stage 2 requirement. A primitive whose native
path depends on a feature a browser lacks is expected to take the documented fallback there, and those
runs assert that fallback, not the native path, until the feature ships.
Deprecation
The DOM protocol attributes (data-slean*), the events (slean:*), the
CSS tokens (--slean-*), the table's slean-table- class prefix, the
package exports and the manifest schema are public API. A rename needs a documented replacement,
a development warning, a migration window and a major release to remove (ADR 0002). The packages are 0.1.0-next and the policy has not been exercised yet; it applies from the first published
version.
Source of this page: docs/compatibility.md, the package.json files and .nvmrc in the repository.