Back to docs

Compatibility

What we verify on every push, versus what we treat as best-effort. If your stack lands in a row marked Manual step, the docs note tells you exactly what to do.

Legend

  • Tested in CIExercised on every CI run (unit, E2E smoke, registry validation, or per-component build).
  • Best effortWe expect it to work because the code is framework-agnostic, but it isn't in our test matrix yet.
  • Manual stepWorks, but requires a one-time setup step documented in the notes column.

Runtime

TargetVersionStatusNotes
Node.js (CLI users)≥ 18Tested in CIMinimum supported by `uniqueui-cli`. Use 20 LTS or 22 LTS for the smoothest experience.
Node.js (this repo contributors)24.xTested in CIMatches `package.json#engines` for monorepo work; mismatch is fine for end users of the CLI.
pnpm10.33.xTested in CIPinned via `packageManager`. Other PMs work for end users (`pnpm`, `npm`, `yarn`, `bun` all detected).

React stack

TargetVersionStatusNotes
React18 / 19Tested in CIThe docs site runs React 19; components are written to also work on 18.
React Server ComponentsManual stepUniqueUI components are client components by default (`"use client"`). Import them from a Server Component normally.
TypeScript≥ 5Tested in CIEach registry file is strict-mode safe. The CLI itself ships types.
Tailwind CSS v3≥ 3.4Tested in CIThe CLI merges component `tailwindConfig.theme.extend` directly into your `tailwind.config.{js,ts}`.
Tailwind CSS v4≥ 4.0Tested in CIThe CLI detects v4 (via `@tailwindcss/postcss`, a 4.x `tailwindcss` range, or `@import "tailwindcss"` in your globals.css) and appends a marker-wrapped `@theme` snippet to your `tailwind.css` path. Idempotent across re-runs and respected by `--dry-run`.
Motion (formerly Framer Motion)≥ 12Tested in CIComponents import from `motion/react`. The CLI installs `motion` for you.

Frameworks

TargetVersionStatusNotes
Next.js (App Router)15 – 16Tested in CIThe docs site itself runs Next 16. Components use `"use client"` where they touch state or motion.
Next.js (Pages Router)13+Best effortComponents are framework-agnostic React. No `next/*` imports in registry code.
Vite + React≥ 5Best effortAfter `npx uniqueui init`, edit `components.json` paths if your project uses `src/` or `app/` differently.
Remix / React Router 7≥ 2Best effortSame caveat as Vite. The CLI does not auto-detect framework yet.
Astro (React island)≥ 4Best effortWrap each UniqueUI component in `client:load` or `client:visible`.

CLI flows

TargetVersionStatusNotes
`uniqueui init` — Next.js (App Router)Tested in CISmoke-tested locally and in CI.
`uniqueui add <slug>` — every registry componentTested in CI`scripts/test-all-components.ts` installs each component into a fresh Next app and builds.
shadcn registry — `npx shadcn add .../r/<slug>.json`Tested in CI`pnpm test:e2e:shadcn` adds every item with the shadcn CLI and runs `next build`.
Offline / airgapped installManual stepPass `--url file://path/to/built/registry` to point the CLI at a local checkout.

Tailwind v4 — how it works

A v4 project's tokens live in CSS (@theme in your global stylesheet), not in a JS tailwind.config. When you run uniqueui add <component>, the CLI detects v4 (from @tailwindcss/postcss, a 4.x tailwindcss range, or @import "tailwindcss" in your CSS) and, if the component ships a tailwindCss snippet, appends it to the file at components.json#tailwind.css wrapped in /* uniqueui:start <slug> */ markers. Re-runs are idempotent; --dry-run prints the snippet without writing.

On a v3 project the same command takes the legacy path and merges theme.extend.animation / keyframes into your tailwind.config.{js,ts}. You don't pick a mode — the CLI does.

Found a gap? Open an issue at github.com/pras75299/uniqueui/issues with your stack versions and the error you hit.