sveltelean
Versionv0.2.0 GitHub

Version matrix

ComponentDeclared rangeInstalled in this buildWhere the range lives
Svelte Lean packages0.2.0—packages/*/package.json (preview, not published)
Svelte^5.0.05.57.1peer dependency of @svelte-lean/table
SvelteKit^2.49.02.70.3root package.json; not a dependency of any package
@sveltejs/vite-plugin-svelte^6.2.16.2.4root package.json; used by the apps and fixtures
Vite^6.0.0 || ^7.0.0 || ^8.0.07.3.6peer dependency of @svelte-lean/vite
Node (consumers)^20.19.0 || >=22.12.022.23.3engines of @svelte-lean/vite (the range of Vite 7 and 8); the other packages declare none
Node (repository)>=22.18.022.23.3root package.json engines; .nvmrc for development
Yarnyarn@4.9.1—root package.json packageManager
TypeScript^5.9.35.9.3root package.json; the declaration files are emitted by it
Playwright^1.56.01.63.0root package.json
esbuild (size scripts)^0.25.00.25.12root 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.

nightly.yml, in outline
# .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

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.