# daisyUI ships CSS from a Bun monorepo whose primary language is Svelte

> daisyUI presents itself as a Tailwind CSS component library, and the repository is a private Bun workspace that builds one CSS file. The README carries no install command, the CDN link resolves to a major version rather than a version, and the docs tooling reaches into a sibling repository that is not here.

**saadeghi/daisyui** — The most popular, free and open-source Tailwind CSS component library.

- Repository: https://github.com/saadeghi/daisyui
- Website: https://daisyui.com
- Stars: 42,475 · Forks: 1,691
- Language: Svelte
- License: MIT
- Published: 2026-08-08 · Updated: 2026-08-18 · Language: en
- Canonical page: https://hysenlabs.com/projects/saadeghi-daisyui

## The repository builds a CSS file, and the Svelte is the surrounding site

Start with the language, because it misleads. The primary language in this repository is Svelte, yet what npm publishes is CSS. The root manifest builds through packages/daisyui, one script bundles from packages/daisyui/functions/bundle.js, and another runs wallace-cli against packages/daisyui/daisyui.css. A stylesheet named after the project is the artifact everything else exists to produce.

That tells you where the Svelte lives. It is not the component library, it is the site and tooling around it: build:docs compiles packages/docs after the library, dev runs that same docs package, and play starts packages/playground. If you are evaluating daisyUI as a dependency, none of that Svelte reaches you. Its own description calls it the most popular, free and open-source component library for Tailwind CSS, and the LICENSE file is MIT.

## Three patch releases in two days make a floating version a real risk

Release numbering is where this repository stops looking calm. Two of the three most recent releases are patch bumps inside one minor line: v5.7.45 and v5.7.46 both dated 2026-09-24, then v5.7.47 on 2026-09-30. The last push to the default branch, master, was on 2026-09-24.

The consequence is not that anything is broken. It is that nothing is pinned on your behalf. The CDN reference in the README resolves to daisyui@5, a major only reference, so the newest 5.x at request time is what a browser or a proxy receives. For a library whose payload is a stylesheet, a patch release can change bytes behind an unchanged URL. Pin an exact version in whatever lockfile you control, and treat a cached daisyui@5 file as a moving target while you are debugging a style that should not have changed.

## The root manifest is private, so the published package is built deeper in the tree

The manifest at the repository root is not what you install. It is named daisyui-monorepo, carries private set to true, and declares one workspace glob, packages/*. The build script changes directory into packages/daisyui before doing any work, and the publish entry in that same file is cut off mid word in the checked out copy, so the npm publication is defined inside that subdirectory rather than at the top.

For a reader this is the first thing to get right. Cloning the repository and installing it gives you a workspace, not daisyUI. A bundler resolving daisyui from npm is consuming a differently built artifact from the one you would produce here, and the only file at the root that ties the two together is CHANGELOG.md. The default branch is master rather than main, so any script that clones the default branch has to name it.

## The README is a directory of links and names no install command

There is no install command anywhere in the README. What it contains is a badge block and a set of links: the site at daisyui.com, the component index at daisyui.com/components/, the install page at daisyui.com/docs/install/, a contributing guide under .github, a Discord at daisyui.com/discord/ and funding at opencollective.com/daisyui.

So the project's own answer to how to install is a website rather than a file in the tree. The two routes the README does point at are the npm package daisyui and a jsDelivr copy of the major version. The difference between them is who resolves versions: npm gives you a lockfile entry you control, while a CDN address hands you whatever the major currently points to. The README does not cover version pinning, upgrade notes or a migration path, which leaves CHANGELOG.md as the only file at the root that would carry one.

## Six agent plugin directories sit beside packages/ and skills/

Six directories at the repository root have nothing to do with bundling CSS. Alongside .github/ there are .agents/, .claude-plugin/, .codex-plugin/, .codex/, .cursor-plugin/ and .grok-plugin/, plus a plugin.json and a skills/ directory. That is a distribution channel aimed at coding agents, one manifest per host, versioned by the same commits as the component library.

What it means for an adopter is narrow but concrete. The npm package and the CDN stylesheet are not the whole distribution, so an agent that installs daisyUI through a plugin route can end up holding a different set of files than one that imports the package. Nothing in the README says which route is canonical or how the two are kept in step, and the plugin manifests are not covered by any install instruction the repository gives.

## The docs tooling reaches into ../daisyui-api, and lint skips the playground

The contributor scripts assume a checkout that is not quite this repository. The api script changes directory into ../daisyui-api, a sibling project outside the tree, and dev:localapi starts that server next to the docs with PUBLIC_DAISYUI_API_PATH pointed at a local address and port. Building the docs never touches that path, so a user is unaffected. Running the full local docs setup does, and a contributor without the sibling checkout hits a failure that no root file explains.

The remaining scripts are self contained and unusually specific. lint runs oxlint while ignoring packages/playground. check runs lint, test and lang:validate in parallel. Five separate lang:* scripts add, prune, report and validate translations inside the docs package. The cost to a user of the stylesheet is nothing. The cost to somebody opening a pull request is formatting, lint, tests and a translation validation pass before a reviewer sees the change.

## A dependency stylesheet against copy in component source

The other approach worth naming is shadcn/ui, which runs the comparison the daisyUI README never makes. daisyUI is consumed as a dependency, so styles arrive as a stylesheet and the class names in your markup are the API surface. shadcn/ui hands you component source to copy into your own repository, which leaves you owning and editing the code at the cost of maintaining no shared stylesheet of your own. One is a version to upgrade, the other is a directory you have taken over.

Neither is wrong, but they answer different questions about who maintains the visual layer and how much of it you can change without a fork. The honest limit is that daisyUI documents no migration between the two and publishes no comparison, so check the component inventory at daisyui.com/components/ and read CHANGELOG.md for what changed in the exact version you intend to pin. On a 5.7 line, the changelog is where the renames live.

## Conclusion

daisyUI suits teams already on Tailwind CSS who want styled components without maintaining a component tree in their own repository, and it does not suit a project that needs to vendor and edit component source. Verify first what you are actually installing: the npm entry daisyui is built from packages/daisyui inside a private Bun workspace, the CDN link resolves to a major rather than a version, and the root README documents no install command, so the install page and CHANGELOG.md are the only two places that can tell you what changed.

## FAQ

### How does daisyUI work?

daisyUI is a component library for Tailwind CSS, published to npm as daisyui and mirrored on a CDN at cdn.jsdelivr.net/npm/daisyui@5. The repository README holds no setup command and sends you to daisyui.com/docs/install/ for installation, so the mechanics live on the website rather than in the source tree.

### Is daisyUI free to use?

The repository is MIT licensed, and the project's own description calls it free and open-source. No paid tier appears in the README. Funding runs through Open Collective at opencollective.com/daisyui, and the README also links a Discord at daisyui.com/discord/.

### how to install daisyui

Start at daisyui.com/docs/install/, which is where the README points you. The other two routes it names are the npm package daisyui and the jsDelivr copy referenced only as daisyui@5. The repository itself contains no install command, and the file at the root that would carry one is CHANGELOG.md.

### how to use daisyui in react

The README does not describe a React specific setup of any kind. daisyUI is a CSS component library for Tailwind CSS, so the install page it links is the documented starting point, and the component index at daisyui.com/components/ is where the available classes are shown.

## Sources

- [Official documentation](https://daisyui.com)
- [Official README](https://github.com/saadeghi/daisyui#readme)
- [Project repository](https://github.com/saadeghi/daisyui)
- [Release notes](https://github.com/saadeghi/daisyui/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/saadeghi-daisyui
