# Compared with shadcn-svelte

> Source-owned components and a native-first runtime architecture are different layers; where the ownership line is and how they coexist.

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

shadcn-svelte distributes source-owned components, Svelte Lean is a native-first runtime with optional source-owned styles, and the two can coexist in one application.

## Two layers

| Concern | shadcn-svelte | Svelte Lean |
| --- | --- | --- |
| What it is | A distribution model for components | A runtime architecture |
| What you own | The whole component, look and behavior, copied into the application | The styles, optionally ([Owned styles](https://svelte-lean.vercel.app/styling/owned-styles.md)) |
| Behavior code | Copied components built on Bits UI | A maintained package, updated through npm |
| Design system | Included | Tokens and per-primitive stylesheets |

## Where the line is

- Styles and recipes may be copied and edited; the behavior engine is not, so a focus or keyboard fix reaches every project through npm (ADR 0005, a decision about behavior code only).
- The `slean add` command is not built; copying a stylesheet is a file operation today.

## Coexistence

- Copied components and protocol markup can share a page without doubled listeners: Svelte Lean behaviors respond only to roots marked `data-slean`.
- One widget is either a copied component or protocol markup, not both.

## What this page does not claim

Nothing about shadcn-svelte's behavior, styling output or accessibility; its documentation is the source. Its interactive components are built on Bits UI, so their behavior JavaScript is the cost measured on [Compared with Bits UI](https://svelte-lean.vercel.app/docs/why-not-bits-ui.md#measured); copied files and styles are not measured.
