# Svelte Lean > Browser-native UI for Svelte. Semantic HTML first, zero runtime where the browser owns the behavior, small shared behaviors where it does not. Two products: Svelte Lean Primitives (@svelte-lean/primitives) and Svelte Lean Table (@svelte-lean/table). Repository: https://github.com/say16/svelte-lean ## Site - [Browser-native UI for Svelte.](https://svelte-lean.vercel.app/): Svelte Lean is a Svelte-first, browser-native UI ecosystem: semantic HTML first, zero runtime where the browser owns the behavior, small shared behaviors where it does not. - [Proof](https://svelte-lean.vercel.app/proof): Live runtime inspector: primitives mounted on the page, registered behaviors, shared listeners counted two ways, loaded behavior modules, measured bundle sizes and browser capabilities. ## Docs - [Introduction](https://svelte-lean.vercel.app/docs): What Svelte Lean is and is not, who it is for, the two products, how behavior is shipped, what exists today and where to go next. - [Philosophy](https://svelte-lean.vercel.app/docs/philosophy): The core thesis, the three public messages, the seven Lean Rules with their engineering meaning, the mantra, and what the project does not claim. - [Installation](https://svelte-lean.vercel.app/docs/installation): Install commands for every package, the three consumption modes with working snippets, the manual register escape hatch, the stylesheets and the build report. - [Browser support](https://svelte-lean.vercel.app/docs/browser-support): The versioned support policy, the Baseline features each native path depends on, what happens outside the target, and the opt-in compatibility model. - [Compatibility](https://svelte-lean.vercel.app/docs/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. - [Native-first](https://svelte-lean.vercel.app/docs/architecture/native-first): Why the platform owns behavior first, which native features are relied on, and what "Svelte Lean owns nothing" means. - [Runtime tiers](https://svelte-lean.vercel.app/docs/architecture/runtime-tiers): The four runtime tiers with their budgets, how a primitive declares one, the classification of every primitive, and the ADR 0003 targets next to the measured values. - [DOM protocol](https://svelte-lean.vercel.app/docs/architecture/dom-protocol): The data-slean attributes, one attribute per option, platform pseudo-classes and ARIA state, slean:* events, the static-marker requirement and the deprecation rule. - [Build-time discovery](https://svelte-lean.vercel.app/docs/architecture/build-time-discovery): How @svelte-lean/vite scans static markers, injects register modules, writes the manifest and build report, and why there is no MutationObserver. - [Distribution](https://svelte-lean.vercel.app/docs/distribution): Take what you need, ship what you use: the three consumption modes, subpath exports, the five shipping invariants with their tests, the manifest and every escape hatch. - [Accessibility policy](https://svelte-lean.vercel.app/docs/architecture/accessibility): Accessibility as a runtime contract: APG conformance, what every contract specifies, focus and portal policy, the test layers and the test matrix with its gaps. - [What we do not do](https://svelte-lean.vercel.app/docs/what-we-dont-do): The architecture explained by its omissions: no JavaScript dialog, no listener per instance, no MutationObserver, no mirrored state, no Provider, no positioning engine, no forced virtualization, no hidden cost. - [Trade-offs](https://svelte-lean.vercel.app/docs/trade-offs): The costs of the native-first architecture: browser focus, a verbose protocol, author ids, complex widgets, build tooling, browser-defined semantics, and the preview status. - [Compared with plain HTML](https://svelte-lean.vercel.app/docs/why-not-html): For native primitives plain HTML is sometimes enough; what the package adds at Tier 0 and at Tier 1, with the measured cost of each. - [Compared with Bits UI](https://svelte-lean.vercel.app/docs/why-not-bits-ui): A component model and a platform-first DOM protocol compared without claims about the other library; when to choose which, and how they coexist. - [Compared with shadcn-svelte](https://svelte-lean.vercel.app/docs/why-not-shadcn-svelte): Source-owned components and a native-first runtime architecture are different layers; where the ownership line is and how they coexist. - [Compared with raw Svelte](https://svelte-lean.vercel.app/docs/why-not-raw-svelte): Raw Svelte can implement every primitive; what the package adds is a tested contract, shared runtime, discovery and styles, never a claim that Svelte is slow. ## Primitives - [Primitives](https://svelte-lean.vercel.app/primitives): Every primitive with its tier, measured behavior JavaScript, platform features and status, and how a primitive page is organised. - [Button](https://svelte-lean.vercel.app/primitives/button): Native